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

From: david
Date: Thu Aug 19 2010 - 19:14:31 EST


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@xxxxxxxxxxxxxxxxxx> 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