Re: suspend blockers & Android integration

From: david
Date: Sun Jun 06 2010 - 07:27:39 EST


On Sun, 6 Jun 2010, Felipe Contreras wrote:

2010/6/6 Arjan van de Ven <arjan@xxxxxxxxxxxxx>:
On Sat, 5 Jun 2010 14:26:14 -0700
Arve Hj?nnev?g <arve@xxxxxxxxxxx> wrote:
the kernel has a set of infrastructure already to help here (range
timers, with which you can wakeup-limit untrusted userspace crap),
timer slack for legacy background timers, etc etc.

Range timers allows the kernel to align different timers so they don't
each bring the cpu out of idle individually. They do not eliminate
timers or make individual timers fire less often.

you're incorrect.
With range timers you can control the rate at which timers fire just
fine.

I was wondering... Currently GLib user-space aligns itself to fire
burst of work at second boundaries without the need for IPC. But if
you want to align beyond one second you need multi-process alignment.
Say, one application says: wake me up between 30s and 1m. And the
other one says: wake me up between 10m and 20m. They could very well
align at some point if there was a central process keeping track of
all the timers.

Does the kernel provide something to solve that problem already?

yes,the kernel will let you say 'wake me in 10m, with a possible delay of up to 10 min' and get woken up between 10 and 20 min

this is what was mentioned earlier in the thread where you could take an app that tries to do something every .1 second and set the kernel to allow the tick to be delayed for up to 3.9 seconds, resulting in a wakeup every 4 seconds if the system is idle. This has the additional advantage that if the system is not idle and other things are causing ticks to take place anyway, this app would get more ticks up to the 10/second it's asking for)

David Lang
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/