From: Joerg Vehlow <lkml@jv-coder.de>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH] memcg_lib/memcg_process: Better synchronization of signal USR1
Date: Wed, 6 Nov 2019 08:36:21 +0100 [thread overview]
Message-ID: <20191106073621.58738-1-lkml@jv-coder.de> (raw)
From: Joerg Vehlow <joerg.vehlow@aox-tech.de>
memcg_process is triggered by memcg_lib to do allocations and
deallocations. These work was done in the signal handler.
In some cases it could happen, that memcg_lib send multiple
signals (e.g. in function warmup). This lead to signals getting
lost and failed tests.
The patch moves the allocation and deallocation to the main
function, triggered by a flag set by the signal handler.
Additionally TST_CHECKPOINT_WAKE/TST_CHECKPOINT_WAIT is
used to make memcg_lib wait until memcg_process is done
allocating/deallocating.
Signed-off-by: Joerg Vehlow <joerg.vehlow@aox-tech.de>
---
.../controllers/memcg/functional/memcg_lib.sh | 1 +
.../memcg/functional/memcg_process.c | 44 +++++++++++--------
2 files changed, 27 insertions(+), 18 deletions(-)
diff --git a/testcases/kernel/controllers/memcg/functional/memcg_lib.sh b/testcases/kernel/controllers/memcg/functional/memcg_lib.sh
index aadaae4d2..7440e1eee 100755
--- a/testcases/kernel/controllers/memcg/functional/memcg_lib.sh
+++ b/testcases/kernel/controllers/memcg/functional/memcg_lib.sh
@@ -124,6 +124,7 @@ signal_memcg_process()
local usage_start=$(cat ${path}memory.usage_in_bytes)
kill -s USR1 $pid 2> /dev/null
+ TST_CHECKPOINT_WAIT 1
if [ -z "$size" ]; then
return
diff --git a/testcases/kernel/controllers/memcg/functional/memcg_process.c b/testcases/kernel/controllers/memcg/functional/memcg_process.c
index 0e671f566..8e846879d 100644
--- a/testcases/kernel/controllers/memcg/functional/memcg_process.c
+++ b/testcases/kernel/controllers/memcg/functional/memcg_process.c
@@ -24,7 +24,8 @@
static int fd;
static volatile int flag_exit;
-static volatile int flag_allocated;
+static volatile int flag_do_work;
+static int flag_allocated;
static int opt_mmap_anon;
static int opt_mmap_file;
@@ -257,22 +258,7 @@ static void sigint_handler(int __attribute__ ((unused)) signo)
*/
static void sigusr_handler(int __attribute__ ((unused)) signo)
{
- if (opt_mmap_anon)
- mmap_anon();
-
- if (opt_mmap_file)
- mmap_file();
-
- if (opt_mmap_lock1)
- mmap_lock1();
-
- if (opt_mmap_lock2)
- mmap_lock2();
-
- if (opt_shm)
- shm();
-
- flag_allocated = !flag_allocated;
+ flag_do_work++;
}
int main(int argc, char *argv[])
@@ -302,8 +288,30 @@ int main(int argc, char *argv[])
TST_CHECKPOINT_WAKE(0);
- while (!flag_exit)
+ while (!flag_exit) {
+ if (flag_do_work) {
+ flag_do_work--;
+ if (opt_mmap_anon)
+ mmap_anon();
+
+ if (opt_mmap_file)
+ mmap_file();
+
+ if (opt_mmap_lock1)
+ mmap_lock1();
+
+ if (opt_mmap_lock2)
+ mmap_lock2();
+
+ if (opt_shm)
+ shm();
+
+ flag_allocated = !flag_allocated;
+
+ TST_CHECKPOINT_WAKE(1);
+ }
sleep(1);
+ }
close(fd);
--
2.20.1
next reply other threads:[~2019-11-06 7:36 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-06 7:36 Joerg Vehlow [this message]
2019-11-06 8:33 ` [LTP] [PATCH] memcg_lib/memcg_process: Better synchronization of signal USR1 Joerg Vehlow
2019-11-21 18:34 ` Petr Vorel
2019-11-25 13:14 ` Cyril Hrubis
2019-11-25 14:28 ` Petr Vorel
2019-11-25 13:29 ` Cyril Hrubis
2019-11-25 13:48 ` Joerg Vehlow
2019-11-25 15:32 ` Cyril Hrubis
2019-11-26 5:08 ` Joerg Vehlow
2019-11-26 12:10 ` Cyril Hrubis
2019-11-26 12:39 ` Joerg Vehlow
2019-11-27 7:41 ` Joerg Vehlow
2019-12-03 15:12 ` Cyril Hrubis
2019-12-06 6:24 ` Joerg Vehlow
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=20191106073621.58738-1-lkml@jv-coder.de \
--to=lkml@jv-coder.de \
--cc=ltp@lists.linux.it \
/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