[LTP] [PATCH] cpuset_hotplug_test/cpuset_hotplug: Fix bug for obtaining task_cpus value in root_cpu_hotplug_test

xuyang2018.jy@fujitsu.com xuyang2018.jy@fujitsu.com
Mon Jun 21 10:56:32 CEST 2021


Hi Zou

It looks like this patch also miss to get task_cpus value 
intgeneric_cpu_hotplug_test when expect cpu value is EMPTY.

I can reproduce this easily by increasing the possible_cpus value in 
cmdline. Merge your patch, this case still fails as below:
cpuset_hotplug 1 TINFO: CPUs are numbered continuously starting at 0 (0-3)
cpuset_hotplug 1 TINFO: Nodes are numbered continuously starting at 0 (0-3)
/opt/ltp/testcases/bin/cpuset_funcs.sh: line 179:  5676 Killed 
         /bin/cat /dev/zero > /dev/null 2>&1
cpuset_hotplug 1 TPASS: Cpuset vs CPU hotplug test succeeded.
/opt/ltp/testcases/bin/cpuset_funcs.sh: line 179:  5714 Killed 
         /bin/cat /dev/zero > /dev/null 2>&1
cpuset_hotplug 3 TPASS: Cpuset vs CPU hotplug test succeeded.
/opt/ltp/testcases/bin/cpuset_funcs.sh: line 179:  5750 Killed 
         /bin/cat /dev/zero > /dev/null 2>&1
cpuset_hotplug 5 TPASS: Cpuset vs CPU hotplug test succeeded.
cpuset_hotplug 7 TFAIL: task's cpu present list isn't expected(Result: 
0-7, Expect: 0-3).
/opt/ltp/testcases/bin/cpuset_funcs.sh: line 179:  5795 Killed 
         /bin/cat /dev/zero > /dev/null 2>&1
/opt/ltp/testcases/bin/cpuset_funcs.sh: line 179:  5846 Killed 
         /bin/cat /dev/zero > /dev/null 2>&1
cpuset_hotplug 9 TPASS: Cpuset vs CPU hotplug test succeeded.
/opt/ltp/testcases/bin/cpuset_funcs.sh: line 179:  5894 Killed 
         /bin/cat /dev/zero > /dev/null 2>&1
cpuset_hotplug 11 TPASS: Cpuset vs CPU hotplug test succeeded.


Also since we have use present value, we shoud adjust output to match 
it. I modify this patch as below, What do you think about it?

--- 
a/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
+++ 
b/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
@@ -93,9 +93,7 @@ root_cpu_hotplug_test()

         root_cpus="`cat $CPUSET/cpuset.cpus`"

-       task_cpus="`cat /proc/$tst_pid/status | grep Cpus_allowed_list`"
-       task_cpus="`echo $task_cpus | sed -e 's/Cpus_allowed_list: //'`"
-
+       task_cpus="`cat /sys/devices/system/cpu/present`"
         check_result "$root_cpus" "$expect_cpus"
         ret=$?
         if [ $ret -eq 0 ]
@@ -103,7 +101,7 @@ root_cpu_hotplug_test()
                 check_result "$task_cpus" "$expect_task_cpus"
                 ret=$?
                 if [ $ret -ne 0 ]; then
-                       tst_resm TFAIL "task's allowed list isn't 
expected.(Result: $task_cpus, Expect: $expect_task_cpus)"
+                       tst_resm TFAIL "task's present list isn't 
expected.(Result: $task_cpus, Expect: $expect_task_cpus)"
                 fi
         else
                 tst_resm TFAIL "root group's cpus isn't 
expected(Result: $root_cpus, Expect: $expect_cpus)."
@@ -166,7 +164,6 @@ general_cpu_hotplug_test()
         sleep 1

         cpus="`cat $path/cpuset.cpus`"
-
         task_cpus="`cat /proc/$tst_pid/status | grep Cpus_allowed_list`"
         task_cpus="`echo $task_cpus | sed -e 's/Cpus_allowed_list: //'`"

@@ -186,6 +183,7 @@ general_cpu_hotplug_test()
                         /bin/kill -s SIGKILL $tst_pid
                         return 1
                 fi
+               task_cpus="`cat /sys/devices/system/cpu/present`"
         fi

         check_result "$cpus" "$expect_cpus"
@@ -194,7 +192,7 @@ general_cpu_hotplug_test()
                 check_result $task_cpus $expect_task_cpus
                 ret=$?
                 if [ $ret -ne 0 ]; then
-                       tst_resm TFAIL "task's cpu allowed list isn't 
expected(Result: $task_cpus, Expect: $expect_task_cpus)."
+                       tst_resm TFAIL "task's cpu present list isn't 
expected(Result: $task_cpus, Expect: $expect_task_cpus)."
                 fi
         else
                 if [ "$cpus" = "" ]; then


Best Regards
Yang XU
> Hi Samuel, Zou
>> Hi,
>>
>> A friendly reminder for the two patchs in:
>>
>> https://patchwork.ozlabs.org/project/ltp/patch/1617707717-63693-1-git-send-email-zou_wei@huawei.com/
>>
>>
>>
>> https://patchwork.ozlabs.org/project/ltp/patch/1617701249-62196-1-git-send-email-zou_wei@huawei.com/
>>
>>
>>
>> Can someone please review the patchs, comment, and if appropriate commit
>> them?
>>
>> Regards,
>> Zou Wei
>>
>> On 2021/4/6 17:27, Zou Wei wrote:
>>> --------------------------
>>>
>>> 1. The method of obtaining $task_cpus from root_cpu_hotplug_test is
>>> incorrect, because the value of Cpus_allowed_list is related
>>> to /sys/devices/system/cpu/possible and
>>> /sys/devices/system/cpu/isolated.
>>>
>>> 2. If isolcpus is configured in cmdline, the value of
>>> Cpus_allowed_list is equal to /sys/devices/system/cpu/possible minus
>>> /sys/devices/system/cpu/isolated. In this case, $task_cpus is
>>> inconsistent
>>> with $expect_task_cpus, test will be failed.
>>>
>>> 3. Need to change the method of obtaining $task_cpu
>>> from /sys/devices/system/cpu/present.
> Thanks for your patch, I also met the same problem when
> /sys/devices/system/cpu/possible is not equal
> to/sys/devices/system/cpu/possible/present .
> Cpus_allowed_list: 0-511
> but my present cpu is 0-103
>
> Then I use possible_cpus==104 in /etc/defaut/grub, cpu_hotplug case then
> pass.
>
> According to kernel documentation[1] and kernel fs/proc/array code[2](It
> just print cpu mask instead of present cpu), So using
> /sys/devices/system/cpu/present is right instead of getting cpu_allow_list.
>
> possible: cpus that have been allocated resources and can be
> brought online if they are present.
>
> present: cpus that have been identified as being present in
> the system.
>
>
> Reviewed-by: Yang Xu <xuyang2018.jy@fujitsu.com>
>
> [1]https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/ABI/testing/sysfs-devices-system-cpu
>
> [2]https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/fs/proc/array.c#n418
>
>
> ps:
> Also find a kernel documentation problem and have sent a patch to remove
> non-existed cpu-hotplug.txt in admin-guide/cputopology.rst.
>
>
> Best Regards
> Yang Xu
>>>
>>> 4. The description of cpu_present_mask:
>>> Bitmap of CPUs currently present in the system.
>>> Not all of them may be online. When physical hotplug is processed
>>> by the relevant subsystem (e.g ACPI) can change and new bit either be
>>> added or removed from the map depending on the event is
>>> hot-add/hot-remove. There are currently no locking rules as of now.
>>> Typical usage is to init topology during boot,
>>> at which time hotplug is disabled.
>>>
>>> Signed-off-by: Zou Wei <zou_wei@huawei.com>
>>> ---
>>> .../controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh | 3
>>> +--
>>> 1 file changed, 1 insertion(+), 2 deletions(-)
>>>
>>> diff --git
>>> a/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>
>>> b/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>
>>>
>>> index 155e536..2c6993a 100755
>>> ---
>>> a/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>
>>>
>>> +++
>>> b/testcases/kernel/controllers/cpuset/cpuset_hotplug_test/cpuset_hotplug_test.sh
>>>
>>>
>>> @@ -93,8 +93,7 @@ root_cpu_hotplug_test()
>>> root_cpus="`cat $CPUSET/cpuset.cpus`"
>>> - task_cpus="`cat /proc/$tst_pid/status | grep Cpus_allowed_list`"
>>> - task_cpus="`echo $task_cpus | sed -e 's/Cpus_allowed_list: //'`"
>>> + task_cpus="`cat /sys/devices/system/cpu/present`"
>>> check_result "$root_cpus" "$expect_cpus"
>>> ret=$?
>>>
>>


More information about the ltp mailing list