Message ID | 20230830064250.31904-1-zhanghongchen@loongson.cn |
---|---|
State | Accepted |
Headers | show |
Series | [v2] cpuset_memory_spread: set lowerlimit according to pagesize | expand |
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?
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. >
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.
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 --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)))"
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