mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-01 10:45:49 +00:00
cgroup/cpuset: Expose cpuset.cpus.isolated
The root-only cpuset.cpus.isolated control file shows the current set of isolated CPUs in isolated partitions. This control file is currently exposed only with the cgroup_debug boot command line option which also adds the ".__DEBUG__." prefix. This is actually a useful control file if users want to find out which CPUs are currently in an isolated state by the cpuset controller. Remove CFTYPE_DEBUG flag for this control file and make it available by default without any prefix. The test_cpuset_prs.sh test script and the cgroup-v2.rst documentation file are also updated accordingly. Minor code change is also made in test_cpuset_prs.sh to avoid false test failure when running on debug kernel. Signed-off-by: Waiman Long <longman@redhat.com> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
parent
2025956639
commit
877c737db9
@ -2316,6 +2316,13 @@ Cpuset Interface Files
|
||||
treated to have an implicit value of "cpuset.cpus" in the
|
||||
formation of local partition.
|
||||
|
||||
cpuset.cpus.isolated
|
||||
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.
|
||||
|
||||
cpuset.cpus.partition
|
||||
A read-write single value file which exists on non-root
|
||||
cpuset-enabled cgroups. This flag is owned by the parent cgroup
|
||||
|
@ -3974,7 +3974,7 @@ static struct cftype dfl_files[] = {
|
||||
.name = "cpus.isolated",
|
||||
.seq_show = cpuset_common_seq_show,
|
||||
.private = FILE_ISOLATED_CPULIST,
|
||||
.flags = CFTYPE_ONLY_ON_ROOT | CFTYPE_DEBUG,
|
||||
.flags = CFTYPE_ONLY_ON_ROOT,
|
||||
},
|
||||
|
||||
{ } /* terminate */
|
||||
|
@ -508,7 +508,7 @@ dump_states()
|
||||
XECPUS=$DIR/cpuset.cpus.exclusive.effective
|
||||
PRS=$DIR/cpuset.cpus.partition
|
||||
PCPUS=$DIR/.__DEBUG__.cpuset.cpus.subpartitions
|
||||
ISCPUS=$DIR/.__DEBUG__.cpuset.cpus.isolated
|
||||
ISCPUS=$DIR/cpuset.cpus.isolated
|
||||
[[ -e $CPUS ]] && echo "$CPUS: $(cat $CPUS)"
|
||||
[[ -e $XCPUS ]] && echo "$XCPUS: $(cat $XCPUS)"
|
||||
[[ -e $ECPUS ]] && echo "$ECPUS: $(cat $ECPUS)"
|
||||
@ -593,17 +593,17 @@ check_cgroup_states()
|
||||
|
||||
#
|
||||
# Get isolated (including offline) CPUs by looking at
|
||||
# /sys/kernel/debug/sched/domains and *cpuset.cpus.isolated control file,
|
||||
# /sys/kernel/debug/sched/domains and cpuset.cpus.isolated control file,
|
||||
# if available, and compare that with the expected value.
|
||||
#
|
||||
# Note that isolated CPUs from the sched/domains context include offline
|
||||
# CPUs as well as CPUs in non-isolated 1-CPU partition. Those CPUs may
|
||||
# not be included in the *cpuset.cpus.isolated control file which contains
|
||||
# not be included in the cpuset.cpus.isolated control file which contains
|
||||
# only CPUs in isolated partitions.
|
||||
#
|
||||
# $1 - expected isolated cpu list(s) <isolcpus1>{,<isolcpus2>}
|
||||
# <isolcpus1> - expected sched/domains value
|
||||
# <isolcpus2> - *cpuset.cpus.isolated value = <isolcpus1> if not defined
|
||||
# <isolcpus2> - cpuset.cpus.isolated value = <isolcpus1> if not defined
|
||||
#
|
||||
check_isolcpus()
|
||||
{
|
||||
@ -611,7 +611,7 @@ check_isolcpus()
|
||||
ISOLCPUS=
|
||||
LASTISOLCPU=
|
||||
SCHED_DOMAINS=/sys/kernel/debug/sched/domains
|
||||
ISCPUS=${CGROUP2}/.__DEBUG__.cpuset.cpus.isolated
|
||||
ISCPUS=${CGROUP2}/cpuset.cpus.isolated
|
||||
if [[ $EXPECT_VAL = . ]]
|
||||
then
|
||||
EXPECT_VAL=
|
||||
@ -692,14 +692,18 @@ test_fail()
|
||||
null_isolcpus_check()
|
||||
{
|
||||
[[ $VERBOSE -gt 0 ]] || return 0
|
||||
pause 0.02
|
||||
check_isolcpus "."
|
||||
if [[ $? -ne 0 ]]
|
||||
then
|
||||
echo "Unexpected isolated CPUs: $ISOLCPUS"
|
||||
dump_states
|
||||
exit 1
|
||||
fi
|
||||
# Retry a few times before printing error
|
||||
RETRY=0
|
||||
while [[ $RETRY -lt 5 ]]
|
||||
do
|
||||
pause 0.01
|
||||
check_isolcpus "."
|
||||
[[ $? -eq 0 ]] && return 0
|
||||
((RETRY++))
|
||||
done
|
||||
echo "Unexpected isolated CPUs: $ISOLCPUS"
|
||||
dump_states
|
||||
exit 1
|
||||
}
|
||||
|
||||
#
|
||||
@ -776,7 +780,7 @@ run_state_test()
|
||||
#
|
||||
NEWLIST=$(cat cpuset.cpus.effective)
|
||||
RETRY=0
|
||||
while [[ $NEWLIST != $CPULIST && $RETRY -lt 5 ]]
|
||||
while [[ $NEWLIST != $CPULIST && $RETRY -lt 8 ]]
|
||||
do
|
||||
# Wait a bit longer & recheck a few times
|
||||
pause 0.01
|
||||
|
Loading…
Reference in New Issue
Block a user