Ok, Here is the minimal patchset that I had promised after the last discussion. What it does have o The current patch enhances the meaning of exclusive cpusets by attaching them (exclusive cpusets) to sched domains o It does _not_ require any additional cpumask_t variable. It just parses the cpus_allowed of the parent/sibling/children cpusets for manipulating sched domains o All existing operations on non-/exclusive cpusets are preserved as-is. o The sched code has been modified to bring it upto 2.6.12-rc2-mm3 Usage o On setting the cpu_exclusive flag of a cpuset X, it creates two sched domains a. One, All cpus from X's parent cpuset that dont belong to any exclusive sibling cpuset of X b. Two, All cpus in X's cpus_allowed o On adding/deleting cpus to/from a exclusive cpuset X that has exclusive children, it creates two sched domains a. One, All cpus from X's parent cpuset that dont belong to any exclusive sibling cpuset of X b. Two, All cpus in X's cpus_allowed, after taking away any cpus that belong to exclusive child cpusets of X o On unsetting the cpu_exclusive flag of cpuset X or rmdir X, it creates a single sched domain, containing all cpus from X' parent cpuset that dont belong to any exclusive sibling of X and the cpus of X o It does _not_ modify the cpus_allowed variable of the parent as in the previous version. It relies on user space to move tasks to proper cpusets for complete isolation/exclusion o See function update_cpu_domains for more details What it does not have o It is still short on documentation o Does not have hotplug support as yet o Supports only x86 as of now o No thoughts on "memory domains" (Though I am not sure, who would use such a thing and what exactly are the requirements) Here is the increase in binary sizes for different values of CONFIG_NR_CPUS (32 and 255) kernel/cpuset.o.orig-32 16728 kernel/cpuset.o-v0.5-32 17176 (~2.7% increase) kernel/cpuset.o.orig-255 17916 kernel/cpuset.o-v0.5-255 19120 (~6.7% increase) The code changes are also minimal include/linux/init.h | 2 include/linux/sched.h | 1 kernel/cpuset.c | 73 +++++++++++++++++++++++++++------ kernel/sched.c | 109 +++++++++++++++++++++++++++++++++----------------- 4 files changed, 134 insertions(+), 51 deletions(-) -Dinakar