Here's an attempt at dynamic sched domains aka isolated cpusets o This functionality is on top of CPUSETs and provides a way to completely isolate any set of CPUs dynamically. o There is a new cpu_isolated flag that allows users to convert an exclusive cpuset to an isolated one o The isolated CPUs are part of their own sched domain. This ensures that the rebalance code works within the domain, prevents overhead due to a cpu trying to pull tasks only to find that its cpus_allowed mask does not allow it to be pulled. However it does not kick existing processes off the isolated domain o There is very little code change in the scheduler sched domain code. Most of it is just splitting up of the arch_init_sched_domains code to be called dynamically instead of only at boot time. It has only one API which takes in the map of all cpus affected and the two new domains to be built rebuild_sched_domains(cpumask_t change_map, cpumask_t span1, cpumask_t span2) There are some things that may/will change o This has been tested only on x86 [8 way -> 4 way with HT]. Still needs work on other arch's o I didn't get a chance to see Nick Piggin's RCU sched domains code as yet, but I know there would be changes here because of that... o This does not support CPU hotplug as yet o Making a cpuset isolated manipulates its parent cpus_allowed mask. When viewed from userspace this is represented as follows [root@llm11 cpusets] cat cpus 0-3[4-7] This indicates that CPUs 4-7 are isolated and is/are part of some child cpuset/s Appreciate any feedback. Patch against linux-2.6.12-rc1-mm1. include/linux/init.h | 2 include/linux/sched.h | 1 kernel/cpuset.c | 141 ++++++++++++++++++++++++++++++++++++++++++++++++-- kernel/sched.c | 109 +++++++++++++++++++++++++------------- 4 files changed, 213 insertions(+), 40 deletions(-) -Dinakar