power aware scheduler: remove the idle task ?
From: Daniel Lezcano
Date: Tue Dec 17 2013 - 04:53:24 EST
Hi all,
yes, another thread about the power aware scheduler :)
There have been a lot of discussions about the integrating the power
management into the scheduler but it seems we are still turning around
without agreeing on a consensus.
I would like to have some clarifications on one point.
Peter said in an email [1] :
"[...]
I think the scheduler simply wants to say: we expect to go idle for X
ns, we want a guaranteed wakeup latency of Y ns -- go do your thing.
[...]"
I share 100% this opinion but that may imply the following:
1. the scheduler should get some information from the cpuidle framework
in order to get the idle state it is supposed to go with its wakeup
latency. Some of the heuristics of the cpuidle governors should be
shared with the scheduler also in order to get how long it should stay idle.
2. the idle task should get some informations from the scheduler in
order to get the idle time but it could be woken up several times,
without preemption, thus it will need to recompute the expected idle
time on its own and depending on the idle state, it will need to update
the wakeup latency for the scheduler.
3. the pm qos is part of the constraint but also the idle balance
constraints should be added for more integration.
4. ... certainly a lot of more things related to sched fair class with
the scheduler.
So at the end, the resulting sub systems design is:
----------- ----------- ---------
| scheduler |<--->| idle task |<--->| cpuidle |
----------- ----------- ---------
^ ^
| |
-----------------------------------
IMHO, this creates cyclical dependencies between scheduler, cpuidle
and idle task instead of integrating idle policy into the scheduler.
So, I am wondering if the idle task removal is something the maintainers
had in mind when they talked about the power aware scheduler ?
The scheduler would gather all the idle informations and can modulate
them regarding the behavior of the tasks (no details for now) and just
tells the cpuidle framework to go the state fulfilling the constraints
passed as parameter.
If the power aware scheduler implies the removal of the idle task, we
could start by creating two paths in the scheduler, one with the old
scheduler code with the idle task and the other one experimental without
the idle task. Wouldn't make sense to investigate this first before
moving code around to make the scheduler power aware ?
It would be nice if the maintainers and the other people deeply involved
in the scheduler changes can share their opinion about that.
Thanks !
-- Daniel
[1] https://lkml.org/lkml/2013/11/11/353
--
<http://www.linaro.org/> Linaro.org â Open source software for ARM SoCs
Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog
--
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/