]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-client.git/commitdiff
cgroup/cpuset: Set isolated_cpus_updating only if isolated_cpus is changed
authorWaiman Long <longman@redhat.com>
Sat, 21 Feb 2026 18:54:14 +0000 (13:54 -0500)
committerTejun Heo <tj@kernel.org>
Mon, 23 Feb 2026 20:41:09 +0000 (10:41 -1000)
As cpuset is updating HK_TYPE_DOMAIN housekeeping mask when there is
a change in the set of isolated CPUs, making this change is now more
costly than before.  Right now, the isolated_cpus_updating flag can be
set even if there is no real change in isolated_cpus. Put in additional
checks to make sure that isolated_cpus_updating is set only if there
is a real change in isolated_cpus.

Reviewed-by: Chen Ridong <chenridong@huaweicloud.com>
Signed-off-by: Waiman Long <longman@redhat.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
kernel/cgroup/cpuset.c

index 165e2967025be95c3ca93ba814fc9de70ccd123d..edc67c6aa55363caaa2d67a39310ee752fed196d 100644 (file)
@@ -1180,11 +1180,15 @@ static void isolated_cpus_update(int old_prs, int new_prs, struct cpumask *xcpus
        WARN_ON_ONCE(old_prs == new_prs);
        lockdep_assert_held(&callback_lock);
        lockdep_assert_held(&cpuset_mutex);
-       if (new_prs == PRS_ISOLATED)
+       if (new_prs == PRS_ISOLATED) {
+               if (cpumask_subset(xcpus, isolated_cpus))
+                       return;
                cpumask_or(isolated_cpus, isolated_cpus, xcpus);
-       else
+       } else {
+               if (!cpumask_intersects(xcpus, isolated_cpus))
+                       return;
                cpumask_andnot(isolated_cpus, isolated_cpus, xcpus);
-
+       }
        isolated_cpus_updating = true;
 }