From: Erich Focht <efocht@ess.nec.de>
To: Michael Hohnbaum <hohnbaum@us.ibm.com>
Cc: Ingo Molnar <mingo@elte.hu>, linux-kernel@vger.kernel.org
Subject: Re: [RFC] Simple NUMA scheduler patch
Date: Wed, 2 Oct 2002 19:54:39 +0200 [thread overview]
Message-ID: <200210021954.39358.efocht@ess.nec.de> (raw)
In-Reply-To: <1033516540.1209.144.camel@dyn9-47-17-164.beaverton.ibm.com>
Hi Michael,
On Wednesday 02 October 2002 01:55, Michael Hohnbaum wrote:
> Attached is a patch which provides a rudimentary NUMA scheduler.
> This patch basically does two things:
>
> * at exec() it finds the least loaded CPU to assign a task to;
> * at load_balance() (find_busiest_queue() actually) it favors
> cpus on the same node for taking tasks from.
it's a start. But I'm afraid a full solution will need much more code
(which is one of the problems with my NUMA scheduler patch).
The ideas behind your patch are:
1. Do initial load balancing, choose the least loaded CPU at the
beginning of exec().
2. Favor own node for stealing if any CPU on the own node is >25%
more loaded. Otherwise steal from another CPU if that one is >100%
more loaded.
1. is fine but should ideally aim for equal load among nodes. In
the current form I believe that the original load balancer does the
job right after fork() (which must have happened before exec()). As
you changed the original load balancer, you really need this initial
balancing.
2. is ok as it makes it harder to change the node. But again, you don't
aim at equally balanced nodes. And: if the task gets away from the node
on which it got its memory, it has no reason to ever come back to it.
For a final solution I believe that we will need targets like:
(a) equally balance nodes
(b) return tasks to the nodes where their memory is
(c) make nodes "sticky" for tasks which have their memory on them,
"repulsive" for other tasks.
But for a first attempt to get the scheduler more NUMA aware all this
might be just too much.
With simple benchmarks you will most probably beat the plain O(1)
scheduler on NUMA if you implement (a) in just 1. and 2. as your node
is already somewhat "sticky". In complicated benchmarks (like a kernel
compile ;-) it could already be too difficult to understand when the
load balancer did what and why...
It would be nice to see some numbers.
Best regards,
Erich
next prev parent reply other threads:[~2002-10-02 17:50 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <Pine.LNX.4.44.0209050905180.8086-100000@localhost.localdomain>
2002-10-01 23:55 ` Michael Hohnbaum
2002-10-02 13:11 ` Christoph Hellwig
2002-10-02 18:56 ` Matthew Dobson
2002-10-02 22:08 ` Michael Hohnbaum
2002-10-02 17:54 ` Erich Focht [this message]
2002-10-02 18:26 ` Michael Hohnbaum
2002-10-02 18:30 ` Michael Hohnbaum
2002-10-02 20:25 ` Martin J. Bligh
2002-10-05 22:32 ` Erich Focht
2002-10-07 23:37 ` Michael Hohnbaum
2002-10-14 17:19 ` Erich Focht
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=200210021954.39358.efocht@ess.nec.de \
--to=efocht@ess.nec.de \
--cc=hohnbaum@us.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--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
all inboxes | Powered by JetHome®