From: Waiman Long <longman@redhat.com>
To: Tejun Heo <tj@kernel.org>, Li Zefan <lizefan@huawei.com>,
Johannes Weiner <hannes@cmpxchg.org>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>
Cc: cgroups@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-doc@vger.kernel.org, kernel-team@fb.com, pjt@google.com,
luto@amacapital.net, Mike Galbraith <efault@gmx.de>,
torvalds@linux-foundation.org, Roman Gushchin <guro@fb.com>,
Juri Lelli <juri.lelli@redhat.com>,
Patrick Bellasi <patrick.bellasi@arm.com>,
Tom Hromatka <tom.hromatka@oracle.com>,
Waiman Long <longman@redhat.com>
Subject: [PATCH v14 12/12] cpuset: Show descriptive text when reading cpuset.sched.partition
Date: Mon, 15 Oct 2018 16:29:37 -0400 [thread overview]
Message-ID: <1539635377-22335-13-git-send-email-longman@redhat.com> (raw)
In-Reply-To: <1539635377-22335-1-git-send-email-longman@redhat.com>
Currently, cpuset.sched.partition returns the values, 0, 1 or -1 on
read. A person who is not familiar with the partition code may not
understand what they mean.
In order to make cpuset.sched.partition more user-friendly, it will
now display the following descriptive text on read:
"normal" - A normal cpuset, not a partition root
"partition" - A partition root
"partition invalid" - An invalid partition root
Suggested-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Waiman Long <longman@redhat.com>
---
Documentation/admin-guide/cgroup-v2.rst | 12 ++++++------
kernel/cgroup/cpuset.c | 22 +++++++++++++++++++---
2 files changed, 25 insertions(+), 9 deletions(-)
diff --git a/Documentation/admin-guide/cgroup-v2.rst b/Documentation/admin-guide/cgroup-v2.rst
index 178cda473a26..d9cc79ceb9aa 100644
--- a/Documentation/admin-guide/cgroup-v2.rst
+++ b/Documentation/admin-guide/cgroup-v2.rst
@@ -1729,15 +1729,15 @@ Cpuset Interface Files
root to change. On read, the "cpuset.sched.partition" file
can show the following values.
- "0" Not a partition root
- "1" Partition root
- "-1" Erroneous partition root
+ "normal" - Normal cpuset, not a partition root
+ "partition" - Partition root
+ "partition invalid" - Invalid partition root
It is a partition root if the first 2 partition root conditions
above are true and at least one CPU from "cpuset.cpus" is
granted by the parent cgroup.
- A partition root can become an erroneous partition root if none
+ A partition root can become an invalid partition root if none
of CPUs requested in "cpuset.cpus" can be granted by the parent
cgroup or the parent cgroup is no longer a partition root.
In this case, it is not a real partition even though the
@@ -1745,11 +1745,11 @@ Cpuset Interface Files
still apply. All the tasks in the cgroup will be migrated to
the nearest ancestor partition.
- An erroneous partition root can be transitioned back to a real
+ An invalid partition root can be transitioned back to a real
partition root if at least one of the requested CPUs can now be
granted by its parent. In this case, the tasks will be migrated
back to the newly created partition. Clearing the partition
- flag of an erroneous partition root is always allowed even if
+ flag of an invalid partition root is always allowed even if
child cpusets are present.
diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c
index 34d47e43c98a..fe6d6366bfa7 100644
--- a/kernel/cgroup/cpuset.c
+++ b/kernel/cgroup/cpuset.c
@@ -2430,8 +2430,6 @@ static s64 cpuset_read_s64(struct cgroup_subsys_state *css, struct cftype *cft)
switch (type) {
case FILE_SCHED_RELAX_DOMAIN_LEVEL:
return cs->relax_domain_level;
- case FILE_PARTITION_ROOT:
- return cs->partition_root_state;
default:
BUG();
}
@@ -2440,6 +2438,24 @@ static s64 cpuset_read_s64(struct cgroup_subsys_state *css, struct cftype *cft)
return 0;
}
+static int sched_partition_show(struct seq_file *seq, void *v)
+{
+ struct cpuset *cs = css_cs(seq_css(seq));
+
+ switch (cs->partition_root_state) {
+ case PRS_ENABLED:
+ seq_puts(seq, "partition\n");
+ break;
+ case PRS_DISABLED:
+ seq_puts(seq, "normal\n");
+ break;
+ case PRS_ERROR:
+ seq_puts(seq, "partition invalid\n");
+ break;
+ }
+ return 0;
+}
+
/*
* for the common functions, 'private' gives the type of file
*/
@@ -2583,7 +2599,7 @@ static struct cftype dfl_files[] = {
{
.name = "sched.partition",
- .read_s64 = cpuset_read_s64,
+ .seq_show = sched_partition_show,
.write_s64 = cpuset_write_s64,
.private = FILE_PARTITION_ROOT,
.flags = CFTYPE_NOT_ON_ROOT,
--
2.18.0
next prev parent reply other threads:[~2018-10-15 20:30 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-15 20:29 [PATCH v14 00/12] Enable cpuset controller in default hierarchy Waiman Long
2018-10-15 20:29 ` [PATCH v14 01/12] cpuset: " Waiman Long
2018-10-15 20:29 ` [PATCH v14 02/12] cpuset: Define data structures to support scheduling partition Waiman Long
2018-10-15 20:29 ` [PATCH v14 03/12] cpuset: Simply allocation and freeing of cpumasks Waiman Long
2018-10-19 15:28 ` Tom Hromatka
2018-10-15 20:29 ` [PATCH v14 04/12] cpuset: Add new v2 cpuset.sched.partition flag Waiman Long
2018-11-06 11:35 ` Peter Zijlstra
2018-10-15 20:29 ` [PATCH v14 05/12] cpuset: Add an error state to cpuset.sched.partition Waiman Long
2018-11-06 11:37 ` Peter Zijlstra
2018-11-06 14:17 ` Waiman Long
2018-11-06 11:40 ` Peter Zijlstra
2018-11-07 23:13 ` Waiman Long
2018-11-06 11:40 ` Peter Zijlstra
2018-10-15 20:29 ` [PATCH v14 06/12] cpuset: Track cpusets that use parent's effective_cpus Waiman Long
2018-10-15 20:29 ` [PATCH v14 07/12] cpuset: Make CPU hotplug work with partition Waiman Long
2018-10-15 20:29 ` [PATCH v14 08/12] cpuset: Make generate_sched_domains() " Waiman Long
2018-10-15 20:29 ` [PATCH v14 09/12] cpuset: Expose cpus.effective and mems.effective on cgroup v2 root Waiman Long
2018-10-15 20:29 ` [PATCH v14 10/12] cpuset: Add documentation about the new "cpuset.sched.partition" flag Waiman Long
2018-11-06 11:50 ` Peter Zijlstra
2018-11-06 14:09 ` Waiman Long
2018-11-07 22:58 ` Waiman Long
2018-10-15 20:29 ` [PATCH v14 11/12] cpuset: Expose cpuset.cpus.subpartitions with cgroup_debug Waiman Long
2018-10-15 20:29 ` Waiman Long [this message]
2018-10-17 15:08 ` [PATCH v14 12/12] cpuset: Show descriptive text when reading cpuset.sched.partition Tejun Heo
2018-10-17 15:20 ` Waiman Long
2018-10-19 18:56 ` Waiman Long
2018-10-19 19:24 ` Tejun Heo
2018-10-19 19:32 ` Waiman Long
2018-11-02 14:34 ` Waiman Long
2018-11-06 11:52 ` Peter Zijlstra
2018-11-05 16:36 ` [PATCH v14 00/12] Enable cpuset controller in default hierarchy Tejun Heo
2018-11-05 16:57 ` Peter Zijlstra
2018-11-06 11:53 ` Peter Zijlstra
2018-11-06 11:55 ` Peter Zijlstra
2018-11-06 14:06 ` Waiman Long
[not found] ` <CAOS58YPye=7Ga+y-ujFsgHqo6vdVnjykmON1z+UjNQLvvM_g4w@mail.gmail.com>
2018-11-06 14:11 ` Tejun Heo
2018-11-07 21:32 ` Tejun Heo
2018-11-07 21:52 ` Waiman Long
2018-11-08 9:41 ` Peter Zijlstra
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=1539635377-22335-13-git-send-email-longman@redhat.com \
--to=longman@redhat.com \
--cc=cgroups@vger.kernel.org \
--cc=efault@gmx.de \
--cc=guro@fb.com \
--cc=hannes@cmpxchg.org \
--cc=juri.lelli@redhat.com \
--cc=kernel-team@fb.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lizefan@huawei.com \
--cc=luto@amacapital.net \
--cc=mingo@redhat.com \
--cc=patrick.bellasi@arm.com \
--cc=peterz@infradead.org \
--cc=pjt@google.com \
--cc=tj@kernel.org \
--cc=tom.hromatka@oracle.com \
--cc=torvalds@linux-foundation.org \
/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;
as well as URLs for NNTP newsgroup(s).