• Tejun Heo's avatar
    cgroup: Elide write-locking threadgroup_rwsem when updating csses on an empty subtree · 671c11f0
    Tejun Heo authored
    cgroup_update_dfl_csses() write-lock the threadgroup_rwsem as updating the
    csses can trigger process migrations. However, if the subtree doesn't
    contain any tasks, there aren't gonna be any cgroup migrations. This
    condition can be trivially detected by testing whether
    mgctx.preloaded_src_csets is empty. Elide write-locking threadgroup_rwsem if
    the subtree is empty.
    
    After this optimization, the usage pattern of creating a cgroup, enabling
    the necessary controllers, and then seeding it with CLONE_INTO_CGROUP and
    then removing the cgroup after it becomes empty doesn't need to write-lock
    threadgroup_rwsem at all.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Cc: Christian Brauner <brauner@kernel.org>
    Cc: Michal Koutný <mkoutny@suse.com>
    671c11f0
cgroup.c 176 KB