From: "Chen, Kenneth W" <kenneth.w.chen@intel.com>
To: "'Christoph Lameter'" <clameter@sgi.com>
Cc: "Ingo Molnar" <mingo@elte.hu>,
"Siddha, Suresh B" <suresh.b.siddha@intel.com>, <akpm@osdl.org>,
<mm-commits@vger.kernel.org>, <nickpiggin@yahoo.com.au>,
<linux-kernel@vger.kernel.org>
Subject: RE: + sched-use-tasklet-to-call-balancing.patch added to -mm tree
Date: Sun, 12 Nov 2006 22:40:51 -0800 [thread overview]
Message-ID: <000201c706ee$a9992e80$a081030a@amr.corp.intel.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0611122137190.2708@schroedinger.engr.sgi.com>
Christoph Lameter wrote on Sunday, November 12, 2006 9:45 PM
> > (2) we should initiate load balance within a domain only from least
> > loaded group.
>
> This would mean we would have to determine the least loaded group first.
Well, find_busiest_group() scans every single bloody CPU in the system at
the highest sched_domain level. In fact, this function is capable to find
busiest group within a domain, it should be capable to determine least
loaded group for free because it already scanned every groups within a domain.
> > Part of all this problem probably stemmed from "load balance" is incapable
> > of performing l-d between arbitrary pair of CPUs, and tightly tied load scan
> > and actual l-d action. And on top of that l-d is really a pull operation
> > to current running CPU. All these limitations dictate that every CPU somehow
> > has to scan and pull. It is extremely inefficient on large system.
>
> Right. However, if we follow this line of thought then we will be
> redesigning the load balancing logic.
It won't be a bad idea to redesign it ;-)
There are number of other oddity beside what was identified in it's design:
(1) several sched_groups are statically declared and they will reside in
boot node. I would expect cross node memory access to be expansive.
Every cpu will access these data structure repeatedly.
static struct sched_group sched_group_cpus[NR_CPUS];
static struct sched_group sched_group_core[NR_CPUS];
static struct sched_group sched_group_phys[NR_CPUS];
(2) load balance staggering. Number of people pointed out that it is overly
done.
(3) The for_each_domain() loop in rebalance_tick() looks different from
idle_balance() where it will traverse entire sched domains even if lower
level domain succeeded in moving some tasks. I would expect we either
break out of the for loop like idle_balance(), or somehow update load
for current CPU so it gets accurate load value when doing l-d in the
next level. Currently, It is doing neither.
next prev parent reply other threads:[~2006-11-13 6:40 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <200611032205.kA3M5wmJ003178@shell0.pdx.osdl.net>
2006-11-07 7:32 ` + sched-use-tasklet-to-call-balancing.patch added to -mm tree Ingo Molnar
2006-11-07 17:44 ` Christoph Lameter
2006-11-07 17:31 ` Siddha, Suresh B
2006-11-07 17:55 ` Christoph Lameter
2006-11-07 17:50 ` Siddha, Suresh B
2006-11-07 18:18 ` Christoph Lameter
2006-11-07 19:17 ` Christoph Lameter
2006-11-07 20:31 ` Ingo Molnar
2006-11-07 20:59 ` Christoph Lameter
2006-11-07 21:35 ` Chen, Kenneth W
2006-11-07 21:49 ` Christoph Lameter
2006-11-10 6:18 ` Chen, Kenneth W
2006-11-10 18:50 ` Christoph Lameter
2006-11-10 21:38 ` Ingo Molnar
2006-11-11 1:01 ` Christoph Lameter
2006-11-11 2:05 ` Chen, Kenneth W
2006-11-11 2:51 ` Christoph Lameter
2006-11-13 4:03 ` Chen, Kenneth W
2006-11-13 5:44 ` Christoph Lameter
2006-11-13 6:40 ` Chen, Kenneth W [this message]
2006-11-14 1:06 ` [patch] sched domain: move sched group allocations to percpu area Siddha, Suresh B
2006-11-14 8:23 ` Ingo Molnar
2006-11-14 16:57 ` Christoph Lameter
2006-11-10 21:42 ` + sched-use-tasklet-to-call-balancing.patch added to -mm tree Ingo Molnar
2006-11-10 22:32 ` Siddha, Suresh B
2006-11-11 1:14 ` Christoph Lameter
2006-11-07 19:22 ` Christoph Lameter
2006-11-07 20:29 ` 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='000201c706ee$a9992e80$a081030a@amr.corp.intel.com' \
--to=kenneth.w.chen@intel.com \
--cc=akpm@osdl.org \
--cc=clameter@sgi.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=mm-commits@vger.kernel.org \
--cc=nickpiggin@yahoo.com.au \
--cc=suresh.b.siddha@intel.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 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.