Messages in this thread | | | Date | Thu, 16 Aug 2012 14:45:06 -0400 | From | Rik van Riel <> | Subject | Re: [discussion]sched: a rough proposal to enable power saving in scheduler |
| |
On 08/16/2012 10:01 AM, Arjan van de Ven wrote: >> *Power policy*: >> >> So how is power policy different? As Peter says,'pack more than spread >> more'. > > this is ... a dubiously general statement. > > for good power, at least on Intel cpus, you want to spread. Parallelism is efficient. > > the only thing you do not want to do, is wake cpus up for > tasks that only run extremely briefly (think "100 usec" or less). > > so maybe the balance interval is slightly different, or more, you don't balance tasks that > historically ran only for brief periods
This makes me think that maybe, in addition to tracking the idle residency time in the c-state governor, we may also want to track the average run times in the scheduler.
The c-state governor can call the scheduler code before putting a CPU to sleep, to indicate (1) the wakeup latency of the CPU, and (2) whether TLB and/or cache get invalidated.
At wakeup time, the scheduler can check whether the CPU the to-be-woken process ran on is in a deeper sleep state, and whether the typical run time for the process significantly exceeds the wakeup latency of the CPU it last ran on.
If the process typically runs for a short interval, and/or the process's CPU lost its cached state, it may be better to run the just-woken task on the CPU that is doing the waking up, instead of on the CPU where it used to run.
Does that make sense?
Am I overlooking any factors?
| |