All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rik van Riel <riel@redhat.com>
To: mingo@kernel.org, hpa@zytor.com, linux-kernel@vger.kernel.org,
	torvalds@linux-foundation.org, peterz@infradead.org,
	tglx@linutronix.de
Subject: Re: [tip:sched/core] sched/numa: Use effective_load() to balance NUMA loads
Date: Wed, 09 Jul 2014 12:02:03 -0400	[thread overview]
Message-ID: <53BD677B.9050907@redhat.com> (raw)
In-Reply-To: <tip-6dc1a672ab15604947361dcd02e459effa09bad5@git.kernel.org>

On 07/05/2014 06:44 AM, tip-bot for Rik van Riel wrote:
> Commit-ID:  6dc1a672ab15604947361dcd02e459effa09bad5
> Gitweb:     http://git.kernel.org/tip/6dc1a672ab15604947361dcd02e459effa09bad5
> Author:     Rik van Riel <riel@redhat.com>
> AuthorDate: Mon, 23 Jun 2014 11:46:14 -0400
> Committer:  Ingo Molnar <mingo@kernel.org>
> CommitDate: Sat, 5 Jul 2014 11:17:35 +0200
> 
> sched/numa: Use effective_load() to balance NUMA loads
> 
> When CONFIG_FAIR_GROUP_SCHED is enabled, the load that a task places
> on a CPU is determined by the group the task is in. The active groups
> on the source and destination CPU can be different, resulting in a
> different load contribution by the same task at its source and at its
> destination. As a result, the load needs to be calculated separately
> for each CPU, instead of estimated once with task_h_load().
> 
> Getting this calculation right allows some workloads to converge,
> where previously the last thread could get stuck on another node,
> without being able to migrate to its final destination.

Self-NAK

This patch should be reverted.

It turns out that the tree I am working on was missing
changeset a003a25b227d59ded9197ced109517f037d01c27,
which makes weighted_cpuload and update_numa_stats use
p->se.avg.load_avg_contrib instead of p->se.load.weight.

This means using effective_load, which operates on the
load.weight is inappropriate.

Sorry for the noise.

> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
> index f287d0b..d6526d2 100644
> --- a/kernel/sched/fair.c
> +++ b/kernel/sched/fair.c
> @@ -1151,6 +1151,7 @@ static void task_numa_compare(struct task_numa_env *env,
>  	struct rq *src_rq = cpu_rq(env->src_cpu);
>  	struct rq *dst_rq = cpu_rq(env->dst_cpu);
>  	struct task_struct *cur;
> +	struct task_group *tg;
>  	long src_load, dst_load;
>  	long load;
>  	long imp = (groupimp > 0) ? groupimp : taskimp;
> @@ -1225,14 +1226,21 @@ static void task_numa_compare(struct task_numa_env *env,
>  	 * In the overloaded case, try and keep the load balanced.
>  	 */
>  balance:
> -	load = task_h_load(env->p);
> -	dst_load = env->dst_stats.load + load;
> -	src_load = env->src_stats.load - load;
> +	src_load = env->src_stats.load;
> +	dst_load = env->dst_stats.load;
> +
> +	/* Calculate the effect of moving env->p from src to dst. */
> +	load = env->p->se.load.weight;
> +	tg = task_group(env->p);
> +	src_load += effective_load(tg, env->src_cpu, -load, -load);
> +	dst_load += effective_load(tg, env->dst_cpu, load, load);
>  
>  	if (cur) {
> -		load = task_h_load(cur);
> -		dst_load -= load;
> -		src_load += load;
> +		/* Cur moves in the opposite direction. */
> +		load = cur->se.load.weight;
> +		tg = task_group(cur);
> +		src_load += effective_load(tg, env->src_cpu, load, load);
> +		dst_load += effective_load(tg, env->dst_cpu, -load, -load);
>  	}
>  
>  	if (load_too_imbalanced(src_load, dst_load, env))
> 


  reply	other threads:[~2014-07-09 16:03 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1403538378-31571-1-git-send-email-riel@redhat.com>
2014-06-23 15:46 ` [PATCH 2/7] sched,numa: move power adjustment into load_too_imbalanced riel
2014-07-05 10:44   ` [tip:sched/core] sched/numa: Move power adjustment into load_too_imbalanced() tip-bot for Rik van Riel
2014-06-23 15:46 ` [PATCH 3/7] sched,numa: use effective_load to balance NUMA loads riel
2014-07-05 10:44   ` [tip:sched/core] sched/numa: Use effective_load() " tip-bot for Rik van Riel
2014-07-09 16:02     ` Rik van Riel [this message]
2014-07-11 13:56       ` Peter Zijlstra
2014-06-23 15:46 ` [PATCH 4/7] sched,numa: simplify task_numa_compare riel
2014-07-05 10:45   ` [tip:sched/core] sched/numa: Simplify task_numa_compare() tip-bot for Rik van Riel
2014-06-23 15:46 ` [PATCH 5/7] sched,numa: examine a task move when examining a task swap riel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53BD677B.9050907@redhat.com \
    --to=riel@redhat.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.