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

Matthew Garrett
2010-08-10T14:11:07Z

On Tue, Aug 10, 2010 at 09:38:49AM +0100, Alan Cox wrote:
> > situation you call out can occur with manual suspend-to-RAM already:
> > the fact is that this is a design choice. You could indeed make a
>
> Losing data is a design choice ? The application set a timer, the OS
> shouldn't be ignoring it in that situation. It might want to delay it, it
> might want to warn the user its hogging things it shouldnt (powertop,
> battery usage monitors in Android etc)

So we should remove explicit system suspend from the kernel?

> > Hmmm... Exactly which part do you consider flawed? Let's take it
> > one sentence at a time. The devices that I know of that lack suspend
> > blockers also lack opportunistic suspend. Therefore, all applications on
> > such devices run as would an application that acquired a suspend blocker
> > when it started and did not release that suspend blocker until it exited.
> > Pretty straightforward.
>
> What do you mean by "opportunistic suspend", lots of systems drop into
> lowest power states whenever they can. "Suspend is different" is a bit of
> Android religion that I am dubious has any basis in reality as seen from
> the application end of the universe.
>
> You may also wish to review the earlier parts of the discussion where it
> was explicitly stated by several developers that they were using
> "suspend" type modes as power states already and not using suspend
> blockers. So it's being done, today on ARM and your statement is directly
> contradicting the code. Modern ARM processors and x86 MID devices can
> suspend and resume extremely fast (fast enough that the fact Linux x86
> rewriting all the SMP alternatives on suspend/resume is a measurable
> problem). If this same property doesn't end up on big PC boxes in time
> then I'd be very surprised. At that point the openoffice with suspend
> blockers or oracle with suspend blockers question becomes rather relevant.

There's a clear and absolute difference between system suspend and
entering the same hardware state from the idle loop. That difference is
that processes aren't scheduled until an explicit wakeup event occurs.
Android is entirely capable of entering the same low power state at idle
(it's done with a hardcoded idle loop on Qualcomm, cpuidle on omap), but
if you have more than 0 scheduling wakeups a second then your power draw
is going to be greater.

I agree that we should be targetting 0 wakeups per second. I don't agree
that it's realistic to insist that a use model that assumes imperfect
software is an invalid use model.

--
Matthew Garrett | mjg59@srcf.ucam.org