On Mon, 2011-12-12 at 20:21 +0100, Vincent Guittot wrote:
With a lot of small tasks, the softirq sched is nearly never called when no_hz is enable. In this case the load_balance is mainly called with the newly_idle mode which doesn't update the cpu_power. Add a next_update field which ensure a maximum update period when there is short activity
- if (local_group) {
if (idle != CPU_NEWLY_IDLE) {
if (balance_cpu != this_cpu) {
*balance = 0;
return;
}
update_group_power(sd, this_cpu);
} else if (time_after_eq(jiffies, group->sgp->next_update))
}update_group_power(sd, this_cpu);
Hmm, I would have expected it to be called from the NOHZ balancing path instead of the new_idle path. Your changelog fails to mentions any considerations on this..
Then again, its probably easier to keep update_group_power on this_cpu than to allow a remote update of your cpu_power.
So I'm not opposed to this patch, I'd just like a little extra clarification.