diff mbox series

[v2] cpuset_memory_spread: set lowerlimit according to pagesize

Message ID 20230830064250.31904-1-zhanghongchen@loongson.cn
State Accepted
Headers show
Series [v2] cpuset_memory_spread: set lowerlimit according to pagesize | expand

Commit Message

Hongchen Zhang Aug. 30, 2023, 6:42 a.m. UTC
When I test the cpuset_memory_spread case,this case FAIL too often.
After dig into the code, I find out that the fowlloing things trigger
the FAIL:
1) random events,the probability is very small and can be ignored
2) get_meminfo which before send signal to test_pid
3) account_memsinfo before result_check

About 2) and 3), we can increase the value of lowerlimit to keep
the result as SUCCESS.

After discussing with Richard, we all agree to use the following
formula to calculate the lowerlimit:
lowerlimit(kb) = pagesize(byte) * 512 / 1024

Signed-off-by: Hongchen Zhang <zhanghongchen@loongson.cn>
---
 .../cpuset_memory_spread_testset.sh                    | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)


base-commit: 020f3985a5ca86c8bbece27eef8fb0315a10463e

Comments

Richard Palethorpe Aug. 30, 2023, 7:45 a.m. UTC | #1
Hello,

Hongchen Zhang <zhanghongchen@loongson.cn> writes:

> When I test the cpuset_memory_spread case,this case FAIL too often.
> After dig into the code, I find out that the fowlloing things trigger
> the FAIL:
> 1) random events,the probability is very small and can be ignored
> 2) get_meminfo which before send signal to test_pid
> 3) account_memsinfo before result_check
>
> About 2) and 3), we can increase the value of lowerlimit to keep
> the result as SUCCESS.
>
> After discussing with Richard, we all agree to use the following
> formula to calculate the lowerlimit:
> lowerlimit(kb) = pagesize(byte) * 512 / 1024
>
> Signed-off-by: Hongchen Zhang <zhanghongchen@loongson.cn>
> ---
>  .../cpuset_memory_spread_testset.sh                    | 10 +++++++++-
>  1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git
> a/testcases/kernel/controllers/cpuset/cpuset_memory_spread_test/cpuset_memory_spread_testset.sh
> b/testcases/kernel/controllers/cpuset/cpuset_memory_spread_test/cpuset_memory_spread_testset.sh
> index e2767ef05..f7230a4ea 100755
> --- a/testcases/kernel/controllers/cpuset/cpuset_memory_spread_test/cpuset_memory_spread_testset.sh
> +++ b/testcases/kernel/controllers/cpuset/cpuset_memory_spread_test/cpuset_memory_spread_testset.sh
> @@ -38,7 +38,15 @@ nr_mems=$N_NODES
>  # on which it is running. The other nodes' slab space has littler change.(less
>  # than 1000 kb).
>  upperlimit=10000
> -lowerlimit=2000
> +
> +# set lowerlimit according to pagesize
> +# pagesize(bytes)  | lowerlimit(kb)
> +# ------------------------------------
> +#  4096            | 2048
> +#  16384           | 8192
> +
> +PAGE_SIZE=`tst_getconf PAGESIZE`
> +lowerlimit=$((PAGE_SIZE * 512 / 1024))
>  
>  cpus_all="$(seq -s, 0 $((nr_cpus-1)))"
>  mems_all="$(seq -s, 0 $((nr_mems-1)))"
>
> base-commit: 020f3985a5ca86c8bbece27eef8fb0315a10463e

If we don't set the upperlimit what happens if we have 64Kb pages and
the lowerlimit > upperlimit?
Hongchen Zhang Aug. 30, 2023, 10:46 a.m. UTC | #2
Hi Richard,

On 2023/8/30 下午3:45, Richard Palethorpe wrote:
> Hello,
> 
> Hongchen Zhang <zhanghongchen@loongson.cn> writes:
> 
>> When I test the cpuset_memory_spread case,this case FAIL too often.
>> After dig into the code, I find out that the fowlloing things trigger
>> the FAIL:
>> 1) random events,the probability is very small and can be ignored
>> 2) get_meminfo which before send signal to test_pid
>> 3) account_memsinfo before result_check
>>
>> About 2) and 3), we can increase the value of lowerlimit to keep
>> the result as SUCCESS.
>>
>> After discussing with Richard, we all agree to use the following
>> formula to calculate the lowerlimit:
>> lowerlimit(kb) = pagesize(byte) * 512 / 1024
>>
>> Signed-off-by: Hongchen Zhang <zhanghongchen@loongson.cn>
>> ---
>>   .../cpuset_memory_spread_testset.sh                    | 10 +++++++++-
>>   1 file changed, 9 insertions(+), 1 deletion(-)
>>
>> diff --git
>> a/testcases/kernel/controllers/cpuset/cpuset_memory_spread_test/cpuset_memory_spread_testset.sh
>> b/testcases/kernel/controllers/cpuset/cpuset_memory_spread_test/cpuset_memory_spread_testset.sh
>> index e2767ef05..f7230a4ea 100755
>> --- a/testcases/kernel/controllers/cpuset/cpuset_memory_spread_test/cpuset_memory_spread_testset.sh
>> +++ b/testcases/kernel/controllers/cpuset/cpuset_memory_spread_test/cpuset_memory_spread_testset.sh
>> @@ -38,7 +38,15 @@ nr_mems=$N_NODES
>>   # on which it is running. The other nodes' slab space has littler change.(less
>>   # than 1000 kb).
>>   upperlimit=10000
>> -lowerlimit=2000
>> +
>> +# set lowerlimit according to pagesize
>> +# pagesize(bytes)  | lowerlimit(kb)
>> +# ------------------------------------
>> +#  4096            | 2048
>> +#  16384           | 8192
>> +
>> +PAGE_SIZE=`tst_getconf PAGESIZE`
>> +lowerlimit=$((PAGE_SIZE * 512 / 1024))
>>   
>>   cpus_all="$(seq -s, 0 $((nr_cpus-1)))"
>>   mems_all="$(seq -s, 0 $((nr_mems-1)))"
>>
>> base-commit: 020f3985a5ca86c8bbece27eef8fb0315a10463e
> 
> If we don't set the upperlimit what happens if we have 64Kb pages and
> the lowerlimit > upperlimit?

The lowerlimit is used to limit the max value on other nodes and the
upperlimit is used to limit the min value on the expected node.
So there is no problem if lowerlimit > upperlimit.
>
Richard Palethorpe Aug. 31, 2023, 8:27 a.m. UTC | #3
Hello,

Hongchen Zhang <zhanghongchen@loongson.cn> writes:

> Hi Richard,
>
> On 2023/8/30 下午3:45, Richard Palethorpe wrote:
>> Hello,
>> Hongchen Zhang <zhanghongchen@loongson.cn> writes:
>> 
>>> When I test the cpuset_memory_spread case,this case FAIL too often.
>>> After dig into the code, I find out that the fowlloing things trigger
>>> the FAIL:
>>> 1) random events,the probability is very small and can be ignored
>>> 2) get_meminfo which before send signal to test_pid
>>> 3) account_memsinfo before result_check
>>>
>>> About 2) and 3), we can increase the value of lowerlimit to keep
>>> the result as SUCCESS.
>>>
>>> After discussing with Richard, we all agree to use the following
>>> formula to calculate the lowerlimit:
>>> lowerlimit(kb) = pagesize(byte) * 512 / 1024
>>>
>>> Signed-off-by: Hongchen Zhang <zhanghongchen@loongson.cn>
>>> ---
>>>   .../cpuset_memory_spread_testset.sh                    | 10 +++++++++-
>>>   1 file changed, 9 insertions(+), 1 deletion(-)
>>>
>>> diff --git
>>> a/testcases/kernel/controllers/cpuset/cpuset_memory_spread_test/cpuset_memory_spread_testset.sh
>>> b/testcases/kernel/controllers/cpuset/cpuset_memory_spread_test/cpuset_memory_spread_testset.sh
>>> index e2767ef05..f7230a4ea 100755
>>> --- a/testcases/kernel/controllers/cpuset/cpuset_memory_spread_test/cpuset_memory_spread_testset.sh
>>> +++ b/testcases/kernel/controllers/cpuset/cpuset_memory_spread_test/cpuset_memory_spread_testset.sh
>>> @@ -38,7 +38,15 @@ nr_mems=$N_NODES
>>>   # on which it is running. The other nodes' slab space has littler change.(less
>>>   # than 1000 kb).
>>>   upperlimit=10000
>>> -lowerlimit=2000
>>> +
>>> +# set lowerlimit according to pagesize
>>> +# pagesize(bytes)  | lowerlimit(kb)
>>> +# ------------------------------------
>>> +#  4096            | 2048
>>> +#  16384           | 8192
>>> +
>>> +PAGE_SIZE=`tst_getconf PAGESIZE`
>>> +lowerlimit=$((PAGE_SIZE * 512 / 1024))
>>>     cpus_all="$(seq -s, 0 $((nr_cpus-1)))"
>>>   mems_all="$(seq -s, 0 $((nr_mems-1)))"
>>>
>>> base-commit: 020f3985a5ca86c8bbece27eef8fb0315a10463e
>> If we don't set the upperlimit what happens if we have 64Kb pages
>> and
>> the lowerlimit > upperlimit?
>
> The lowerlimit is used to limit the max value on other nodes and the
> upperlimit is used to limit the min value on the expected node.
> So there is no problem if lowerlimit > upperlimit.
>> 

Won't this cause false negatives on systems with larger page sizes?

I have merged it however because right now the test is most likely just
a source of false positives.
Hongchen Zhang Aug. 31, 2023, 8:51 a.m. UTC | #4
On 2023/8/31 下午4:27, Richard Palethorpe wrote:
> Hello,
> 
> Hongchen Zhang <zhanghongchen@loongson.cn> writes:
> 
>> Hi Richard,
>>
>> On 2023/8/30 下午3:45, Richard Palethorpe wrote:
>>> Hello,
>>> Hongchen Zhang <zhanghongchen@loongson.cn> writes:
>>>
>>>> When I test the cpuset_memory_spread case,this case FAIL too often.
>>>> After dig into the code, I find out that the fowlloing things trigger
>>>> the FAIL:
>>>> 1) random events,the probability is very small and can be ignored
>>>> 2) get_meminfo which before send signal to test_pid
>>>> 3) account_memsinfo before result_check
>>>>
>>>> About 2) and 3), we can increase the value of lowerlimit to keep
>>>> the result as SUCCESS.
>>>>
>>>> After discussing with Richard, we all agree to use the following
>>>> formula to calculate the lowerlimit:
>>>> lowerlimit(kb) = pagesize(byte) * 512 / 1024
>>>>
>>>> Signed-off-by: Hongchen Zhang <zhanghongchen@loongson.cn>
>>>> ---
>>>>    .../cpuset_memory_spread_testset.sh                    | 10 +++++++++-
>>>>    1 file changed, 9 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git
>>>> a/testcases/kernel/controllers/cpuset/cpuset_memory_spread_test/cpuset_memory_spread_testset.sh
>>>> b/testcases/kernel/controllers/cpuset/cpuset_memory_spread_test/cpuset_memory_spread_testset.sh
>>>> index e2767ef05..f7230a4ea 100755
>>>> --- a/testcases/kernel/controllers/cpuset/cpuset_memory_spread_test/cpuset_memory_spread_testset.sh
>>>> +++ b/testcases/kernel/controllers/cpuset/cpuset_memory_spread_test/cpuset_memory_spread_testset.sh
>>>> @@ -38,7 +38,15 @@ nr_mems=$N_NODES
>>>>    # on which it is running. The other nodes' slab space has littler change.(less
>>>>    # than 1000 kb).
>>>>    upperlimit=10000
>>>> -lowerlimit=2000
>>>> +
>>>> +# set lowerlimit according to pagesize
>>>> +# pagesize(bytes)  | lowerlimit(kb)
>>>> +# ------------------------------------
>>>> +#  4096            | 2048
>>>> +#  16384           | 8192
>>>> +
>>>> +PAGE_SIZE=`tst_getconf PAGESIZE`
>>>> +lowerlimit=$((PAGE_SIZE * 512 / 1024))
>>>>      cpus_all="$(seq -s, 0 $((nr_cpus-1)))"
>>>>    mems_all="$(seq -s, 0 $((nr_mems-1)))"
>>>>
>>>> base-commit: 020f3985a5ca86c8bbece27eef8fb0315a10463e
>>> If we don't set the upperlimit what happens if we have 64Kb pages
>>> and
>>> the lowerlimit > upperlimit?
>>
>> The lowerlimit is used to limit the max value on other nodes and the
>> upperlimit is used to limit the min value on the expected node.
>> So there is no problem if lowerlimit > upperlimit.
>>>
> 
> Won't this cause false negatives on systems with larger page sizes?
Yes, no problem with larger page size.
> 
> I have merged it however because right now the test is most likely just
> a source of false positives.
OK,thanks.
If there are any problem, we can continue to discuss.
>
diff mbox series

Patch

diff --git a/testcases/kernel/controllers/cpuset/cpuset_memory_spread_test/cpuset_memory_spread_testset.sh b/testcases/kernel/controllers/cpuset/cpuset_memory_spread_test/cpuset_memory_spread_testset.sh
index e2767ef05..f7230a4ea 100755
--- a/testcases/kernel/controllers/cpuset/cpuset_memory_spread_test/cpuset_memory_spread_testset.sh
+++ b/testcases/kernel/controllers/cpuset/cpuset_memory_spread_test/cpuset_memory_spread_testset.sh
@@ -38,7 +38,15 @@  nr_mems=$N_NODES
 # on which it is running. The other nodes' slab space has littler change.(less
 # than 1000 kb).
 upperlimit=10000
-lowerlimit=2000
+
+# set lowerlimit according to pagesize
+# pagesize(bytes)  | lowerlimit(kb)
+# ------------------------------------
+#  4096            | 2048
+#  16384           | 8192
+
+PAGE_SIZE=`tst_getconf PAGESIZE`
+lowerlimit=$((PAGE_SIZE * 512 / 1024))
 
 cpus_all="$(seq -s, 0 $((nr_cpus-1)))"
 mems_all="$(seq -s, 0 $((nr_mems-1)))"