Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a25b5aca authored by Peter Zijlstra's avatar Peter Zijlstra Committed by Ingo Molnar
Browse files

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: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>
Cc: Mike Galbraith <efault@gmx.de>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent d3f40dba
Loading
Loading
Loading
Loading
+1 −15
Original line number Original line Diff line number Diff line
@@ -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;
}
}


/*
/*
+1 −1
Original line number Original line Diff line number Diff line
@@ -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;