Re: power-efficient scheduling design

From: David Lang
Date: Tue Jun 18 2013 - 14:50:08 EST


On Tue, 18 Jun 2013, Arjan van de Ven wrote:

On 6/14/2013 9:05 AM, Morten Rasmussen wrote:

Looking at the discussion it seems that people have slightly different
views, but most agree that the goal is an integrated scheduling,
frequency, and idle policy like you pointed out from the beginning.


... except that such a solution does not really work for Intel hardware.

The OS does not get to really pick the CPU "frequency" (never mind that
frequency is not what gets controlled), the hardware picks the frequency.
The OS can do some level of requests (best to think of this as a percentage
more than frequency) but what you actually get is more often than not
what you asked for.

so this sounds to me like the process for changing settings on this Intel hardware is a two phase process

something looks up what should be possible and says "switch to mode X"
after mode switch happens it then looks and finds "it's now in mode Y"

As long as there is some table to list the possible X modes to switch to, and some table to lookup the characteristics of the possible Y modes that you are in (and the list of modes you can change to may be different depending on what mode you are in), this doesn't seem to be a huge problem.

And if you can't tell what mode you are in, or what the expected performance characteristics are, then you can't possibly do any intellegant allocations.

If Intel is doing this for current CPUs, I expect that they will fix this before too much longer.

You can look in hindsight what kind of performance you got (from some basic counters in MSRs), and the scheduler can use that to account backwards to what some process got. But to predict what you will get in the future...... that's near impossible on any realistic system nowadays (and even more so in the future).

If you have no way of knowing how much processing power you should expect to have on each core in the near future, then you have no way of allocating processes appropriately between the cores.

It's bad enough trying to guess the needs of the processes, but if you also are reduced to guessing the capabilities of the cores, how can anything be made to work?

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/