> On Thu, 5 Aug 2010, Paul E. McKenney wrote:
>
> >On Wed, Aug 04, 2010 at 10:18:40PM -0700,
david@lang.hm wrote:
> >>On Wed, 4 Aug 2010, Paul E. McKenney wrote:
> >>>On Wed, Aug 04, 2010 at 05:25:53PM -0700,
david@lang.hm wrote:
> >>>>On Wed, 4 Aug 2010, Paul E. McKenney wrote:
> >
> >[ . . . ]
> >
> >>>>>The music player is an interesting example. It would be idle most
> >>>>>of the time, given that audio output doesn't consume very much CPU.
> >>>>>So you would not want to suspend the system just because there were
> >>>>>no runnable processes. In contrast, allowing the music player to
> >>>>>hold a wake lock lets the system know that it would not be appropriate
> >>>>>to suspend.
> >>>>>
> >>>>>Or am I misunderstanding what you are proposing?
> >>>>
> >>>>the system would need to be idle for 'long enough' (configurable)
> >>>>before deciding to suspend, so as long as 'long enough' is longer
> >>>>than the music player is idle this would not be a problem.
> >>>
> >>>From a user standpoint, having the music player tell the system when
> >>>it is OK to suspend (e.g., when the user has paused playback) seems
> >>>a lot nicer than having configurable timeouts that need tweaking.
> >>
> >>every system that I have seen has a configurable "sleep if it's idle
> >>for this long" knob. On the iphone (work issue, I didn't want it)
> >>that I am currently using it can be configured from 1 min to 5 min.
> >>
> >>this is the sort of timeout I am talking about.
> >>
> >>with something in the multi-minute range for the 'do a full suspend'
> >>doing a wakeup every few 10s of seconds is perfectly safe.
> >
> >Ah, I was assuming -much- shorter "do full suspend" timeouts.
> >
> >My (possibly incorrect) assumption is based on the complaint that led
> >to my implementing RCU_FAST_NO_HZ. A (non-Android) embedded person was
> >quite annoyed (to put it mildly) at the earlier version of RCU because
> >it prevented the system from entering the power-saving dyntick-idle mode,
> >not for minutes, or even for seconds, but for a handful of -milliseconds-.
> >This was my first hint that "energy efficiency" means something completely
> >different in embedded systems than it does in the servers that I am
> >used to.
> >
> >But I must defer to the Android guys on this -- who knows, perhaps
> >multi-minute delays to enter full-suspend mode are OK for them.
>
> if the system was looking at all applications I would agree that the
> timeout should be much shorter.
>
> I have a couple devices that are able to have the display usable,
> even if the CPU is asleep (the OLPC and the Kindle, two different
> display technologies). With these devices I would like to see the
> suspend happen so fast that it can suspend between keystrokes.
>
> however, in the case of Android I think the timeouts have to end up
> being _much_ longer. Otherwise you have the problem of loading an
> untrusted book reader app on the device and the device suspends
> while you are reading the page.
>
> currently Android works around this by having a wakelock held
> whenever the display is on. This seems backwards to me, the display
> should be on because the system is not suspended, not the system is
> prevented from suspending because the display is on.
>
> Rather than having the display be on causing a wavelock to be held
> (with the code that is controls the display having a timeout for how
> long it leaves the display on), I would invert this and have the
> timeout be based on system activity, and when it decides the system
> is not active, turn off the display (along with other things as it
> suspends)