Re: Attempted summary of suspend-blockers LKML thread, take three

david
2010-08-19T23:10:10Z

[-- Attachment #1: Type: TEXT/PLAIN, Size: 2497 bytes --]

On Fri, 13 Aug 2010, Paul E. McKenney wrote:

> On Thu, Aug 12, 2010 at 08:52:22PM +0300, Felipe Contreras wrote:
>> On Thu, Aug 12, 2010 at 7:19 PM, Paul E. McKenney
>> <paulmck@linux.vnet.ibm.com> wrote:
>>> On Thu, Aug 12, 2010 at 03:17:29AM +0300, Felipe Contreras wrote:
>>>>> It seems to me that the same social-engineering approaches work in
>>>>> both cases.
>>>>
>>>> Yes, but if dynamic PM works as advertised, you don't need
>>>> opportunistic suspend.
>>>
>>> For dynamic power management to totally eliminate the need for something
>>> like suspend blockers, you are having to make some brave assumptions.
>>> Yes, dynamic power management is quite useful, but there is a big
>>> difference between something being useful and something doing everything
>>> for everyone.  You have not yet convinced me that dynamic power management
>>> will make it to the "doing everything for everyone" stage.
>>
>> As it has been explained before, there's a sweet-spot of idleness:
>> http://article.gmane.org/gmane.linux.kernel/995525
>> http://article.gmane.org/gmane.linux.ports.arm.omap/37982
>>
>> Do you agree that there's such a thing, and if so, do you agree that
>> the benefits of opportunistic suspend are much less once that point is
>> reached?
>
> I agree that there will be a sweet spot of idleness (though I would call
> it a "point of diminishing returns"), but only if all the applications
> are power-optimized. The advantage of opportunistic suspend is instead
> its tolerance of power-oblivious applications with minimal degradation
> of battery life.

sorry for the late response, the last week has been very hectic.

I just wanted to note that there is already a tool in the kernel to deal
with this, the timer jitter/fuzz control. This can be set by an
application for itself, or it can be set by some other process for an
application (I don't remember the details of all the ways this can be set)

This could be used in a way similar to how userspace wakelocks are set
today, if the power management process (that holds the wakelock and keep
sthe screen lit today) thinks the system should be awake, let the
jitter/fuzz be small, if that process thinks the system should probably be
asleep, set the jitter/fuzz to a larger value. If other things are running
anyway, the timers can fire and be serviced normally, otherwise the kernel
is free to delay the timer going off even for badly written processes.

David Lang

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]