From: Dinakar Guniguntala <dino@in.ibm.com>
To: Paul Jackson <pj@sgi.com>
Cc: Simon.Derr@bull.net, nickpiggin@yahoo.com.au,
linux-kernel@vger.kernel.org, lse-tech@lists.sourceforge.net,
akpm@osdl.org, dipankar@in.ibm.com, colpatch@us.ibm.com
Subject: Re: [Lse-tech] Re: [RFC PATCH] Dynamic sched domains aka Isolated cpusets
Date: Wed, 20 Apr 2005 12:46:06 +0530 [thread overview]
Message-ID: <20050420071606.GA3931@in.ibm.com> (raw)
In-Reply-To: <20050419102348.118005c1.pj@sgi.com>
On Tue, Apr 19, 2005 at 10:23:48AM -0700, Paul Jackson wrote:
>
> How does this play out in your interface? Are you convinced that
> your invariants are preserved at all times, to all users? Can
> you present a convincing argument to others that this is so?
Let me give an example of how the current version of isolated cpusets can
be used and hopefully clarify my approach.
Consider a system with 8 cpus that needs to run a mix of workloads.
One set of applications have low latency requirements and another
set have a mixed workload. The administrator decides to allot
2 cpus to the low latency application and the rest to other apps.
To do this, he creates two cpusets
(All cpusets are considered to be exclusive for this discussion)
cpuset cpus isolated cpus_allowed isolated_map
top 0-7 1 0-7 0
top/lowlat 0-1 0 0-1 0
top/others 2-7 0 2-7 0
He now wants to partition the system along these lines as he wants
to isolate lowlat from the rest of the system to ensure that
a. No tasks from the parent cpuset (top_cpuset in this case)
use these cpus
b. load balance does not run across all cpus 0-7
He does this by
cd /mount-point/lowlat
/bin/echo 1 > cpu_isolated
Internally it takes the cpuset_sem, does some sanity checks and ensures
that these cpus are not visible to any other cpuset including its parent
(by removing these cpus from its parent's cpus_allowed mask and adding
them to its parent's isolated_map) and then calls sched code to partition
the system as
[0-1] [2-7]
The internal state of data structures are as follows
cpuset cpus isolated cpus_allowed isolated_map
top 0-7 1 2-7 0-1
top/lowlat 0-1 1 0-1 0
top/others 2-7 0 2-7 0
-------------------------------------------------------
The administrator now wants to further partition the "others" cpuset into
a cpu intensive application and a batch one
cpuset cpus isolated cpus_allowed isolated_map
top 0-7 1 2-7 0-1
top/lowlat 0-1 1 0-1 0
top/others 2-7 0 2-7 0
top/others/cint 2-3 0 2-3 0
top/others/batch 4-7 0 4-7 0
If now the administrator wants to isolate the cint cpuset...
cd /mount-point/others
/bin/echo 1 > cpu_isolated
(At this point no new sched domains are built
as there exists a sched domain which exactly
matches the cpus in the "others" cpuset.)
cd /mount-point/others/cint
/bin/echo 1 > cpu_isolated
At this point cpus from the "others" cpuset are also taken away from its
parent cpus_allowed mask and put into the parent's isolated_map. This means
that the parent cpus_allowed mask is empty. This would now result in
partitioning the "others" cpuset and builds two new sched domains as follows
[2-3] [4-7]
Notice that the cpus 0-1 having already been isolated are not affected
in this operation
cpuset cpus isolated cpus_allowed isolated_map
top 0-7 1 0 0-7
top/lowlat 0-1 1 0-1 0
top/others 2-7 1 4-7 2-3
top/others/cint 2-3 1 2-3 0
top/others/batch 4-7 0 4-7 0
-------------------------------------------------------
The admin now wants to run more applications in the cint cpuset
and decides to borrow a couple of cpus from the batch cpuset
He removes cpus 4-5 from batch and adds them to cint
cpuset cpus isolated cpus_allowed isolated_map
top 0-7 1 0 0-7
top/lowlat 0-1 1 0-1 0
top/others 2-7 1 6-7 2-5
top/others/cint 2-5 1 2-5 0
top/others/batch 6-7 0 6-7 0
As cint is already isolated, adding cpus causes it to rebuild all cpus
covered by its cpus_allowed and its parent's cpus_allowed, so the new
sched domains will look as follows
[2-5] [6-7]
cpus 0-1 are ofcourse still not affected
Similarly the admin can remove cpus from cint, which will
result in the domains being rebuilt to what was before
[2-3] [4-7]
-------------------------------------------------------
Hope this clears up my approach. Also note that we still need to take care
of the cpu hotplug case, where any random cpu can be removed and added back
and this code needs to take care of rebuilding the appropriate sched domains
-Dinakar
next prev parent reply other threads:[~2005-04-20 6:58 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-10-07 0:51 [RFC PATCH] scheduler: Dynamic sched_domains Matthew Dobson
2004-10-07 2:13 ` Nick Piggin
2004-10-07 17:01 ` Jesse Barnes
2004-10-08 5:55 ` [Lse-tech] " Takayoshi Kochi
2004-10-08 6:08 ` Nick Piggin
2004-10-08 16:43 ` Jesse Barnes
2004-10-07 21:58 ` Matthew Dobson
2004-10-08 0:22 ` Nick Piggin
2004-10-07 22:20 ` Matthew Dobson
2004-10-07 4:12 ` [ckrm-tech] " Marc E. Fiuczynski
2004-10-07 5:35 ` Paul Jackson
2004-10-07 22:06 ` Matthew Dobson
2004-10-07 9:32 ` Paul Jackson
2004-10-08 10:14 ` [Lse-tech] " Erich Focht
2004-10-08 10:40 ` Nick Piggin
2004-10-08 15:50 ` [ckrm-tech] " Hubertus Franke
2004-10-08 22:48 ` Matthew Dobson
2004-10-08 18:54 ` Matthew Dobson
2004-10-08 21:56 ` Peter Williams
2004-10-08 22:52 ` Matthew Dobson
2004-10-08 23:13 ` Erich Focht
2004-10-08 23:50 ` Nick Piggin
2004-10-10 12:25 ` Erich Focht
2004-10-08 22:51 ` Erich Focht
2004-10-09 1:05 ` Matthew Dobson
2004-10-10 12:45 ` Erich Focht
2004-10-12 22:45 ` Matthew Dobson
2004-10-08 18:45 ` Matthew Dobson
2005-04-18 20:26 ` [RFC PATCH] Dynamic sched domains aka Isolated cpusets Dinakar Guniguntala
2005-04-18 23:44 ` Nick Piggin
2005-04-19 8:00 ` Dinakar Guniguntala
2005-04-19 5:54 ` Paul Jackson
2005-04-19 6:19 ` Nick Piggin
2005-04-19 6:59 ` Paul Jackson
2005-04-19 7:09 ` Nick Piggin
2005-04-19 7:25 ` Paul Jackson
2005-04-19 7:28 ` Paul Jackson
2005-04-19 7:19 ` Paul Jackson
2005-04-19 7:57 ` Nick Piggin
2005-04-19 20:34 ` Paul Jackson
2005-04-23 23:26 ` Paul Jackson
2005-04-26 0:52 ` Matthew Dobson
2005-04-26 0:59 ` Paul Jackson
2005-04-19 9:52 ` Dinakar Guniguntala
2005-04-19 15:26 ` Paul Jackson
2005-04-20 7:37 ` Dinakar Guniguntala
2005-04-19 20:42 ` Paul Jackson
2005-04-19 8:12 ` Simon Derr
2005-04-19 16:19 ` Paul Jackson
2005-04-19 9:34 ` [Lse-tech] " Dinakar Guniguntala
2005-04-19 17:23 ` Paul Jackson
2005-04-20 7:16 ` Dinakar Guniguntala [this message]
2005-04-20 19:09 ` Paul Jackson
2005-04-21 16:27 ` Dinakar Guniguntala
2005-04-22 21:26 ` Paul Jackson
2005-04-23 7:24 ` Dinakar Guniguntala
2005-04-23 22:30 ` Paul Jackson
2005-04-25 11:53 ` Dinakar Guniguntala
2005-04-25 14:38 ` Paul Jackson
2005-04-21 17:31 ` [RFC PATCH] Dynamic sched domains aka Isolated cpusets (v0.2) Dinakar Guniguntala
2005-04-22 18:50 ` Paul Jackson
2005-04-22 21:37 ` Paul Jackson
2005-04-23 3:11 ` Paul Jackson
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=20050420071606.GA3931@in.ibm.com \
--to=dino@in.ibm.com \
--cc=Simon.Derr@bull.net \
--cc=akpm@osdl.org \
--cc=colpatch@us.ibm.com \
--cc=dipankar@in.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lse-tech@lists.sourceforge.net \
--cc=nickpiggin@yahoo.com.au \
--cc=pj@sgi.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