Messages in this thread | | | Date | Thu, 18 Jul 2013 14:35:31 +0200 | From | Peter Zijlstra <> | Subject | Re: [RFC] sched: Limit idle_balance() when it is being used too frequently |
| |
On Thu, Jul 18, 2013 at 05:45:46PM +0530, Srikar Dronamraju wrote: > We take locks if and only if we see imbalance and want to pull the > tasks. > However if the newly idle balance is not finding an imbalance then this > may not be an issue. > > Probably /proc/schedstats will give a better picture.
Right, so we're interested in move_tasks() calls that fail to 'deliver'. There's a few conditions in there that can cause us to not move a task, most of them not counted.
The few that are; are from can_mirgrate_task():
se.statistics.nr_failed_migrations_affine se.statistics.nr_failed_migrations_running se.statistics.nr_failed_migrations_hot
If we see significant increments on those we'll be taking locks.
The only one I can see a good way around is the hot one, we could ignore hotness in favour of newidle -- although I could see that being detrimental, we'll just have to try or so ;-)
_running shouldn't be much of a problem since we don't bother if nr_running <= 1. And _affine is out of our reach anyway.
| |