• Paul Jackson's avatar
    cpuset sched_load_balance flag · 029190c5
    Paul Jackson authored
    Add a new per-cpuset flag called 'sched_load_balance'.
    
    When enabled in a cpuset (the default value) it tells the kernel scheduler
    that the scheduler should provide the normal load balancing on the CPUs in
    that cpuset, sometimes moving tasks from one CPU to a second CPU if the
    second CPU is less loaded and if that task is allowed to run there.
    
    When disabled (write "0" to the file) then it tells the kernel scheduler
    that load balancing is not required for the CPUs in that cpuset.
    
    Now even if this flag is disabled for some cpuset, the kernel may still
    have to load balance some or all the CPUs in that cpuset, if some
    overlapping cpuset has its sched_load_balance flag enabled.
    
    If there are some CPUs that are not in any cpuset whose sched_load_balance
    flag is enabled, the kernel scheduler will not load balance tasks to those
    CPUs.
    
    Moreover the kernel will partition the 'sched domains' (non-overlapping
    sets of CPUs over which load balancing is attempted) into the finest
    granularity partition that it can find, while still keeping any two CPUs
    that are in the same shed_load_balance enabled cpuset in the same element
    of the partition.
    
    This serves two purposes:
     1) It provides a mechanism for real time isolation of some CPUs, and
     2) it can be used to improve performance on systems with many CPUs
        by supporting configurations in which load balancing is not done
        across all CPUs at once, but rather only done in several smaller
        disjoint sets of CPUs.
    
    This mechanism replaces the earlier overloading of the per-cpuset
    flag 'cpu_exclusive', which overloading was removed in an earlier
    patch: cpuset-remove-sched-domain-hooks-from-cpusets
    
    See further the Documentation and comments in the code itself.
    
    [akpm@linux-foundation.org: don't be weird]
    Signed-off-by: default avatarPaul Jackson <pj@sgi.com>
    Acked-by: default avatarIngo Molnar <mingo@elte.hu>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    029190c5
cpuset.c 64.4 KB