summaryrefslogtreecommitdiff
path: root/Documentation/admin-guide
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2026-09-30 13:37:11 +0100
committerMark Brown <broonie@kernel.org>2026-09-30 13:37:11 +0100
commit4fb7269358e7d4f3cdd7406db85c52053d7de148 (patch)
tree4bd99f72e63fa6b26afa396c4c1bd5d83fd0a6d7 /Documentation/admin-guide
parente818ae9edd692e46ec435cf60db5e74abf83e7ff (diff)
parent8deb0752fa76101ff2a0c5cdaf837d95ed0d0046 (diff)
downloadlinux-next-4fb7269358e7d4f3cdd7406db85c52053d7de148.tar.gz
linux-next-4fb7269358e7d4f3cdd7406db85c52053d7de148.zip
Merge branch 'for-next' of https://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git
Diffstat (limited to 'Documentation/admin-guide')
-rw-r--r--Documentation/admin-guide/cgroup-v2.rst62
1 files changed, 51 insertions, 11 deletions
diff --git a/Documentation/admin-guide/cgroup-v2.rst b/Documentation/admin-guide/cgroup-v2.rst
index 8d2603751c51..7fe950425216 100644
--- a/Documentation/admin-guide/cgroup-v2.rst
+++ b/Documentation/admin-guide/cgroup-v2.rst
@@ -2540,16 +2540,55 @@ Cpuset Interface Files
A read-only multiple values file which exists on all
cpuset-enabled cgroups.
- It lists the onlined CPUs that are actually granted to this
- cgroup by its parent. These CPUs are allowed to be used by
- tasks within the current cgroup.
+ It lists the active CPUs available to tasks in this cgroup.
- If "cpuset.cpus" is empty, the "cpuset.cpus.effective" file shows
- all the CPUs from the parent cgroup that can be available to
- be used by this cgroup. Otherwise, it should be a subset of
- "cpuset.cpus" unless none of the CPUs listed in "cpuset.cpus"
- can be granted. In this case, it will be treated just like an
- empty "cpuset.cpus".
+ For a cgroup that is not a valid partition root, an empty
+ "cpuset.cpus" makes "cpuset.cpus.effective" show all CPUs
+ available from the parent cgroup. Otherwise, it is a subset
+ of "cpuset.cpus" unless none of the requested CPUs can be
+ granted. In that case, it is treated like an empty
+ "cpuset.cpus".
+
+ For example::
+
+ P (cpuset.cpus.effective=0-3)
+ |
+ +-- C0 (member): cpuset.cpus=1-2
+ | cpuset.cpus.effective=1-2
+ +-- C1 (invalid root): cpuset.cpus=4-5
+ | cpuset.cpus.effective=0-3
+ \-- C2 (member): cpuset.cpus=<empty>
+ cpuset.cpus.effective=0-3
+
+ C0 gets CPUs 1-2 because they are available from P.
+ None of C1's requested CPUs 4-5 are available from P, so C1 uses P's
+ effective CPUs 0-3 instead.
+ C2 has an empty "cpuset.cpus" and therefore also uses P's effective
+ CPUs 0-3.
+
+ For a valid non-root partition root, "cpuset.cpus.effective" contains
+ the active CPUs from "cpuset.cpus.exclusive.effective" except
+ those granted to valid child partition roots. If
+ "cpuset.cpus.exclusive" is set to a value different from
+ "cpuset.cpus", the effective CPUs need not be a subset of
+ "cpuset.cpus".
+
+ For example, if CPUs 2-5 are allocated to P for exclusive use,
+ CPUs 2-4 are active, CPU 5 is offline, and none of CPUs 2-5 are
+ assigned to a valid child partition root::
+
+ top (root)
+ |
+ \-- P (valid partition root)
+ cpuset.cpus=0-3
+ cpuset.cpus.exclusive=2-5
+ cpuset.cpus.exclusive.effective=2-5
+ cpuset.cpus.effective=2-4
+
+ P has 2-5 in "cpuset.cpus.exclusive.effective", including the
+ offline CPU 5. CPU 5 is excluded from "cpuset.cpus.effective",
+ leaving 2-4. The result also shows that "cpuset.cpus.effective"
+ need not be a subset of "cpuset.cpus", which is 0-3.
Its value will be affected by CPU hotplug events.
@@ -2661,8 +2700,9 @@ Cpuset Interface Files
A read-only and root cgroup only multiple values file.
This file shows the set of all isolated CPUs used in existing
- isolated partitions. It will be empty if no isolated partition
- is created.
+ isolated partitions or isolated at boot time via the "domain"
+ flag of "isolcpus". The latter remain listed even after any
+ partition using them is released.
cpuset.cpus.partition
A read-write single value file which exists on non-root