sched: no need to aggregate task_weight
We only need to know the task_weight of the busiest rq - nothing to do if there are no tasks there. Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com> Cc: Mike Galbraith <efault@gmx.de> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
d3f40dbab9
commit
a25b5aca87
|
@ -433,12 +433,6 @@ struct cfs_rq {
|
||||||
* The sum of all runqueue weights within this span.
|
* The sum of all runqueue weights within this span.
|
||||||
*/
|
*/
|
||||||
unsigned long rq_weight;
|
unsigned long rq_weight;
|
||||||
|
|
||||||
/*
|
|
||||||
* Weight contributed by tasks; this is the part we can
|
|
||||||
* influence by moving tasks around.
|
|
||||||
*/
|
|
||||||
unsigned long task_weight;
|
|
||||||
} aggregate;
|
} aggregate;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
@ -1473,10 +1467,6 @@ static int task_hot(struct task_struct *p, u64 now, struct sched_domain *sd);
|
||||||
* rq_weight:
|
* rq_weight:
|
||||||
* Direct sum of all the cpu's their rq weight, e.g. A would get 3 while
|
* Direct sum of all the cpu's their rq weight, e.g. A would get 3 while
|
||||||
* B would get 2.
|
* B would get 2.
|
||||||
*
|
|
||||||
* task_weight:
|
|
||||||
* Part of the rq_weight contributed by tasks; all groups except B would
|
|
||||||
* get 1, B gets 2.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static inline struct aggregate_struct *
|
static inline struct aggregate_struct *
|
||||||
|
@ -1524,16 +1514,12 @@ static void
|
||||||
aggregate_group_weight(struct task_group *tg, int cpu, struct sched_domain *sd)
|
aggregate_group_weight(struct task_group *tg, int cpu, struct sched_domain *sd)
|
||||||
{
|
{
|
||||||
unsigned long rq_weight = 0;
|
unsigned long rq_weight = 0;
|
||||||
unsigned long task_weight = 0;
|
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for_each_cpu_mask(i, sd->span) {
|
for_each_cpu_mask(i, sd->span)
|
||||||
rq_weight += tg->cfs_rq[i]->load.weight;
|
rq_weight += tg->cfs_rq[i]->load.weight;
|
||||||
task_weight += tg->cfs_rq[i]->task_weight;
|
|
||||||
}
|
|
||||||
|
|
||||||
aggregate(tg, cpu)->rq_weight = rq_weight;
|
aggregate(tg, cpu)->rq_weight = rq_weight;
|
||||||
aggregate(tg, cpu)->task_weight = task_weight;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1427,7 +1427,7 @@ load_balance_fair(struct rq *this_rq, int this_cpu, struct rq *busiest,
|
||||||
/*
|
/*
|
||||||
* empty group
|
* empty group
|
||||||
*/
|
*/
|
||||||
if (!aggregate(tg, this_cpu)->task_weight)
|
if (!tg->cfs_rq[busiest_cpu]->task_weight)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
rem_load = rem_load_move * aggregate(tg, this_cpu)->rq_weight;
|
rem_load = rem_load_move * aggregate(tg, this_cpu)->rq_weight;
|
||||||
|
|
Loading…
Reference in New Issue