• Yafang Shao's avatar
    cgroup: Eliminate the need for cgroup_mutex in proc_cgroup_show() · 9067d900
    Yafang Shao authored
    The cgroup root_list is already RCU-safe. Therefore, we can replace the
    cgroup_mutex with the RCU read lock in some particular paths. This change
    will be particularly beneficial for frequent operations, such as
    `cat /proc/self/cgroup`, in a cgroup1-based container environment.
    
    I did stress tests with this change, as outlined below
    (with CONFIG_PROVE_RCU_LIST enabled):
    
    - Continuously mounting and unmounting named cgroups in some tasks,
      for example:
    
      cgrp_name=$1
      while true
      do
          mount -t cgroup -o none,name=$cgrp_name none /$cgrp_name
          umount /$cgrp_name
      done
    
    - Continuously triggering proc_cgroup_show() in some tasks concurrently,
      for example:
      while true; do cat /proc/self/cgroup > /dev/null; done
    
    They can ran successfully after implementing this change, with no RCU
    warnings in dmesg.
    Signed-off-by: default avatarYafang Shao <laoar.shao@gmail.com>
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    9067d900
cgroup.c 185 KB