summaryrefslogtreecommitdiffstats
path: root/kernel/sys_ni.c
diff options
context:
space:
mode:
authorKen Chen <kenchen@google.com>2008-11-19 07:41:57 +0100
committerIngo Molnar <mingo@elte.hu>2008-11-19 18:39:37 +0100
commitec4e0e2fe018992d980910db901637c814575914 (patch)
tree58f5df8581387afc90774ee2d1923302ae209b3c /kernel/sys_ni.c
parentMerge branch 'linus' into sched/core (diff)
downloadlinux-ec4e0e2fe018992d980910db901637c814575914.tar.xz
linux-ec4e0e2fe018992d980910db901637c814575914.zip
sched: fix inconsistency when redistribute per-cpu tg->cfs_rq shares
Impact: make load-balancing more consistent In the update_shares() path leading to tg_shares_up(), the calculation of per-cpu cfs_rq shares is rather erratic even under moderate task wake up rate. The problem is that the per-cpu tg->cfs_rq load weight used in the sd_rq_weight aggregation and actual redistribution of the cfs_rq->shares are collected at different time. Under moderate system load, we've seen quite a bit of variation on the cfs_rq->shares and ultimately wildly affects sched_entity's load weight. This patch caches the result of initial per-cpu load weight when doing the sum calculation, and then pass it down to update_group_shares_cpu() for redistributing per-cpu cfs_rq shares. This allows consistent total cfs_rq shares across all CPUs. It also simplifies the rounding and zero load weight check. Signed-off-by: Ken Chen <kenchen@google.com> Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/sys_ni.c')
0 files changed, 0 insertions, 0 deletions