On Thu, Jan 16, 2014 at 12:03:13PM +0100, Daniel Lezcano wrote:Hi Alex,
it is a nice optimization attempt but I agree with Peter we should focus on
integrating cpuidle.
The question is "how do we integrate cpuidle ?"
IMHO, the main problem are the governors, especially the menu governor.
Yah.
The menu governor tries to predict the events per cpu. This approach which
gave us a nice benefit for the power saving may not fit well for the
scheduler.
So the way to start all this is I think to gradually share more and
more.
Start by pulling in the actual idle state; such that we can indeed
observe what the relative cost is of waking a cpu (against another), and
maybe even the predicted wakeup time.
Then pull in the various statistics gathering bits -- without improving
them.
Then improve the statistics; try and remove duplicate statistics -- if
there's such things, try and use the extra information the scheduler has
etc..
Then worry about the governors, or what's left of them.
In order to finish integrating the cpuidle framework in the scheduler, there
are pending questions about the impact in the current design.
Peter or Ingo, if you have time, could you have a look at the email I sent
previously [1] ?
I read it once, it didn't make sense at the time, I just read it again,
still doesn't make sense.
We need the idle task, since we need to DO something to go idle, the
scheduler needs to pick a task to go do that something. This is the idle
task.
You cannot get rid of that.
In fact, the 'doing' of that task is running much of the cpuidle code,
so by getting rid of it, there's nobody left to execute that code.
Also, since its already running that cpuidle stuff, integrating it more
closely with the scheduler will not in fact change much, it will still
run it.
Could of course be I'm not reading what you meant to write, if so, do
try again ;-)