Petr Vorel <pvorel@xxxxxxx> writes: >> On Wed, Nov 29, 2023 at 12:51 AM Petr Vorel <pvorel@xxxxxxx> wrote: > >> > Hi Stefan, Li, > >> > > Hi Stefan, Petr, > >> > > On Tue, Nov 28, 2023 at 3:46 PM Petr Vorel <pvorel@xxxxxxx> 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@xxxxxxxxxxxx> > >> > > > > Reported-by: kernel test robot <oliver.sang@xxxxxxxxx> >> > > > > Closes: > >> > https://lore.kernel.org/oe-lkp/202311161132.13d8ce5a-oliver.sang@xxxxxxxxx >> > > > > --- >> > > > > 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