Skip to content

Commit 812c594

Browse files
Waiman-Longhtejun
authored andcommitted
cgroup/cpuset: Add test_cpuset_v1_hp.sh
Add a simple test to verify that an empty v1 cpuset will force its tasks to be moved to an ancestor node. It is based on the test case documented in commit 76bb5ab ("cpuset: break kernfs active protection in cpuset_write_resmask()"). Signed-off-by: Waiman Long <[email protected]> Signed-off-by: Tejun Heo <[email protected]>
1 parent 2125c00 commit 812c594

File tree

2 files changed

+47
-1
lines changed

2 files changed

+47
-1
lines changed

tools/testing/selftests/cgroup/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ CFLAGS += -Wall -pthread
44
all: ${HELPER_PROGS}
55

66
TEST_FILES := with_stress.sh
7-
TEST_PROGS := test_stress.sh test_cpuset_prs.sh
7+
TEST_PROGS := test_stress.sh test_cpuset_prs.sh test_cpuset_v1_hp.sh
88
TEST_GEN_FILES := wait_inotify
99
TEST_GEN_PROGS = test_memcontrol
1010
TEST_GEN_PROGS += test_kmem
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#!/bin/sh
2+
# SPDX-License-Identifier: GPL-2.0
3+
#
4+
# Test the special cpuset v1 hotplug case where a cpuset become empty of
5+
# CPUs will force migration of tasks out to an ancestor.
6+
#
7+
8+
skip_test() {
9+
echo "$1"
10+
echo "Test SKIPPED"
11+
exit 4 # ksft_skip
12+
}
13+
14+
[[ $(id -u) -eq 0 ]] || skip_test "Test must be run as root!"
15+
16+
# Find cpuset v1 mount point
17+
CPUSET=$(mount -t cgroup | grep cpuset | head -1 | awk -e '{print $3}')
18+
[[ -n "$CPUSET" ]] || skip_test "cpuset v1 mount point not found!"
19+
20+
#
21+
# Create a test cpuset, put a CPU and a task there and offline that CPU
22+
#
23+
TDIR=test$$
24+
[[ -d $CPUSET/$TDIR ]] || mkdir $CPUSET/$TDIR
25+
echo 1 > $CPUSET/$TDIR/cpuset.cpus
26+
echo 0 > $CPUSET/$TDIR/cpuset.mems
27+
sleep 10&
28+
TASK=$!
29+
echo $TASK > $CPUSET/$TDIR/tasks
30+
NEWCS=$(cat /proc/$TASK/cpuset)
31+
[[ $NEWCS != "/$TDIR" ]] && {
32+
echo "Unexpected cpuset $NEWCS, test FAILED!"
33+
exit 1
34+
}
35+
36+
echo 0 > /sys/devices/system/cpu/cpu1/online
37+
sleep 0.5
38+
echo 1 > /sys/devices/system/cpu/cpu1/online
39+
NEWCS=$(cat /proc/$TASK/cpuset)
40+
rmdir $CPUSET/$TDIR
41+
[[ $NEWCS != "/" ]] && {
42+
echo "cpuset $NEWCS, test FAILED!"
43+
exit 1
44+
}
45+
echo "Test PASSED"
46+
exit 0

0 commit comments

Comments
 (0)