Re: [PATCH 1/8] PM: Opportunistic suspend support.

James Bottomley
2010-05-26T17:33:22Z

On Wed, 2010-05-26 at 19:23 +0200, Peter Zijlstra wrote:
> On Wed, 2010-05-26 at 12:14 -0500, James Bottomley wrote:
> > On Wed, 2010-05-26 at 19:00 +0200, Peter Zijlstra wrote:
> > > On Wed, 2010-05-26 at 11:54 -0500, James Bottomley wrote:
> > > > Given that I'm in the latter category, I think suspend blockers is a
> > > > reasonable solution to an existing problem. I like Alan's idea of
> > > > restricting the API into a single user space program so we contain the
> > > > API contamination ... but realistically that's mostly the current
> > > > suspend blockers anyway.
> > >
> > > There's a _large_ difference between resource limits and these wonky
> > > suspend blockers.
> >
> > Well, you have policy and then you have implementation ... suspend
> > blockers just looks like an implementation to me. It seems to be
> > reasonably well suited in that regard ... after all, we kill processes
> > that exhaust memory for instance or cut off write privileges to those
> > that go over quota. Preventing power hungry processes from consuming
> > power by not allowing them to run until there's a wakeup event is fairly
> > gentle by those standards.
>
> The difference is that the limit should be per task.

How? You've got two different limits ... one the power the application
should be consuming when doing useful work for the user and the other is
the idle power. A badly constructed app may only be bad on idle
power ... how is the scheduler going to detect this, exactly? And what
do we do to applications we've detected are over consuming idle power?

> In this model a
> process that only runs a little still gets suspended.

That's why I think it looks like a reasonable solution. For this to
work, I agree you have to have all events the user is interested in wake
the system up ... but on most embedded platforms, they do.

> > > The main and most important one being that suspend is a global property
> > > and can/will hurt sensible tasks. It puts the whole task model upside
> > > down.
> >
> > OK, so I believe you have an android phone ... it already implements
> > this model ... specifically what are the problems on that platform this
> > causes?
>
> I do not have one, nor have I ever written an application for it (nor
> will I likely ever do that, since I detest Java), but I would expect an
> application to run when its runnable.

OK, so I've got one ... tell me what I should see and I'll try to
reproduce.

James