[PATCH 0/2] cgroup/cpuset: Task migration optimization

From: Waiman Long
Date: Thu Dec 08 2022 - 14:58:01 EST


It is found that workloads that generate a lot of task migrations
among different cpusets are severely throttled because of the use
of percpu rwsem in cpuset_rwsem. It is the same problem that led to
commit 3942a9bd7b58 ("locking, rcu, cgroup: Avoid synchronize_sched()
in __cgroup_procs_write()") and commit 6a010a49b63a ("cgroup: Make
!percpu threadgroup_rwsem operations optional").

The first patch in this series changes cpuset_can_attach() to use
the read lock instead of the write lock. The second patch allows
disabling of percpu reader fast path depending on the presence of
CGRP_ROOT_FAVOR_DYNMODS flag in the cgroup root.

Waiman Long (2):
cgroup/cpuset: Use cpuset_rwsem read lock in cpuset_can_attach()
cgroup/cpuset: Make percpu cpuset_rwsem operation depending on DYNMODS
state

kernel/cgroup/cpuset.c | 75 ++++++++++++++++++++++++++++++++----------
1 file changed, 58 insertions(+), 17 deletions(-)

--
2.31.1