• Waiman Long's avatar
    cgroup/cpuset: Enable memory migration for cpuset v2 · ee9707e8
    Waiman Long authored
    When a user changes cpuset.cpus, each task in a v2 cpuset will be moved
    to one of the new cpus if it is not there already. For memory, however,
    they won't be migrated to the new nodes when cpuset.mems changes. This is
    an inconsistency in behavior.
    
    In cpuset v1, there is a memory_migrate control file to enable such
    behavior by setting the CS_MEMORY_MIGRATE flag. Make it the default
    for cpuset v2 so that we have a consistent set of behavior for both
    cpus and memory.
    
    There is certainly a cost to make memory migration the default, but it
    is a one time cost that shouldn't really matter as long as cpuset.mems
    isn't changed frequenty.  Update the cgroup-v2.rst file to document the
    new behavior and recommend against changing cpuset.mems frequently.
    
    Since there won't be any concurrent access to the newly allocated cpuset
    structure in cpuset_css_alloc(), we can use the cheaper non-atomic
    __set_bit() instead of the more expensive atomic set_bit().
    Signed-off-by: default avatarWaiman Long <longman@redhat.com>
    Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    ee9707e8
cgroup-v2.rst 103 KB