Message ID | 20220407224244.1374102-4-yosryahmed@google.com |
---|---|
State | Superseded |
Headers | show |
Series | memcg: introduce per-memcg proactive reclaim | expand |
On Thu, Apr 7, 2022 at 3:43 PM Yosry Ahmed <yosryahmed@google.com> wrote: > > Currently, alloc_anon_noexit() calls alloc_anon() which instantly frees > the allocated memory. alloc_anon_noexit() is usually used with > cg_run_nowait() to run a process in the background that allocates > memory. It makes sense for the background process to keep the memory > allocated and not instantly free it (otherwise there is no point of > running it in the background). > > Signed-off-by: Yosry Ahmed <yosryahmed@google.com> > --- > tools/testing/selftests/cgroup/test_memcontrol.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/tools/testing/selftests/cgroup/test_memcontrol.c b/tools/testing/selftests/cgroup/test_memcontrol.c > index 36ccf2322e21..c1ec71d83af7 100644 > --- a/tools/testing/selftests/cgroup/test_memcontrol.c > +++ b/tools/testing/selftests/cgroup/test_memcontrol.c > @@ -211,13 +211,18 @@ static int alloc_pagecache_50M_noexit(const char *cgroup, void *arg) > static int alloc_anon_noexit(const char *cgroup, void *arg) > { > int ppid = getppid(); > + size_t size = (unsigned long)arg; > + char *buf, *ptr; > > - if (alloc_anon(cgroup, arg)) > - return -1; > + buf = malloc(size); > + for (ptr = buf; ptr < buf + size; ptr += PAGE_SIZE) > + *ptr = 0; > > while (getppid() == ppid) > sleep(1); > > + printf("Freeing buffer"); Hey Andew, I am very sorry but I left a debugging printf there by mistake. If it's no hassle, do you mind removing it from the patch (assuming I won't need to send a v3 anyway)? Thanks! > + free(buf); > return 0; > } > > -- > 2.35.1.1178.g4f1659d476-goog >
On Thu, Apr 7, 2022 at 4:04 PM Yosry Ahmed <yosryahmed@google.com> wrote: > > On Thu, Apr 7, 2022 at 3:43 PM Yosry Ahmed <yosryahmed@google.com> wrote: > > > > Currently, alloc_anon_noexit() calls alloc_anon() which instantly frees > > the allocated memory. alloc_anon_noexit() is usually used with > > cg_run_nowait() to run a process in the background that allocates > > memory. It makes sense for the background process to keep the memory > > allocated and not instantly free it (otherwise there is no point of > > running it in the background). > > > > Signed-off-by: Yosry Ahmed <yosryahmed@google.com> > > --- > > tools/testing/selftests/cgroup/test_memcontrol.c | 9 +++++++-- > > 1 file changed, 7 insertions(+), 2 deletions(-) > > > > diff --git a/tools/testing/selftests/cgroup/test_memcontrol.c b/tools/testing/selftests/cgroup/test_memcontrol.c > > index 36ccf2322e21..c1ec71d83af7 100644 > > --- a/tools/testing/selftests/cgroup/test_memcontrol.c > > +++ b/tools/testing/selftests/cgroup/test_memcontrol.c > > @@ -211,13 +211,18 @@ static int alloc_pagecache_50M_noexit(const char *cgroup, void *arg) > > static int alloc_anon_noexit(const char *cgroup, void *arg) > > { > > int ppid = getppid(); > > + size_t size = (unsigned long)arg; > > + char *buf, *ptr; > > > > - if (alloc_anon(cgroup, arg)) > > - return -1; > > + buf = malloc(size); > > + for (ptr = buf; ptr < buf + size; ptr += PAGE_SIZE) > > + *ptr = 0; > > > > while (getppid() == ppid) > > sleep(1); > > > > + printf("Freeing buffer"); > > Hey Andew, > > I am very sorry but I left a debugging printf there by mistake. If > it's no hassle, do you mind removing it from the patch (assuming I > won't need to send a v3 anyway)? Never mind I already sent v3 and removed it with other fixes. > > Thanks! > > > + free(buf); > > return 0; > > } > > > > -- > > 2.35.1.1178.g4f1659d476-goog > >
diff --git a/tools/testing/selftests/cgroup/test_memcontrol.c b/tools/testing/selftests/cgroup/test_memcontrol.c index 36ccf2322e21..c1ec71d83af7 100644 --- a/tools/testing/selftests/cgroup/test_memcontrol.c +++ b/tools/testing/selftests/cgroup/test_memcontrol.c @@ -211,13 +211,18 @@ static int alloc_pagecache_50M_noexit(const char *cgroup, void *arg) static int alloc_anon_noexit(const char *cgroup, void *arg) { int ppid = getppid(); + size_t size = (unsigned long)arg; + char *buf, *ptr; - if (alloc_anon(cgroup, arg)) - return -1; + buf = malloc(size); + for (ptr = buf; ptr < buf + size; ptr += PAGE_SIZE) + *ptr = 0; while (getppid() == ppid) sleep(1); + printf("Freeing buffer"); + free(buf); return 0; }
Currently, alloc_anon_noexit() calls alloc_anon() which instantly frees the allocated memory. alloc_anon_noexit() is usually used with cg_run_nowait() to run a process in the background that allocates memory. It makes sense for the background process to keep the memory allocated and not instantly free it (otherwise there is no point of running it in the background). Signed-off-by: Yosry Ahmed <yosryahmed@google.com> --- tools/testing/selftests/cgroup/test_memcontrol.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)