Message ID | 20240315033139.20557-1-wegao@suse.com |
---|---|
State | Accepted |
Headers | show |
Series | [v2] memcontrol03: Using clean page cache to avoid dependency on IO rate | expand |
Hi Wei, > Bad IO situation(storage bandwidth ~10MB/sec) will lead background > writeback has uncertain progress for dirty page. So system can not > reclaim enough memory for new process and finally lead a unexpected > OOM. Use fsync() to make sure that the pages from the file we wrote into are written to a permanent storage. > memcontrol03.c:218: TPASS: Expect: (A/B/E memory.current=0) ~= 0 > memcontrol03.c:116: TPASS: Child 1918 killed by OOM > memcontrol03.c:224: TPASS: Expect: (A/B memory.current=52588544) ~= 52428800 > memcontrol03.c:129: TFAIL: Expected child 1944 to exit(0), but instead killed by SIGKILL Suggested-by: Cyril Hrubis <chrubis@suse.cz> (Please do this yourself next time) Reviewed-by: Petr Vorel <pvorel@suse.cz> Fixes: https://bugzilla.suse.com/show_bug.cgi?id=1218178 Kind regards, Petr > Signed-off-by: Wei Gao <wegao@suse.com> > --- > testcases/kernel/controllers/memcg/memcontrol03.c | 1 + > 1 file changed, 1 insertion(+) > diff --git a/testcases/kernel/controllers/memcg/memcontrol03.c b/testcases/kernel/controllers/memcg/memcontrol03.c > index 9c6c808e0..e2fc85cc8 100644 > --- a/testcases/kernel/controllers/memcg/memcontrol03.c > +++ b/testcases/kernel/controllers/memcg/memcontrol03.c > @@ -144,6 +144,7 @@ static void alloc_pagecache_in_child(const struct tst_cg_group *const cg, > tst_res(TINFO, "Child %d in %s: Allocating pagecache: %"PRIdPTR, > getpid(), tst_cg_group_name(cg), size); > alloc_pagecache(fd, size); > + SAFE_FSYNC(fd); > TST_CHECKPOINT_WAKE(CHILD_IDLE); > TST_CHECKPOINT_WAIT(TEST_DONE);
Hi Wei, thanks, merged! Kind regards, Petr
diff --git a/testcases/kernel/controllers/memcg/memcontrol03.c b/testcases/kernel/controllers/memcg/memcontrol03.c index 9c6c808e0..e2fc85cc8 100644 --- a/testcases/kernel/controllers/memcg/memcontrol03.c +++ b/testcases/kernel/controllers/memcg/memcontrol03.c @@ -144,6 +144,7 @@ static void alloc_pagecache_in_child(const struct tst_cg_group *const cg, tst_res(TINFO, "Child %d in %s: Allocating pagecache: %"PRIdPTR, getpid(), tst_cg_group_name(cg), size); alloc_pagecache(fd, size); + SAFE_FSYNC(fd); TST_CHECKPOINT_WAKE(CHILD_IDLE); TST_CHECKPOINT_WAIT(TEST_DONE);
Bad IO situation(storage bandwidth ~10MB/sec) will lead background writeback has uncertain progress for dirty page. So system can not reclaim enough memory for new process and finally lead a unexpected OOM. memcontrol03.c:218: TPASS: Expect: (A/B/E memory.current=0) ~= 0 memcontrol03.c:116: TPASS: Child 1918 killed by OOM memcontrol03.c:224: TPASS: Expect: (A/B memory.current=52588544) ~= 52428800 memcontrol03.c:129: TFAIL: Expected child 1944 to exit(0), but instead killed by SIGKILL Signed-off-by: Wei Gao <wegao@suse.com> --- testcases/kernel/controllers/memcg/memcontrol03.c | 1 + 1 file changed, 1 insertion(+)