public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
From: Li Wang <liwang@redhat.com>
To: ltp@lists.linux.it
Cc: Scott Weaver <scweaver@redhat.com>
Subject: [LTP] [PATCH] getrusage03: Forcing context switches to update resource usage
Date: Mon,  5 Aug 2024 14:36:16 +0800	[thread overview]
Message-ID: <20240805063616.12572-1-liwang@redhat.com> (raw)

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

             reply	other threads:[~2024-08-05  6:36 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-05  6:36 Li Wang [this message]
2024-08-05  6:58 ` [LTP] [PATCH] getrusage03: Forcing context switches to update resource usage Li Wang
2024-09-17 11:16 ` Cyril Hrubis
2024-09-18  3:19   ` Li Wang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240805063616.12572-1-liwang@redhat.com \
    --to=liwang@redhat.com \
    --cc=ltp@lists.linux.it \
    --cc=scweaver@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox