diff options
author | Miaohe Lin <linmiaohe@huawei.com> | 2023-07-04 14:03:52 +0200 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2023-07-10 22:26:06 +0200 |
commit | 48f074565bb7eaa9ae502b2b2d423b1e50325e1b (patch) | |
tree | bf90c7270b0a94abf6901bcf354d747b32166018 /kernel/cgroup/cpuset.c | |
parent | cgroup/cpuset: simplify the percpu kthreads check in update_tasks_cpumask() (diff) | |
download | linux-48f074565bb7eaa9ae502b2b2d423b1e50325e1b.tar.xz linux-48f074565bb7eaa9ae502b2b2d423b1e50325e1b.zip |
cgroup/cpuset: avoid unneeded cpuset_mutex re-lock
cpuset_mutex unlock and lock pair is only needed when transferring tasks
out of empty cpuset. Avoid unneeded cpuset_mutex re-lock when !is_empty
to save cpu cycles.
Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
Reviewed-by: Waiman Long <longman@redhat.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'kernel/cgroup/cpuset.c')
-rw-r--r-- | kernel/cgroup/cpuset.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c index 601c40da8e03..e136269c152c 100644 --- a/kernel/cgroup/cpuset.c +++ b/kernel/cgroup/cpuset.c @@ -3521,17 +3521,16 @@ hotplug_update_tasks_legacy(struct cpuset *cs, is_empty = cpumask_empty(cs->cpus_allowed) || nodes_empty(cs->mems_allowed); - mutex_unlock(&cpuset_mutex); - /* * Move tasks to the nearest ancestor with execution resources, * This is full cgroup operation which will also call back into * cpuset. Should be done outside any lock. */ - if (is_empty) + if (is_empty) { + mutex_unlock(&cpuset_mutex); remove_tasks_in_empty_cpuset(cs); - - mutex_lock(&cpuset_mutex); + mutex_lock(&cpuset_mutex); + } } static void |