From: Guopeng Zhang <guopeng.zhang@linux.dev>
To: Waiman Long <longman@redhat.com>, Ridong Chen <ridong.chen@linux.dev>
Cc: "Tejun Heo" <tj@kernel.org>,
"Johannes Weiner" <hannes@cmpxchg.org>,
"Michal Koutný" <mkoutny@suse.com>,
"Jonathan Corbet" <corbet@lwn.net>,
"Shuah Khan" <skhan@linuxfoundation.org>,
cgroups@vger.kernel.org, linux-doc@vger.kernel.org,
linux-kernel@vger.kernel.org,
"Guopeng Zhang" <zhangguopeng@kylinos.cn>
Subject: [PATCH v2 2/2] docs: cgroup-v2: Describe effective CPUs of partition roots
Date: Tue, 22 Sep 2026 11:21:30 +0800 [thread overview]
Message-ID: <20260922032130.33777-3-guopeng.zhang@linux.dev> (raw)
In-Reply-To: <20260922032130.33777-1-guopeng.zhang@linux.dev>
From: Guopeng Zhang <zhangguopeng@kylinos.cn>
The cpuset.cpus.effective description says that the effective CPUs are
granted by the parent and are normally a subset of cpuset.cpus. This
does not always hold for a valid non-root partition root. Its effective
CPUs are the active CPUs in cpuset.cpus.exclusive.effective after CPUs
assigned to valid child partition roots are removed.
If cpuset.cpus.exclusive differs from cpuset.cpus, the effective CPUs
may therefore be outside cpuset.cpus. Remote partitions also do not
necessarily get their CPUs from their immediate parent.
Suggested-by: Ridong Chen <ridong.chen@linux.dev>
Signed-off-by: Guopeng Zhang <zhangguopeng@kylinos.cn>
---
Documentation/admin-guide/cgroup-v2.rst | 56 ++++++++++++++++++++-----
1 file changed, 46 insertions(+), 10 deletions(-)
diff --git a/Documentation/admin-guide/cgroup-v2.rst b/Documentation/admin-guide/cgroup-v2.rst
index 18a01ce4c334..d21bbae3312a 100644
--- a/Documentation/admin-guide/cgroup-v2.rst
+++ b/Documentation/admin-guide/cgroup-v2.rst
@@ -2505,16 +2505,52 @@ 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.
-
- 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".
+ It lists the active CPUs available to tasks in this cgroup.
+
+ 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 active, available, and not 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-5
+
+ P has 2-5 in "cpuset.cpus.effective" even though its
+ "cpuset.cpus" is 0-3.
Its value will be affected by CPU hotplug events.
--
2.43.0
next prev parent reply other threads:[~2026-09-22 3:22 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-22 3:21 [PATCH v2 0/2] docs: cgroup-v2: Correct cpuset CPU descriptions Guopeng Zhang
2026-09-22 3:21 ` [PATCH v2 1/2] docs: cgroup-v2: Describe boot-isolated CPUs in cpuset.cpus.isolated Guopeng Zhang
2026-09-22 3:21 ` Guopeng Zhang [this message]
2026-09-22 6:36 ` [PATCH v2 2/2] docs: cgroup-v2: Describe effective CPUs of partition roots Ridong Chen
2026-09-22 9:11 ` Guopeng Zhang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260922032130.33777-3-guopeng.zhang@linux.dev \
--to=guopeng.zhang@linux.dev \
--cc=cgroups@vger.kernel.org \
--cc=corbet@lwn.net \
--cc=hannes@cmpxchg.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=longman@redhat.com \
--cc=mkoutny@suse.com \
--cc=ridong.chen@linux.dev \
--cc=skhan@linuxfoundation.org \
--cc=tj@kernel.org \
--cc=zhangguopeng@kylinos.cn \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®