From: "Martin J. Bligh" <mbligh@aracnet.com>
To: Nick Piggin <piggin@cyberone.com.au>
Cc: Rusty Russell <rusty@rustcorp.com.au>, linux-kernel@vger.kernel.org
Subject: Re: New NUMA scheduler and hotplug CPU
Date: Mon, 26 Jan 2004 15:24:31 -0800 [thread overview]
Message-ID: <31860000.1075159471@flay> (raw)
In-Reply-To: <40159C41.9030707@cyberone.com.au>
>> Well isn't it a bad idea to have cpus in the data that are offline?
>> It'll throw off all your balancing calculations, won't it? You seemed
>> to be careful to do things like divide the total load on the node by
>> the number of CPUs on the node, and that'll get totally borked if you
>> have fake CPUs in there.
>
> I think it mostly does a good job at making sure to only take
> online cpus into account. If there are places where it doesn't
> then it shouldn't be too hard to fix.
It'd make the code a damned sight simpler and cleaner if you dropped
all that stuff, and updated the structures when you hotplugged a CPU,
which is really the only sensible way to do it anyway ...
For instance, if I remove cpu X, then bring back a new CPU on another node
(or in another HT sibling pair) as CPU X, then you'll need to update all
that stuff anyway. CPUs aren't fixed position in that map - the ordering
handed out is arbitrary.
>> To me, it'd make more sense to add the CPUs to the scheduler structures
>> as they get brought online. I can also imagine machines where you have
>> a massive (infinite?) variety of possible CPUs that could appear -
>> like an NUMA box where you could just plug arbitrary numbers of new
>> nodes in as you wanted.
>
> I guess so, but you'd still need NR_CPUS to be >= that arbitrary
> number.
Yup ... but you don't have to enumerate all possible positions that way.
See Linus' arguement re dynamic device numbers and ISCSI disks, etc.
Same thing applies.
> Well this would be the problem. I guess its quite possible that
> one doesn't know the topology of newly added CPUs before hand.
>
> Well OK, this would require a per architecture function to handle
> CPU hotplug. It could possibly just default to arch_init_sched_domains,
> and just completely reinitialise everything which would be the simplest.
Yeah, it's not trivially simple. But then neither is the rest of CPU
hotplug, to do it right ;-) Requiring CPU hotplug callback hooks does
seem to be the right way to interface with the sched code though ...
M.
next prev parent reply other threads:[~2004-01-26 23:24 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-01-25 23:50 New NUMA scheduler and hotplug CPU Rusty Russell
2004-01-26 8:26 ` Nick Piggin
2004-01-26 16:34 ` Martin J. Bligh
2004-01-26 23:01 ` Nick Piggin
2004-01-26 23:24 ` Martin J. Bligh [this message]
2004-01-26 23:40 ` Nick Piggin
2004-01-27 2:36 ` Rusty Russell
2004-01-27 4:38 ` Martin J. Bligh
2004-01-27 5:39 ` Nick Piggin
2004-01-27 7:19 ` Martin J. Bligh
2004-01-27 15:27 ` Martin J. Bligh
2004-01-28 0:23 ` Rusty Russell
2004-01-26 23:40 ` Andrew Theurer
2004-01-27 0:07 ` Nick Piggin
2004-01-27 2:21 ` Andrew Theurer
2004-01-27 2:40 ` Nick Piggin
2004-01-27 0:09 ` Martin J. Bligh
2004-01-27 2:19 ` Andrew Theurer
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=31860000.1075159471@flay \
--to=mbligh@aracnet.com \
--cc=linux-kernel@vger.kernel.org \
--cc=piggin@cyberone.com.au \
--cc=rusty@rustcorp.com.au \
/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.