* [PATCH v1] mem: disable KSM smart scan for ksm tests
@ 2023-11-27 17:45 Stefan Roesch
2023-11-28 7:46 ` [LTP] " Petr Vorel
0 siblings, 1 reply; 9+ messages in thread
From: Stefan Roesch @ 2023-11-27 17:45 UTC (permalink / raw)
To: kernel-team; +Cc: shr, david, oliver.sang, linux-mm, ltp
This disables the "smart scan" KSM feature to make sure that the volatile
count remains at 0.
Signed-off-by: Stefan Roesch <devkernel.io>
Reported-by: kernel test robot <oliver.sang@intel.com>
Closes: https://lore.kernel.org/oe-lkp/202311161132.13d8ce5a-oliver.sang@intel.com
---
testcases/kernel/mem/lib/mem.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/testcases/kernel/mem/lib/mem.c b/testcases/kernel/mem/lib/mem.c
index fbfeef026..ef274a3ac 100644
--- a/testcases/kernel/mem/lib/mem.c
+++ b/testcases/kernel/mem/lib/mem.c
@@ -454,6 +454,9 @@ void create_same_memory(int size, int num, int unit)
{'a', size*MB}, {'a', size*MB}, {'d', size*MB}, {'d', size*MB},
};
+ /* Disable smart scan for correct volatile counts. */
+ SAFE_FILE_PRINTF(PATH_KSM "smart_scan", "0");
+
ps = sysconf(_SC_PAGE_SIZE);
pages = MB / ps;
@@ -526,6 +529,7 @@ void create_same_memory(int size, int num, int unit)
tst_res(TINFO, "stop KSM.");
SAFE_FILE_PRINTF(PATH_KSM "run", "0");
+ SAFE_FILE_PRINTF(PATH_KSM "smart_scan", "1");
final_group_check(0, 0, 0, 0, 0, 0, size * pages * num);
while (waitpid(-1, &status, 0) > 0)
base-commit: 8c89ef3d451087ed6e18750bd5eedd10e5ab3d2e
--
2.39.3
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [LTP] [PATCH v1] mem: disable KSM smart scan for ksm tests
2023-11-27 17:45 [PATCH v1] mem: disable KSM smart scan for ksm tests Stefan Roesch
@ 2023-11-28 7:46 ` Petr Vorel
2023-11-28 10:35 ` Li Wang
2023-12-01 20:02 ` Stefan Roesch
0 siblings, 2 replies; 9+ messages in thread
From: Petr Vorel @ 2023-11-28 7:46 UTC (permalink / raw)
To: Stefan Roesch; +Cc: kernel-team, linux-mm, david, oliver.sang, ltp
Hi Stefan,
> This disables the "smart scan" KSM feature to make sure that the volatile
> count remains at 0.
> Signed-off-by: Stefan Roesch <devkernel.io>
nit: you forgot 'shr@'
Signed-off-by: Stefan Roesch <shr@devkernel.io>
> Reported-by: kernel test robot <oliver.sang@intel.com>
> Closes: https://lore.kernel.org/oe-lkp/202311161132.13d8ce5a-oliver.sang@intel.com
> ---
> testcases/kernel/mem/lib/mem.c | 4 ++++
> 1 file changed, 4 insertions(+)
> diff --git a/testcases/kernel/mem/lib/mem.c b/testcases/kernel/mem/lib/mem.c
> index fbfeef026..ef274a3ac 100644
> --- a/testcases/kernel/mem/lib/mem.c
> +++ b/testcases/kernel/mem/lib/mem.c
> @@ -454,6 +454,9 @@ void create_same_memory(int size, int num, int unit)
> {'a', size*MB}, {'a', size*MB}, {'d', size*MB}, {'d', size*MB},
> };
> + /* Disable smart scan for correct volatile counts. */
> + SAFE_FILE_PRINTF(PATH_KSM "smart_scan", "0");
NOTE, this fails on the systems without /sys/kernel/mm/ksm/smart_scan:
mem.c:458: TBROK: Failed to open FILE '/sys/kernel/mm/ksm/smart_scan' for writing: EACCES (13)
NOTE, we normally handle the setup like this in test setup function.
But new API has .save_restore which is more robust for tasks like this.
It's already used in ksm01.c, you need just to add this line:
{"/sys/kernel/mm/ksm/smart_scan", "0", TST_SR_SKIP},
(instead of both SAFE_FILE_PRINTF)
See:
https://github.com/linux-test-project/ltp/wiki/C-Test-API#127-saving--restoring-procsys-values
I wonder if ksm01.c is the only ksm test which needs to disable this.
also nit: there is a wrong indent (spaces instead of tabs), please be consistent
with the file content.
NOTE: while this fixes problem on 6.7.0-rc1-2.g86e46c2-default (openSUSE),
it does not fixes other problem on 6.5.10 on Debian (16 errors like these below):
mem.c:252: TFAIL: pages_shared is not 2 but 5038.
mem.c:252: TFAIL: pages_sharing is not 98302 but 593629.
mem.c:252: TFAIL: pages_volatile is not 0 but 391.
mem.c:252: TFAIL: pages_unshared is not 0 but 149157.
I have no idea if this is a real bug which needs to be fixed or test false
positive to be fixed, or whether the problem has already been fixed in newer
kernels.
> +
> ps = sysconf(_SC_PAGE_SIZE);
> pages = MB / ps;
> @@ -526,6 +529,7 @@ void create_same_memory(int size, int num, int unit)
> tst_res(TINFO, "stop KSM.");
> SAFE_FILE_PRINTF(PATH_KSM "run", "0");
> + SAFE_FILE_PRINTF(PATH_KSM "smart_scan", "1");
nit: Again, wrong indent. You could have seen it also in the generated patch.
Kind regards,
Petr
> final_group_check(0, 0, 0, 0, 0, 0, size * pages * num);
> while (waitpid(-1, &status, 0) > 0)
> base-commit: 8c89ef3d451087ed6e18750bd5eedd10e5ab3d2e
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [LTP] [PATCH v1] mem: disable KSM smart scan for ksm tests
2023-11-28 7:46 ` [LTP] " Petr Vorel
@ 2023-11-28 10:35 ` Li Wang
2023-11-28 16:51 ` Petr Vorel
2023-12-01 20:06 ` Stefan Roesch
2023-12-01 20:02 ` Stefan Roesch
1 sibling, 2 replies; 9+ messages in thread
From: Li Wang @ 2023-11-28 10:35 UTC (permalink / raw)
To: Petr Vorel; +Cc: Stefan Roesch, kernel-team, linux-mm, david, oliver.sang, ltp
[-- Attachment #1: Type: text/plain, Size: 4371 bytes --]
Hi Stefan, Petr,
On Tue, Nov 28, 2023 at 3:46 PM Petr Vorel <pvorel@suse.cz> wrote:
> Hi Stefan,
>
> > This disables the "smart scan" KSM feature to make sure that the volatile
> > count remains at 0.
>
> > Signed-off-by: Stefan Roesch <devkernel.io>
> nit: you forgot 'shr@'
> Signed-off-by: Stefan Roesch <shr@devkernel.io>
>
> > Reported-by: kernel test robot <oliver.sang@intel.com>
> > Closes:
> https://lore.kernel.org/oe-lkp/202311161132.13d8ce5a-oliver.sang@intel.com
> > ---
> > testcases/kernel/mem/lib/mem.c | 4 ++++
> > 1 file changed, 4 insertions(+)
>
> > diff --git a/testcases/kernel/mem/lib/mem.c
> b/testcases/kernel/mem/lib/mem.c
> > index fbfeef026..ef274a3ac 100644
> > --- a/testcases/kernel/mem/lib/mem.c
> > +++ b/testcases/kernel/mem/lib/mem.c
> > @@ -454,6 +454,9 @@ void create_same_memory(int size, int num, int unit)
> > {'a', size*MB}, {'a', size*MB}, {'d', size*MB}, {'d',
> size*MB},
> > };
>
> > + /* Disable smart scan for correct volatile counts. */
> > + SAFE_FILE_PRINTF(PATH_KSM "smart_scan", "0");
> NOTE, this fails on the systems without /sys/kernel/mm/ksm/smart_scan:
>
> mem.c:458: TBROK: Failed to open FILE '/sys/kernel/mm/ksm/smart_scan' for
> writing: EACCES (13)
>
> NOTE, we normally handle the setup like this in test setup function.
>
> But new API has .save_restore which is more robust for tasks like this.
> It's already used in ksm01.c, you need just to add this line:
> {"/sys/kernel/mm/ksm/smart_scan", "0", TST_SR_SKIP},
>
I guess we need to set 'TST_SR_SKIP_MISSING | TST_SR_TBROK_RO'
as the last field. Because TST_SR_SKIP will continue the test without
writing '0' to the smart_scan file, that's not correct if the file exists.
It will
ignore a kernel bug (smart_scan can't be written) by that config.
Per the Doc Petr pointed below:
TST_SR_SKIP_MISSING – Continue without saving the file if it does not
exist
TST_SR_TBROK_RO – End test with TBROK if the file is read-only
TST_SR_SKIP_RO – Continue without saving the file if it is read-only
TST_SR_SKIP – Equivalent to 'TST_SR_SKIP_MISSING | TST_SR_SKIP_RO'
> (instead of both SAFE_FILE_PRINTF)
>
> See:
>
> https://github.com/linux-test-project/ltp/wiki/C-Test-API#127-saving--restoring-procsys-values
>
> I wonder if ksm01.c is the only ksm test which needs to disable this.
>
I think all of the ksm0*.c tests should disable it by the config. The
smart_scan
will impact all the tests with invoke key function create_same_memory().
>
> also nit: there is a wrong indent (spaces instead of tabs), please be
> consistent
> with the file content.
>
> NOTE: while this fixes problem on 6.7.0-rc1-2.g86e46c2-default (openSUSE),
> it does not fixes other problem on 6.5.10 on Debian (16 errors like these
> below):
>
> mem.c:252: TFAIL: pages_shared is not 2 but 5038.
> mem.c:252: TFAIL: pages_sharing is not 98302 but 593629.
> mem.c:252: TFAIL: pages_volatile is not 0 but 391.
> mem.c:252: TFAIL: pages_unshared is not 0 but 149157.
>
> I have no idea if this is a real bug which needs to be fixed or test false
> positive to be fixed, or whether the problem has already been fixed in
> newer
> kernels.
>
It is more like a real bug, the Debain kernel-6.5.10 does not contain
this smart_scan feature. Or you may try to build the latest kernel
on your platform to see if it can be reproduced as well.
>
> > +
> > ps = sysconf(_SC_PAGE_SIZE);
> > pages = MB / ps;
>
> > @@ -526,6 +529,7 @@ void create_same_memory(int size, int num, int unit)
>
> > tst_res(TINFO, "stop KSM.");
> > SAFE_FILE_PRINTF(PATH_KSM "run", "0");
> > + SAFE_FILE_PRINTF(PATH_KSM "smart_scan", "1");
> nit: Again, wrong indent. You could have seen it also in the generated
> patch.
>
> Kind regards,
> Petr
>
> > final_group_check(0, 0, 0, 0, 0, 0, size * pages * num);
>
> > while (waitpid(-1, &status, 0) > 0)
>
> > base-commit: 8c89ef3d451087ed6e18750bd5eedd10e5ab3d2e
>
>
One more comment not related to this patch:
@Stefan, do you have a test (or plan to) verify the 'smart_scan' feture
works?
As we do disables it for all ksm* tests in LTP, so, it would be great to
have one
for testing in enable mode. What do you think?
--
Regards,
Li Wang
[-- Attachment #2: Type: text/html, Size: 7820 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [LTP] [PATCH v1] mem: disable KSM smart scan for ksm tests
2023-11-28 10:35 ` Li Wang
@ 2023-11-28 16:51 ` Petr Vorel
2023-11-29 3:51 ` Li Wang
2023-12-01 20:06 ` Stefan Roesch
1 sibling, 1 reply; 9+ messages in thread
From: Petr Vorel @ 2023-11-28 16:51 UTC (permalink / raw)
To: Li Wang; +Cc: Stefan Roesch, kernel-team, linux-mm, david, oliver.sang, ltp
Hi Stefan, Li,
> Hi Stefan, Petr,
> On Tue, Nov 28, 2023 at 3:46 PM Petr Vorel <pvorel@suse.cz> wrote:
> > Hi Stefan,
> > > This disables the "smart scan" KSM feature to make sure that the volatile
> > > count remains at 0.
> > > Signed-off-by: Stefan Roesch <devkernel.io>
> > nit: you forgot 'shr@'
> > Signed-off-by: Stefan Roesch <shr@devkernel.io>
> > > Reported-by: kernel test robot <oliver.sang@intel.com>
> > > Closes:
> > https://lore.kernel.org/oe-lkp/202311161132.13d8ce5a-oliver.sang@intel.com
> > > ---
> > > testcases/kernel/mem/lib/mem.c | 4 ++++
> > > 1 file changed, 4 insertions(+)
> > > diff --git a/testcases/kernel/mem/lib/mem.c
> > b/testcases/kernel/mem/lib/mem.c
> > > index fbfeef026..ef274a3ac 100644
> > > --- a/testcases/kernel/mem/lib/mem.c
> > > +++ b/testcases/kernel/mem/lib/mem.c
> > > @@ -454,6 +454,9 @@ void create_same_memory(int size, int num, int unit)
> > > {'a', size*MB}, {'a', size*MB}, {'d', size*MB}, {'d',
> > size*MB},
> > > };
> > > + /* Disable smart scan for correct volatile counts. */
> > > + SAFE_FILE_PRINTF(PATH_KSM "smart_scan", "0");
> > NOTE, this fails on the systems without /sys/kernel/mm/ksm/smart_scan:
> > mem.c:458: TBROK: Failed to open FILE '/sys/kernel/mm/ksm/smart_scan' for
> > writing: EACCES (13)
> > NOTE, we normally handle the setup like this in test setup function.
> > But new API has .save_restore which is more robust for tasks like this.
> > It's already used in ksm01.c, you need just to add this line:
> > {"/sys/kernel/mm/ksm/smart_scan", "0", TST_SR_SKIP},
> I guess we need to set 'TST_SR_SKIP_MISSING | TST_SR_TBROK_RO'
> as the last field. Because TST_SR_SKIP will continue the test without
> writing '0' to the smart_scan file, that's not correct if the file exists.
> It will
> ignore a kernel bug (smart_scan can't be written) by that config.
> Per the Doc Petr pointed below:
> TST_SR_SKIP_MISSING – Continue without saving the file if it does not
> exist
> TST_SR_TBROK_RO – End test with TBROK if the file is read-only
> TST_SR_SKIP_RO – Continue without saving the file if it is read-only
> TST_SR_SKIP – Equivalent to 'TST_SR_SKIP_MISSING | TST_SR_SKIP_RO'
> > (instead of both SAFE_FILE_PRINTF)
> > See:
> > https://github.com/linux-test-project/ltp/wiki/C-Test-API#127-saving--restoring-procsys-values
> > I wonder if ksm01.c is the only ksm test which needs to disable this.
> I think all of the ksm0*.c tests should disable it by the config. The
> smart_scan
> will impact all the tests with invoke key function create_same_memory().
ksm05.c and ksm06.c does not use create_same_memory(). Or did I overlook
something?
> > also nit: there is a wrong indent (spaces instead of tabs), please be
> > consistent
> > with the file content.
> > NOTE: while this fixes problem on 6.7.0-rc1-2.g86e46c2-default (openSUSE),
> > it does not fixes other problem on 6.5.10 on Debian (16 errors like these
> > below):
> > mem.c:252: TFAIL: pages_shared is not 2 but 5038.
> > mem.c:252: TFAIL: pages_sharing is not 98302 but 593629.
> > mem.c:252: TFAIL: pages_volatile is not 0 but 391.
> > mem.c:252: TFAIL: pages_unshared is not 0 but 149157.
> > I have no idea if this is a real bug which needs to be fixed or test false
> > positive to be fixed, or whether the problem has already been fixed in
> > newer
> > kernels.
> It is more like a real bug, the Debain kernel-6.5.10 does not contain
> this smart_scan feature. Or you may try to build the latest kernel
> on your platform to see if it can be reproduced as well.
I'll try to reproduce this on mainline kernel 6.5, 6.6 and 6.7.
> > > +
> > > ps = sysconf(_SC_PAGE_SIZE);
> > > pages = MB / ps;
> > > @@ -526,6 +529,7 @@ void create_same_memory(int size, int num, int unit)
> > > tst_res(TINFO, "stop KSM.");
> > > SAFE_FILE_PRINTF(PATH_KSM "run", "0");
> > > + SAFE_FILE_PRINTF(PATH_KSM "smart_scan", "1");
> > nit: Again, wrong indent. You could have seen it also in the generated
> > patch.
> > Kind regards,
> > Petr
> > > final_group_check(0, 0, 0, 0, 0, 0, size * pages * num);
> > > while (waitpid(-1, &status, 0) > 0)
> > > base-commit: 8c89ef3d451087ed6e18750bd5eedd10e5ab3d2e
> One more comment not related to this patch:
> @Stefan, do you have a test (or plan to) verify the 'smart_scan' feture
> works?
> As we do disables it for all ksm* tests in LTP, so, it would be great to
> have one
> for testing in enable mode. What do you think?
This makes perfect sense even if I'm not that ksm05.c and ksm06.c also needs to
disable smart_scan.
Kind regards,
Petr
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [LTP] [PATCH v1] mem: disable KSM smart scan for ksm tests
2023-11-28 16:51 ` Petr Vorel
@ 2023-11-29 3:51 ` Li Wang
2023-11-29 10:10 ` Petr Vorel
0 siblings, 1 reply; 9+ messages in thread
From: Li Wang @ 2023-11-29 3:51 UTC (permalink / raw)
To: Petr Vorel; +Cc: Stefan Roesch, kernel-team, linux-mm, david, oliver.sang, ltp
[-- Attachment #1: Type: text/plain, Size: 3558 bytes --]
On Wed, Nov 29, 2023 at 12:51 AM Petr Vorel <pvorel@suse.cz> wrote:
> Hi Stefan, Li,
>
> > Hi Stefan, Petr,
>
> > On Tue, Nov 28, 2023 at 3:46 PM Petr Vorel <pvorel@suse.cz> wrote:
>
> > > Hi Stefan,
>
> > > > This disables the "smart scan" KSM feature to make sure that the
> volatile
> > > > count remains at 0.
>
> > > > Signed-off-by: Stefan Roesch <devkernel.io>
> > > nit: you forgot 'shr@'
> > > Signed-off-by: Stefan Roesch <shr@devkernel.io>
>
> > > > Reported-by: kernel test robot <oliver.sang@intel.com>
> > > > Closes:
> > >
> https://lore.kernel.org/oe-lkp/202311161132.13d8ce5a-oliver.sang@intel.com
> > > > ---
> > > > testcases/kernel/mem/lib/mem.c | 4 ++++
> > > > 1 file changed, 4 insertions(+)
>
> > > > diff --git a/testcases/kernel/mem/lib/mem.c
> > > b/testcases/kernel/mem/lib/mem.c
> > > > index fbfeef026..ef274a3ac 100644
> > > > --- a/testcases/kernel/mem/lib/mem.c
> > > > +++ b/testcases/kernel/mem/lib/mem.c
> > > > @@ -454,6 +454,9 @@ void create_same_memory(int size, int num, int
> unit)
> > > > {'a', size*MB}, {'a', size*MB}, {'d', size*MB}, {'d',
> > > size*MB},
> > > > };
>
> > > > + /* Disable smart scan for correct volatile counts. */
> > > > + SAFE_FILE_PRINTF(PATH_KSM "smart_scan", "0");
> > > NOTE, this fails on the systems without /sys/kernel/mm/ksm/smart_scan:
>
> > > mem.c:458: TBROK: Failed to open FILE '/sys/kernel/mm/ksm/smart_scan'
> for
> > > writing: EACCES (13)
>
> > > NOTE, we normally handle the setup like this in test setup function.
>
> > > But new API has .save_restore which is more robust for tasks like
> this.
> > > It's already used in ksm01.c, you need just to add this line:
> > > {"/sys/kernel/mm/ksm/smart_scan", "0", TST_SR_SKIP},
>
>
> > I guess we need to set 'TST_SR_SKIP_MISSING | TST_SR_TBROK_RO'
> > as the last field. Because TST_SR_SKIP will continue the test without
> > writing '0' to the smart_scan file, that's not correct if the file
> exists.
> > It will
> > ignore a kernel bug (smart_scan can't be written) by that config.
>
> > Per the Doc Petr pointed below:
> > TST_SR_SKIP_MISSING – Continue without saving the file if it does not
> > exist
> > TST_SR_TBROK_RO – End test with TBROK if the file is read-only
> > TST_SR_SKIP_RO – Continue without saving the file if it is read-only
> > TST_SR_SKIP – Equivalent to 'TST_SR_SKIP_MISSING | TST_SR_SKIP_RO'
>
>
>
> > > (instead of both SAFE_FILE_PRINTF)
>
> > > See:
>
> > >
> https://github.com/linux-test-project/ltp/wiki/C-Test-API#127-saving--restoring-procsys-values
>
> > > I wonder if ksm01.c is the only ksm test which needs to disable this.
>
>
> > I think all of the ksm0*.c tests should disable it by the config. The
> > smart_scan
> > will impact all the tests with invoke key function create_same_memory().
>
> ksm05.c and ksm06.c does not use create_same_memory(). Or did I overlook
> something?
>
Good catch, I looked into these tests, seems only ksm05 is debatable
for disabling smart_scan, as a simple regression, it suggests disabling
ksm daemon to avoid disturb according to some workload.
https://github.com/linux-test-project/ltp/blob/master/testcases/kernel/mem/ksm/ksm05.c#L30
ksm06 is definitely need disable smart_scan, it tests KSM in different
'run' state for merge_accros_nodes.
To be on the safe side, I would suggest applying the patch to all ksm*
tests,
and write a new single for smart_scan if needed.
--
Regards,
Li Wang
[-- Attachment #2: Type: text/html, Size: 5914 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [LTP] [PATCH v1] mem: disable KSM smart scan for ksm tests
2023-11-29 3:51 ` Li Wang
@ 2023-11-29 10:10 ` Petr Vorel
2023-12-01 20:11 ` Stefan Roesch
0 siblings, 1 reply; 9+ messages in thread
From: Petr Vorel @ 2023-11-29 10:10 UTC (permalink / raw)
To: Li Wang; +Cc: Stefan Roesch, kernel-team, linux-mm, david, oliver.sang, ltp
> On Wed, Nov 29, 2023 at 12:51 AM Petr Vorel <pvorel@suse.cz> wrote:
> > Hi Stefan, Li,
> > > Hi Stefan, Petr,
> > > On Tue, Nov 28, 2023 at 3:46 PM Petr Vorel <pvorel@suse.cz> wrote:
> > > > Hi Stefan,
> > > > > This disables the "smart scan" KSM feature to make sure that the
> > volatile
> > > > > count remains at 0.
> > > > > Signed-off-by: Stefan Roesch <devkernel.io>
> > > > nit: you forgot 'shr@'
> > > > Signed-off-by: Stefan Roesch <shr@devkernel.io>
> > > > > Reported-by: kernel test robot <oliver.sang@intel.com>
> > > > > Closes:
> > https://lore.kernel.org/oe-lkp/202311161132.13d8ce5a-oliver.sang@intel.com
> > > > > ---
> > > > > testcases/kernel/mem/lib/mem.c | 4 ++++
> > > > > 1 file changed, 4 insertions(+)
> > > > > diff --git a/testcases/kernel/mem/lib/mem.c
> > > > b/testcases/kernel/mem/lib/mem.c
> > > > > index fbfeef026..ef274a3ac 100644
> > > > > --- a/testcases/kernel/mem/lib/mem.c
> > > > > +++ b/testcases/kernel/mem/lib/mem.c
> > > > > @@ -454,6 +454,9 @@ void create_same_memory(int size, int num, int
> > unit)
> > > > > {'a', size*MB}, {'a', size*MB}, {'d', size*MB}, {'d',
> > > > size*MB},
> > > > > };
> > > > > + /* Disable smart scan for correct volatile counts. */
> > > > > + SAFE_FILE_PRINTF(PATH_KSM "smart_scan", "0");
> > > > NOTE, this fails on the systems without /sys/kernel/mm/ksm/smart_scan:
> > > > mem.c:458: TBROK: Failed to open FILE '/sys/kernel/mm/ksm/smart_scan'
> > for
> > > > writing: EACCES (13)
> > > > NOTE, we normally handle the setup like this in test setup function.
> > > > But new API has .save_restore which is more robust for tasks like
> > this.
> > > > It's already used in ksm01.c, you need just to add this line:
> > > > {"/sys/kernel/mm/ksm/smart_scan", "0", TST_SR_SKIP},
> > > I guess we need to set 'TST_SR_SKIP_MISSING | TST_SR_TBROK_RO'
> > > as the last field. Because TST_SR_SKIP will continue the test without
> > > writing '0' to the smart_scan file, that's not correct if the file
> > exists.
> > > It will
> > > ignore a kernel bug (smart_scan can't be written) by that config.
> > > Per the Doc Petr pointed below:
> > > TST_SR_SKIP_MISSING – Continue without saving the file if it does not
> > > exist
> > > TST_SR_TBROK_RO – End test with TBROK if the file is read-only
> > > TST_SR_SKIP_RO – Continue without saving the file if it is read-only
> > > TST_SR_SKIP – Equivalent to 'TST_SR_SKIP_MISSING | TST_SR_SKIP_RO'
> > > > (instead of both SAFE_FILE_PRINTF)
> > > > See:
> > https://github.com/linux-test-project/ltp/wiki/C-Test-API#127-saving--restoring-procsys-values
> > > > I wonder if ksm01.c is the only ksm test which needs to disable this.
> > > I think all of the ksm0*.c tests should disable it by the config. The
> > > smart_scan
> > > will impact all the tests with invoke key function create_same_memory().
> > ksm05.c and ksm06.c does not use create_same_memory(). Or did I overlook
> > something?
> Good catch, I looked into these tests, seems only ksm05 is debatable
> for disabling smart_scan, as a simple regression, it suggests disabling
> ksm daemon to avoid disturb according to some workload.
> https://github.com/linux-test-project/ltp/blob/master/testcases/kernel/mem/ksm/ksm05.c#L30
> ksm06 is definitely need disable smart_scan, it tests KSM in different
> 'run' state for merge_accros_nodes.
Thanks for having a look.
> To be on the safe side, I would suggest applying the patch to all ksm*
> tests,
> and write a new single for smart_scan if needed.
Agree. I vote for new single for smart_scan related test.
Kind regards,
Petr
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [LTP] [PATCH v1] mem: disable KSM smart scan for ksm tests
2023-11-28 7:46 ` [LTP] " Petr Vorel
2023-11-28 10:35 ` Li Wang
@ 2023-12-01 20:02 ` Stefan Roesch
1 sibling, 0 replies; 9+ messages in thread
From: Stefan Roesch @ 2023-12-01 20:02 UTC (permalink / raw)
To: Petr Vorel; +Cc: kernel-team, linux-mm, david, oliver.sang, ltp
Petr Vorel <pvorel@suse.cz> writes:
> Hi Stefan,
>
>> This disables the "smart scan" KSM feature to make sure that the volatile
>> count remains at 0.
>
>> Signed-off-by: Stefan Roesch <devkernel.io>
> nit: you forgot 'shr@'
> Signed-off-by: Stefan Roesch <shr@devkernel.io>
>
Thanks, will be fixed with the next version.
>> Reported-by: kernel test robot <oliver.sang@intel.com>
>> Closes: https://lore.kernel.org/oe-lkp/202311161132.13d8ce5a-oliver.sang@intel.com
>> ---
>> testcases/kernel/mem/lib/mem.c | 4 ++++
>> 1 file changed, 4 insertions(+)
>
>> diff --git a/testcases/kernel/mem/lib/mem.c b/testcases/kernel/mem/lib/mem.c
>> index fbfeef026..ef274a3ac 100644
>> --- a/testcases/kernel/mem/lib/mem.c
>> +++ b/testcases/kernel/mem/lib/mem.c
>> @@ -454,6 +454,9 @@ void create_same_memory(int size, int num, int unit)
>> {'a', size*MB}, {'a', size*MB}, {'d', size*MB}, {'d', size*MB},
>> };
>
>> + /* Disable smart scan for correct volatile counts. */
>> + SAFE_FILE_PRINTF(PATH_KSM "smart_scan", "0");
> NOTE, this fails on the systems without /sys/kernel/mm/ksm/smart_scan:
>
> mem.c:458: TBROK: Failed to open FILE '/sys/kernel/mm/ksm/smart_scan' for writing: EACCES (13)
>
> NOTE, we normally handle the setup like this in test setup function.
>
> But new API has .save_restore which is more robust for tasks like this.
> It's already used in ksm01.c, you need just to add this line:
> {"/sys/kernel/mm/ksm/smart_scan", "0", TST_SR_SKIP},
>
I'll add it with the next version
> (instead of both SAFE_FILE_PRINTF)
>
> See:
> https://github.com/linux-test-project/ltp/wiki/C-Test-API#127-saving--restoring-procsys-values
>
> I wonder if ksm01.c is the only ksm test which needs to disable this.
>
Other tests will also need it. They also use the create_same_memory()
function.
> also nit: there is a wrong indent (spaces instead of tabs), please be consistent
> with the file content.
>
> NOTE: while this fixes problem on 6.7.0-rc1-2.g86e46c2-default (openSUSE),
> it does not fixes other problem on 6.5.10 on Debian (16 errors like these below):
>
> mem.c:252: TFAIL: pages_shared is not 2 but 5038.
> mem.c:252: TFAIL: pages_sharing is not 98302 but 593629.
> mem.c:252: TFAIL: pages_volatile is not 0 but 391.
> mem.c:252: TFAIL: pages_unshared is not 0 but 149157.
>
> I have no idea if this is a real bug which needs to be fixed or test false
> positive to be fixed, or whether the problem has already been fixed in newer
> kernels.
>
This is a different problem. "Smart scan was introduced with 6.7"
>> +
>> ps = sysconf(_SC_PAGE_SIZE);
>> pages = MB / ps;
>
>> @@ -526,6 +529,7 @@ void create_same_memory(int size, int num, int unit)
>
>> tst_res(TINFO, "stop KSM.");
>> SAFE_FILE_PRINTF(PATH_KSM "run", "0");
>> + SAFE_FILE_PRINTF(PATH_KSM "smart_scan", "1");
> nit: Again, wrong indent. You could have seen it also in the generated patch.
>
> Kind regards,
> Petr
>
>> final_group_check(0, 0, 0, 0, 0, 0, size * pages * num);
>
>> while (waitpid(-1, &status, 0) > 0)
>
>> base-commit: 8c89ef3d451087ed6e18750bd5eedd10e5ab3d2e
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [LTP] [PATCH v1] mem: disable KSM smart scan for ksm tests
2023-11-28 10:35 ` Li Wang
2023-11-28 16:51 ` Petr Vorel
@ 2023-12-01 20:06 ` Stefan Roesch
1 sibling, 0 replies; 9+ messages in thread
From: Stefan Roesch @ 2023-12-01 20:06 UTC (permalink / raw)
To: Li Wang; +Cc: Petr Vorel, kernel-team, linux-mm, david, oliver.sang, ltp
Li Wang <liwang@redhat.com> writes:
> Hi Stefan, Petr,
>
> On Tue, Nov 28, 2023 at 3:46 PM Petr Vorel <pvorel@suse.cz> wrote:
>
> Hi Stefan,
>
> > This disables the "smart scan" KSM feature to make sure that the volatile
> > count remains at 0.
>
> > Signed-off-by: Stefan Roesch <devkernel.io>
> nit: you forgot 'shr@'
> Signed-off-by: Stefan Roesch <shr@devkernel.io>
>
> > Reported-by: kernel test robot <oliver.sang@intel.com>
> > Closes: https://lore.kernel.org/oe-lkp/202311161132.13d8ce5a-oliver.sang@intel.com
> > ---
> > testcases/kernel/mem/lib/mem.c | 4 ++++
> > 1 file changed, 4 insertions(+)
>
> > diff --git a/testcases/kernel/mem/lib/mem.c b/testcases/kernel/mem/lib/mem.c
> > index fbfeef026..ef274a3ac 100644
> > --- a/testcases/kernel/mem/lib/mem.c
> > +++ b/testcases/kernel/mem/lib/mem.c
> > @@ -454,6 +454,9 @@ void create_same_memory(int size, int num, int unit)
> > {'a', size*MB}, {'a', size*MB}, {'d', size*MB}, {'d', size*MB},
> > };
>
> > + /* Disable smart scan for correct volatile counts. */
> > + SAFE_FILE_PRINTF(PATH_KSM "smart_scan", "0");
> NOTE, this fails on the systems without /sys/kernel/mm/ksm/smart_scan:
>
> mem.c:458: TBROK: Failed to open FILE '/sys/kernel/mm/ksm/smart_scan' for writing: EACCES (13)
>
> NOTE, we normally handle the setup like this in test setup function.
>
> But new API has .save_restore which is more robust for tasks like this.
> It's already used in ksm01.c, you need just to add this line:
> {"/sys/kernel/mm/ksm/smart_scan", "0", TST_SR_SKIP},
>
> I guess we need to set 'TST_SR_SKIP_MISSING | TST_SR_TBROK_RO'
> as the last field. Because TST_SR_SKIP will continue the test without
> writing '0' to the smart_scan file, that's not correct if the file exists. It will
> ignore a kernel bug (smart_scan can't be written) by that config.
>
> Per the Doc Petr pointed below:
> TST_SR_SKIP_MISSING – Continue without saving the file if it does not exist
> TST_SR_TBROK_RO – End test with TBROK if the file is read-only
> TST_SR_SKIP_RO – Continue without saving the file if it is read-only
> TST_SR_SKIP – Equivalent to 'TST_SR_SKIP_MISSING | TST_SR_SKIP_RO'
>
> (instead of both SAFE_FILE_PRINTF)
>
> See:
> https://github.com/linux-test-project/ltp/wiki/C-Test-API#127-saving--restoring-procsys-values
>
> I wonder if ksm01.c is the only ksm test which needs to disable this.
>
> I think all of the ksm0*.c tests should disable it by the config. The smart_scan
> will impact all the tests with invoke key function create_same_memory().
>
>
>
> also nit: there is a wrong indent (spaces instead of tabs), please be consistent
> with the file content.
>
> NOTE: while this fixes problem on 6.7.0-rc1-2.g86e46c2-default (openSUSE),
> it does not fixes other problem on 6.5.10 on Debian (16 errors like these below):
>
> mem.c:252: TFAIL: pages_shared is not 2 but 5038.
> mem.c:252: TFAIL: pages_sharing is not 98302 but 593629.
> mem.c:252: TFAIL: pages_volatile is not 0 but 391.
> mem.c:252: TFAIL: pages_unshared is not 0 but 149157.
>
> I have no idea if this is a real bug which needs to be fixed or test false
> positive to be fixed, or whether the problem has already been fixed in newer
> kernels.
>
> It is more like a real bug, the Debain kernel-6.5.10 does not contain
> this smart_scan feature. Or you may try to build the latest kernel
> on your platform to see if it can be reproduced as well.
>
>
>
> > +
> > ps = sysconf(_SC_PAGE_SIZE);
> > pages = MB / ps;
>
> > @@ -526,6 +529,7 @@ void create_same_memory(int size, int num, int unit)
>
> > tst_res(TINFO, "stop KSM.");
> > SAFE_FILE_PRINTF(PATH_KSM "run", "0");
> > + SAFE_FILE_PRINTF(PATH_KSM "smart_scan", "1");
> nit: Again, wrong indent. You could have seen it also in the generated patch.
>
> Kind regards,
> Petr
>
> > final_group_check(0, 0, 0, 0, 0, 0, size * pages * num);
>
> > while (waitpid(-1, &status, 0) > 0)
>
> > base-commit: 8c89ef3d451087ed6e18750bd5eedd10e5ab3d2e
>
> One more comment not related to this patch:
>
> @Stefan, do you have a test (or plan to) verify the 'smart_scan' feture works?
> As we do disables it for all ksm* tests in LTP, so, it would be great to have one
> for testing in enable mode. What do you think?
>
In the next version of the patch I'll add a new test case specifically
to test smart scan.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [LTP] [PATCH v1] mem: disable KSM smart scan for ksm tests
2023-11-29 10:10 ` Petr Vorel
@ 2023-12-01 20:11 ` Stefan Roesch
0 siblings, 0 replies; 9+ messages in thread
From: Stefan Roesch @ 2023-12-01 20:11 UTC (permalink / raw)
To: Petr Vorel; +Cc: Li Wang, kernel-team, linux-mm, david, oliver.sang, ltp
Petr Vorel <pvorel@suse.cz> writes:
>> On Wed, Nov 29, 2023 at 12:51 AM Petr Vorel <pvorel@suse.cz> wrote:
>
>> > Hi Stefan, Li,
>
>> > > Hi Stefan, Petr,
>
>> > > On Tue, Nov 28, 2023 at 3:46 PM Petr Vorel <pvorel@suse.cz> wrote:
>
>> > > > Hi Stefan,
>
>> > > > > This disables the "smart scan" KSM feature to make sure that the
>> > volatile
>> > > > > count remains at 0.
>
>> > > > > Signed-off-by: Stefan Roesch <devkernel.io>
>> > > > nit: you forgot 'shr@'
>> > > > Signed-off-by: Stefan Roesch <shr@devkernel.io>
>
>> > > > > Reported-by: kernel test robot <oliver.sang@intel.com>
>> > > > > Closes:
>
>> > https://lore.kernel.org/oe-lkp/202311161132.13d8ce5a-oliver.sang@intel.com
>> > > > > ---
>> > > > > testcases/kernel/mem/lib/mem.c | 4 ++++
>> > > > > 1 file changed, 4 insertions(+)
>
>> > > > > diff --git a/testcases/kernel/mem/lib/mem.c
>> > > > b/testcases/kernel/mem/lib/mem.c
>> > > > > index fbfeef026..ef274a3ac 100644
>> > > > > --- a/testcases/kernel/mem/lib/mem.c
>> > > > > +++ b/testcases/kernel/mem/lib/mem.c
>> > > > > @@ -454,6 +454,9 @@ void create_same_memory(int size, int num, int
>> > unit)
>> > > > > {'a', size*MB}, {'a', size*MB}, {'d', size*MB}, {'d',
>> > > > size*MB},
>> > > > > };
>
>> > > > > + /* Disable smart scan for correct volatile counts. */
>> > > > > + SAFE_FILE_PRINTF(PATH_KSM "smart_scan", "0");
>> > > > NOTE, this fails on the systems without /sys/kernel/mm/ksm/smart_scan:
>
>> > > > mem.c:458: TBROK: Failed to open FILE '/sys/kernel/mm/ksm/smart_scan'
>> > for
>> > > > writing: EACCES (13)
>
>> > > > NOTE, we normally handle the setup like this in test setup function.
>
>> > > > But new API has .save_restore which is more robust for tasks like
>> > this.
>> > > > It's already used in ksm01.c, you need just to add this line:
>> > > > {"/sys/kernel/mm/ksm/smart_scan", "0", TST_SR_SKIP},
>
>
>> > > I guess we need to set 'TST_SR_SKIP_MISSING | TST_SR_TBROK_RO'
>> > > as the last field. Because TST_SR_SKIP will continue the test without
>> > > writing '0' to the smart_scan file, that's not correct if the file
>> > exists.
>> > > It will
>> > > ignore a kernel bug (smart_scan can't be written) by that config.
>
>> > > Per the Doc Petr pointed below:
>> > > TST_SR_SKIP_MISSING – Continue without saving the file if it does not
>> > > exist
>> > > TST_SR_TBROK_RO – End test with TBROK if the file is read-only
>> > > TST_SR_SKIP_RO – Continue without saving the file if it is read-only
>> > > TST_SR_SKIP – Equivalent to 'TST_SR_SKIP_MISSING | TST_SR_SKIP_RO'
>
>
>
>> > > > (instead of both SAFE_FILE_PRINTF)
>
>> > > > See:
>
>
>> > https://github.com/linux-test-project/ltp/wiki/C-Test-API#127-saving--restoring-procsys-values
>
>> > > > I wonder if ksm01.c is the only ksm test which needs to disable this.
>
>
>> > > I think all of the ksm0*.c tests should disable it by the config. The
>> > > smart_scan
>> > > will impact all the tests with invoke key function create_same_memory().
>
>> > ksm05.c and ksm06.c does not use create_same_memory(). Or did I overlook
>> > something?
>
>
>> Good catch, I looked into these tests, seems only ksm05 is debatable
>> for disabling smart_scan, as a simple regression, it suggests disabling
>> ksm daemon to avoid disturb according to some workload.
>> https://github.com/linux-test-project/ltp/blob/master/testcases/kernel/mem/ksm/ksm05.c#L30
>
>> ksm06 is definitely need disable smart_scan, it tests KSM in different
>> 'run' state for merge_accros_nodes.
>
> Thanks for having a look.
>
>> To be on the safe side, I would suggest applying the patch to all ksm*
>> tests,
>> and write a new single for smart_scan if needed.
>
> Agree. I vote for new single for smart_scan related test.
>
I'll add a new test.
> Kind regards,
> Petr
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2023-12-01 20:12 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-11-27 17:45 [PATCH v1] mem: disable KSM smart scan for ksm tests Stefan Roesch
2023-11-28 7:46 ` [LTP] " Petr Vorel
2023-11-28 10:35 ` Li Wang
2023-11-28 16:51 ` Petr Vorel
2023-11-29 3:51 ` Li Wang
2023-11-29 10:10 ` Petr Vorel
2023-12-01 20:11 ` Stefan Roesch
2023-12-01 20:06 ` Stefan Roesch
2023-12-01 20:02 ` Stefan Roesch
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).