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 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.