[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 11:53:29 CEST 2021


Hi Zou
Do you want to send a v2 patch? Or I modify this patch and push it directly.

Best Regards
Yang Xu
> Hi Xu,
>
> You'are right, I miss to get task_cpus value in general_cpu_hotplug_test().
> Thanks for your review and agree with your modification.
>
>
> On 2021/6/21 16:56, xuyang2018.jy@fujitsu.com wrote:
>> 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