From: Peter Zijlstra <peterz@infradead.org>
To: Lucas De Marchi <lucas.de.marchi@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>, linux-kernel@vger.kernel.org
Subject: Re: possible migration bug with hotplug cpu
Date: Wed, 08 Jul 2009 17:55:56 +0200 [thread overview]
Message-ID: <1247068556.9777.58.camel@twins> (raw)
In-Reply-To: <193b0f820907080848m5b72e2a9l52944ae3de785d90@mail.gmail.com>
On Wed, 2009-07-08 at 17:48 +0200, Lucas De Marchi wrote:
> I was doing some analysis with the number of migrations in my application and
> I think there's a bug in this accounting or even worse, in the migrations
> mechanism when used together with cpu hotplug.
>
> I turned off all CPUs except one using the hotplug mechanism, after what I
> launghed my application that has 8 threads. Before they finish they print the
> file /proc/<tid>/sched. I have only 1 online CPU and there are ~ 200
> migrations per thread. The function set_task_cpu is responsible for updating
> the migrations counter and is called by 9 other functions. With some tests I
> discovered that 95% of these migrations come from try_to_wake_up and the other
> 5% from pull_task and __migrate_task.
>
> Looking at try_to_wake_up:
>
> ....
> cpu = task_cpu(p);
> orig_cpu = cpu;
> this_cpu = smp_processor_id();
>
> #ifdef CONFIG_SMP
> if (unlikely(task_running(rq, p)))
> goto out_activate;
>
> cpu = p->sched_class->select_task_rq(p, sync); //<<<<===
> if (cpu != orig_cpu) { //<<<<===
> set_task_cpu(p, cpu);
> ....
>
> p->sched_class->select_task_rq(p, sync) is returning a different cpu of
> task_cpu(p) even if I have only 1 online CPU. In my tests this behavior is
> similar for rt and normal tasks. For RT, the only possible problem could be on
> find_lowest_rq, but I'm still rying to find out why. Since you have more
> experience with this code, if you could give it a look I'd appreciate.
>
> Is there any obscure reason why this behavior could be right?
If the task last ran on a now unplugged cpu this would be correct, is
this indeed what happens?
next prev parent reply other threads:[~2009-07-08 15:56 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-08 15:48 possible migration bug with hotplug cpu Lucas De Marchi
2009-07-08 15:55 ` Peter Zijlstra [this message]
2009-07-08 16:05 ` Lucas De Marchi
2009-07-08 16:39 ` Lucas De Marchi
2009-07-09 11:57 ` Lucas De Marchi
2009-07-09 12:24 ` Peter Zijlstra
2009-07-09 12:55 ` Lucas De Marchi
2009-07-09 13:15 ` Peter Zijlstra
2009-07-10 10:41 ` [tip:sched/urgent] sched: Reset sched stats on fork() tip-bot for Lucas De Marchi
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=1247068556.9777.58.camel@twins \
--to=peterz@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lucas.de.marchi@gmail.com \
--cc=mingo@elte.hu \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox