From: Linus Torvalds <torvalds@linux-foundation.org>
To: Dmitry Adamushko <dmitry.adamushko@gmail.com>
Cc: Vegard Nossum <vegard.nossum@gmail.com>,
Paul Menage <menage@google.com>,
Max Krasnyansky <maxk@qualcomm.com>, Paul Jackson <pj@sgi.com>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
miaox@cn.fujitsu.com, rostedt@goodmis.org,
Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@elte.hu>,
Linux Kernel <linux-kernel@vger.kernel.org>
Subject: Re: current linux-2.6.git: cpusets completely broken
Date: Sun, 13 Jul 2008 10:10:58 -0700 (PDT) [thread overview]
Message-ID: <alpine.LFD.1.10.0807130943530.2959@woody.linux-foundation.org> (raw)
In-Reply-To: <b647ffbd0807130253t32904430x5ca942783d01ce99@mail.gmail.com>
On Sun, 13 Jul 2008, Dmitry Adamushko wrote:
> And let me explain one last time why I opposed your 'cpu_active_map' approach.
And let me explain why you are totally off base.
> I do agree that there are likely ways to optimize the hotplug
> machinery [ .. deleted rambling .. ]
This has *NOTHING* to do with optimizing any hotplug machinery.
> The current way to synchronize with the load-balancer is to attach
> NULL domains [ .. deleted more ramblings .. ]
This has *NOTHING* to do even with cpusets and scheduler domains!
Until you can understand that, all your arguments are total and utter
CRAP.
So Dmitry - please follow along, and think this through.
This is a *fundamental* scheduler issue. It has nothing what-so-ever to do
with optimization, and it has nothing to do with cpusets. It's about the
fact that we migrate threads from one CPU to another - and we do that
whether cpusets are even enabled or not!
And anything that uses "cpu_active_map" to decide if the migration target
is alive is simply _buggy_.
See? Not "un-optimized". Not "cpusets". Just pure scheduling and hotplug
issues with taking a CPU down.
As long as you continue to only look at wake_idle() and scheduler domains,
you are missing all the *other* cases of migration. Like the one we do at
execve() time, or in balance_task.
The thing is, we should fix the top level code to never even _consider_ an
invalid CPU as a target, and that in turn should mean that all the other
code should be able to just totally ignore CPU hotplug events.
In other words, it vey fundamentally SHOULD NOT MATTER that somebody
happened to call "try_to_wake_up()" during the cpu unplug sequence. We
should fix the fundamental scheduler routines to simply make it impossible
for that to ever balance something back to a CPU that is going down.
And we shouldn't _care_ about what crazy things the cpusets code does.
See?
THAT is the reason for my patch. I think the cpusets callbacks are totally
insane, but I don't care. What I care about is that the scheduler got
confused just because those insane callbacks happened to make timing be
just subtle enough that (and I quote):
"try_to_wake_up() is called for one of these tasks from another CPU ->
the load-balancer (wake_idle()) picks up a "dead" CPU and places the
task on it. Then e.g. BUG_ON(rq->nr_running) detects this a bit later
-> oops."
IOW, we should never have had code that was that fragile in the first
place! It's totally INSANE to depend on complex and fragile code, when
we'd be much better off with simple code that always says: "I will not
migrate a task to a CPU that is going down".
Depending on complex (and conditional) scheduler domains data structures
is a *bug*. It's fragile, and it's a horrible design mistake.
Linus
next prev parent reply other threads:[~2008-07-13 17:11 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-11 19:07 Vegard Nossum
2008-07-11 19:36 ` Paul Menage
2008-07-11 19:43 ` Vegard Nossum
2008-07-11 20:07 ` Max Krasnyansky
2008-07-11 23:03 ` Dmitry Adamushko
2008-07-11 23:19 ` Max Krasnyansky
2008-07-11 23:53 ` Dmitry Adamushko
2008-07-12 3:17 ` Vegard Nossum
2008-07-12 3:28 ` Linus Torvalds
2008-07-12 10:00 ` Miao Xie
2008-07-12 11:05 ` Dmitry Adamushko
2008-07-12 19:15 ` Linus Torvalds
2008-07-12 10:04 ` Dmitry Adamushko
2008-07-12 19:19 ` Max Krasnyansky
2008-07-12 20:10 ` Linus Torvalds
2008-07-12 21:30 ` Linus Torvalds
2008-07-12 22:07 ` Linus Torvalds
2008-07-12 22:43 ` Max Krasnyansky
2008-07-12 23:01 ` Linus Torvalds
2008-07-12 23:00 ` Vegard Nossum
2008-07-12 23:04 ` Linus Torvalds
2008-07-12 23:19 ` Dmitry Adamushko
2008-07-12 23:25 ` Dmitry Adamushko
2008-07-12 23:05 ` Dmitry Adamushko
2008-07-12 23:17 ` Linus Torvalds
2008-07-13 9:53 ` Dmitry Adamushko
2008-07-13 17:10 ` Linus Torvalds [this message]
2008-07-13 17:42 ` Ingo Molnar
2008-07-13 17:46 ` Linus Torvalds
2008-07-13 18:13 ` Dmitry Adamushko
2008-07-13 18:19 ` Ingo Molnar
2008-07-13 18:38 ` Linus Torvalds
2008-07-13 18:20 ` Linus Torvalds
2008-07-12 23:25 ` Vegard Nossum
2008-07-13 15:29 ` Andi Kleen
2008-07-14 15:49 ` Mike Travis
2008-07-14 22:38 ` Dmitry Adamushko
2008-07-14 23:05 ` Linus Torvalds
2008-07-15 0:00 ` Dmitry Adamushko
2008-07-15 0:23 ` Linus Torvalds
2008-07-15 2:21 ` Dmitry Adamushko
2008-07-15 3:03 ` Max Krasnyansky
2008-07-15 4:12 ` Linus Torvalds
2008-07-15 8:32 ` Ingo Molnar
2008-07-15 8:42 ` Max Krasnyansky
2008-07-15 8:57 ` Ingo Molnar
2008-07-15 9:12 ` Max Krasnyansky
2008-07-16 6:35 ` Max Krasnyansky
2008-07-16 7:10 ` Peter Zijlstra
2008-07-16 17:01 ` Max Krasnyansky
2008-07-15 3:23 ` Steven Rostedt
2008-07-15 3:36 ` Linus Torvalds
2008-07-15 3:47 ` Steven Rostedt
2008-07-15 4:04 ` Linus Torvalds
2008-07-15 4:16 ` Steven Rostedt
2008-07-12 10:45 Dmitry Adamushko
2008-07-12 11:14 ` Dmitry Adamushko
2008-07-13 0:10 ` Dmitry Adamushko
2008-07-13 8:50 ` Vegard Nossum
2008-07-13 9:41 ` Ingo Molnar
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=alpine.LFD.1.10.0807130943530.2959@woody.linux-foundation.org \
--to=torvalds@linux-foundation.org \
--cc=a.p.zijlstra@chello.nl \
--cc=dmitry.adamushko@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=maxk@qualcomm.com \
--cc=menage@google.com \
--cc=miaox@cn.fujitsu.com \
--cc=mingo@elte.hu \
--cc=pj@sgi.com \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
--cc=vegard.nossum@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®