• Li Zefan's avatar
    cpuset: allow to move tasks to empty cpusets · 88fa523b
    Li Zefan authored
    Currently some cpuset behaviors are not friendly when cpuset is co-mounted
    with other cgroup controllers.
    
    Now with this patchset if cpuset is mounted with sane_behavior option,
    it behaves differently:
    
    - Tasks will be kept in empty cpusets when hotplug happens and take
      masks of ancestors with non-empty cpus/mems, instead of being moved to
      an ancestor.
    
    - A task can be moved into an empty cpuset, and again it takes masks of
      ancestors, so the user can drop a task into a newly created cgroup without
      having to do anything for it.
    
    As tasks can reside in empy cpusets, here're some rules:
    
    - They can be moved to another cpuset, regardless it's empty or not.
    
    - Though it takes masks from ancestors, it takes other configs from the
      empty cpuset.
    
    - If the ancestors' masks are changed, those tasks will also be updated
      to take new masks.
    
    v2: add documentation in include/linux/cgroup.h
    Signed-off-by: default avatarLi Zefan <lizefan@huawei.com>
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    88fa523b
cpuset.c 77 KB