[LTP] [PATCH] getrusage03: Forcing context switches to update resource usage

Li Wang liwang@redhat.com
Mon Aug 5 08:58:59 CEST 2024


I proposed a patch in upstream ML:
  https://lists.linux.it/pipermail/ltp/2024-August/039693.html

On Mon, Aug 5, 2024 at 2:36 PM Li Wang <liwang@redhat.com> wrote:

> Our CI sporadically complains that this test grandchild's MAXRSS did not
> reach
> the expected 300MB size.
>
>     12 getrusage03.c:86: TFAIL: child.children = 258048, expected 307200
>
> As the ru_maxrss value is generally updated at certain intervals or under
> specific conditions, such as page faults or context switches. There may be
> delay between the completion of memset() and the update of ru_maxrss.
>
> To address this issue, we create a function to force context switches by
> calling sched_yield() multiple times. This approach helps to ensure that
> the system has the opportunity to update the ru_maxrss value more promptly.
>
> Reproted-by: Scott Weaver <scweaver@redhat.com>
> Signed-off-by: Li Wang <liwang@redhat.com>
> ---
>  testcases/kernel/syscalls/getrusage/getrusage03.h | 11 +++++++++++
>  1 file changed, 11 insertions(+)
>
> diff --git a/testcases/kernel/syscalls/getrusage/getrusage03.h
> b/testcases/kernel/syscalls/getrusage/getrusage03.h
> index 8bee0b9e5..58a98b430 100644
> --- a/testcases/kernel/syscalls/getrusage/getrusage03.h
> +++ b/testcases/kernel/syscalls/getrusage/getrusage03.h
> @@ -6,10 +6,19 @@
>  #ifndef LTP_GETRUSAGE03_H
>  #define LTP_GETRUSAGE03_H
>
> +#include <sched.h>
>  #include "tst_test.h"
>
>  #define DELTA_MAX 20480
>
> +static void force_context_switches(int iterations)
> +{
> +       tst_res(TINFO, "Forcing context switch %d times", iterations);
> +
> +       for (int i = 0; i < iterations; i++)
> +               sched_yield();
> +}
> +
>  static void consume_mb(int consume_nr)
>  {
>         void *ptr;
> @@ -22,6 +31,8 @@ static void consume_mb(int consume_nr)
>         ptr = SAFE_MALLOC(size);
>         memset(ptr, 0, size);
>
> +       force_context_switches(10);
> +
>         SAFE_FILE_LINES_SCANF("/proc/self/status", "VmSwap: %lu",
> &vmswap_size);
>         if (vmswap_size > 0)
>                 tst_brk(TBROK, "VmSwap is not zero");
> --
> 2.45.2
>
>
> --
> Mailing list info: https://lists.linux.it/listinfo/ltp
>
>

-- 
Regards,
Li Wang


More information about the ltp mailing list