From: Peter Zijlstra <peterz@infradead.org>
To: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Ingo Molnar <mingo@redhat.com>,
linux-kernel@vger.kernel.org,
Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>
Subject: Re: [PATCH v2 6/6] sched: prevent to re-select dst-cpu in load_balance()
Date: Mon, 22 Apr 2013 13:59:54 +0200 [thread overview]
Message-ID: <1366631994.4443.13.camel@laptop> (raw)
In-Reply-To: <1364277700-7509-7-git-send-email-iamjoonsoo.kim@lge.com>
On Tue, 2013-03-26 at 15:01 +0900, Joonsoo Kim wrote:
> Commit 88b8dac0 makes load_balance() consider other cpus in its group.
> But, in that, there is no code for preventing to re-select dst-cpu.
> So, same dst-cpu can be selected over and over.
>
> This patch add functionality to load_balance() in order to exclude
> cpu which is selected once. We prevent to re-select dst_cpu via
> env's cpus, so now, env's cpus is a candidate not only for src_cpus,
> but also dst_cpus.
Changelog forgets to mention that this removes the need for
lb_iterations.
> Cc: Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>
> Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>
>
> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
> index e3f09f4..6f238d2 100644
> --- a/kernel/sched/fair.c
> +++ b/kernel/sched/fair.c
> @@ -3898,12 +3898,14 @@ int can_migrate_task(struct task_struct *p, struct lb_env *env)
> if (!env->dst_grpmask || (env->flags & LBF_SOME_PINNED))
> return 0;
>
> - new_dst_cpu = cpumask_first_and(env->dst_grpmask,
> - tsk_cpus_allowed(p));
> - if (new_dst_cpu < nr_cpu_ids) {
> - env->flags |= LBF_SOME_PINNED;
> - env->new_dst_cpu = new_dst_cpu;
> - }
> + /* Prevent to re-select dst_cpu via env's cpus */
> + for_each_cpu_and(cpu, env->dst_grpmask, env->cpus)
> + if (cpumask_test_cpu(cpu, tsk_cpus_allowed(p))) {
> + env->flags |= LBF_SOME_PINNED;
> + env->new_dst_cpu = cpu;
> + break;
> + }
/me hands you a fresh bucket of curlies.. always use them on multi-line
single statements.
> return 0;
> }
>
> @@ -4989,7 +4991,6 @@ static int load_balance(int this_cpu, struct rq *this_rq,
> int *balance)
> {
> int ld_moved, cur_ld_moved, active_balance = 0;
> - int lb_iterations, max_lb_iterations;
> struct sched_group *group;
> struct rq *busiest;
> unsigned long flags;
> @@ -5009,11 +5010,6 @@ static int load_balance(int this_cpu, struct rq *this_rq,
> * other cpus in our group */
> if (idle == CPU_NEWLY_IDLE) {
> env.dst_grpmask = NULL;
> - /* we don't care max_lb_iterations in this case,
> - * in following patch, this will be removed */
> - max_lb_iterations = 0;
> - } else {
> - max_lb_iterations = cpumask_weight(env.dst_grpmask);
> }
And here you leave curlies around a single line single statement (the
only case we do leave them off) -- maybe collect them to replenish your
supply?
> cpumask_copy(cpus, cpu_active_mask);
>
next prev parent reply other threads:[~2013-04-22 11:59 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-26 6:01 [PATCH v2 0/6] correct load_balance() Joonsoo Kim
2013-03-26 6:01 ` [PATCH v2 1/6] sched: change position of resched_cpu() in load_balance() Joonsoo Kim
2013-03-26 6:01 ` [PATCH v2 2/6] sched: explicitly cpu_idle_type checking in rebalance_domains() Joonsoo Kim
2013-04-22 11:59 ` Peter Zijlstra
2013-03-26 6:01 ` [PATCH v2 3/6] sched: don't consider other cpus in our group in case of NEWLY_IDLE Joonsoo Kim
2013-04-22 11:59 ` Peter Zijlstra
2013-03-26 6:01 ` [PATCH v2 4/6] sched: move up affinity check to mitigate useless redoing overhead Joonsoo Kim
2013-03-26 6:01 ` [PATCH v2 5/6] sched: rename load_balance_tmpmask to load_balance_mask Joonsoo Kim
2013-03-26 6:01 ` [PATCH v2 6/6] sched: prevent to re-select dst-cpu in load_balance() Joonsoo Kim
2013-04-22 11:59 ` Peter Zijlstra [this message]
2013-04-22 8:01 ` [PATCH v2 0/6] correct load_balance() Joonsoo Kim
2013-04-22 12:01 ` Peter Zijlstra
2013-04-22 20:07 ` Davidlohr Bueso
2013-04-23 8:31 ` Joonsoo Kim
2013-04-23 8:50 ` Joonsoo Kim
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=1366631994.4443.13.camel@laptop \
--to=peterz@infradead.org \
--cc=iamjoonsoo.kim@lge.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=vatsa@linux.vnet.ibm.com \
/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.