All of lore.kernel.org
 help / color / mirror / Atom feed
* [LTP] [PATCH] controllers/memcg: update regression tests to work under cgroup2
@ 2021-11-15 18:26 Luke Nowakowski-Krijger
  2021-11-16 10:03 ` Richard Palethorpe
  0 siblings, 1 reply; 3+ messages in thread
From: Luke Nowakowski-Krijger @ 2021-11-15 18:26 UTC (permalink / raw)
  To: ltp

Some tests no longer make sense under cgroup2, while other tests just
needed to be updated to use new parameters introduced by the cgroup2
interface.

Signed-off-by: Luke Nowakowski-Krijger <luke.nowakowskikrijger@canonical.com>
---
 .../memcg/regression/memcg_regression_test.sh | 41 ++++++++++++++++---
 .../memcg/regression/memcg_test_1.c           | 12 +++++-
 .../memcg/regression/memcg_test_3.c           |  8 ++++
 .../memcg/regression/memcg_test_4.sh          | 18 ++++++--
 4 files changed, 68 insertions(+), 11 deletions(-)

diff --git a/testcases/kernel/controllers/memcg/regression/memcg_regression_test.sh b/testcases/kernel/controllers/memcg/regression/memcg_regression_test.sh
index c91a4069e..ad88d49d1 100755
--- a/testcases/kernel/controllers/memcg/regression/memcg_regression_test.sh
+++ b/testcases/kernel/controllers/memcg/regression/memcg_regression_test.sh
@@ -103,7 +103,12 @@ check_kernel_bug()
 test_1()
 {
 	mkdir memcg/0/
-	echo 0 > memcg/0/memory.limit_in_bytes
+
+	if [ "$cgroup_ver" = "cgroup2" ]; then
+		echo 0 > memcg/0/memory.max
+	else
+		echo 0 > memcg/0/memory.limit_in_bytes
+	fi
 
 	./memcg_test_1
 
@@ -124,6 +129,16 @@ test_1()
 #---------------------------------------------------------------------------
 test_2()
 {
+	# for cgroup2 the default behaivor is to check the new memory limit and
+	# then to start killing processes if oom. This test then doesen't
+	# make sense as we don't expect EBUSY to be returned. The shrink
+	# operation (write to memory.max in cgroup2) would kill the pid1 process
+	# and exit.
+	if [ "$cgroup_ver" = "cgroup2" ]; then
+		tst_resm TCONF "cgroup2 found, skipping test"
+		return
+	fi
+
 	./memcg_test_2 &
 	pid1=$!
 	sleep 1
@@ -177,12 +192,20 @@ test_2()
 test_3()
 {
 	mkdir memcg/0
-	for pid in `cat memcg/tasks`; do
-		echo $pid > memcg/0/tasks 2> /dev/null
+	if [ "$cgroup_ver" = "cgroup2" ]; then
+		memcg_procs=memcg/cgroup.procs
+		memcg_subprocs=memcg/0/cgroup.procs
+	else
+		memcg_procs=memcg/tasks
+		memcg_subprocs=memcg/0/tasks
+	fi
+
+	for pid in `cat $memcg_procs`; do
+		echo $pid > $memcg_subprocs 2> /dev/null
 	done
 
-	for pid in `cat memcg/0/tasks`; do
-		echo $pid > memcg/tasks 2> /dev/null
+	for pid in `cat $memcg_subprocs`; do
+		echo $pid > $memcg_procs 2> /dev/null
 	done
 	rmdir memcg/0
 
@@ -218,13 +241,19 @@ test_4()
 }
 
 # main
+cgroup_ver=$(grep "/sys/fs/cgroup" /proc/mounts | cut -d' ' -f1)
 failed=0
 mkdir memcg/
 
 for cur in $(seq 1 $TST_TOTAL); do
 	export TST_COUNT=$cur
 
-	mount -t cgroup -o memory xxx memcg/
+	if [ "$cgroup_ver" = "cgroup2" ]; then
+		mount -t cgroup2 xxx memcg/
+	else
+		mount -t cgroup -o memory xxx memcg/
+	fi
+
 	if [ $? -ne 0 ]; then
 		tst_resm TFAIL "failed to mount memory subsystem"
 		failed=1
diff --git a/testcases/kernel/controllers/memcg/regression/memcg_test_1.c b/testcases/kernel/controllers/memcg/regression/memcg_test_1.c
index c7fb948fe..b9277e633 100644
--- a/testcases/kernel/controllers/memcg/regression/memcg_test_1.c
+++ b/testcases/kernel/controllers/memcg/regression/memcg_test_1.c
@@ -33,6 +33,16 @@
 
 #define FORKED_PROC_COUNT	10
 
+static int open_cgroup_procs(void)
+{
+	int fd = open("memcg/0/tasks", O_WRONLY);
+	if (fd >= 0)
+		return fd;
+
+	fd = open("memcg/0/cgroup.procs", O_WRONLY);
+	return fd;
+}
+
 int main(void)
 {
 	char buf[10];
@@ -40,7 +50,7 @@ int main(void)
 	int loop;
 	int pid;
 	int size = getpagesize();
-	int fd = open("memcg/0/tasks", O_WRONLY);
+	int fd = open_cgroup_procs();
 
 	if (fd < 0)
 		return 1;
diff --git a/testcases/kernel/controllers/memcg/regression/memcg_test_3.c b/testcases/kernel/controllers/memcg/regression/memcg_test_3.c
index 75a6e1545..d5531fe87 100644
--- a/testcases/kernel/controllers/memcg/regression/memcg_test_3.c
+++ b/testcases/kernel/controllers/memcg/regression/memcg_test_3.c
@@ -66,6 +66,14 @@ static void setup(void)
 	SAFE_MKDIR(MNTPOINT, 0644);
 
 	ret = mount("memcg", MNTPOINT, "cgroup", 0, "memory");
+
+	if (!ret) {
+		mount_flag = 1;
+		return;
+	}
+
+	ret = mount("memcg", MNTPOINT, "cgroup2", 0, NULL);
+
 	if (ret) {
 		if (errno == ENOENT)
 			tst_brk(TCONF | TERRNO, "memcg not supported");
diff --git a/testcases/kernel/controllers/memcg/regression/memcg_test_4.sh b/testcases/kernel/controllers/memcg/regression/memcg_test_4.sh
index 620031366..287864b81 100755
--- a/testcases/kernel/controllers/memcg/regression/memcg_test_4.sh
+++ b/testcases/kernel/controllers/memcg/regression/memcg_test_4.sh
@@ -22,9 +22,19 @@
 ##                                                                            ##
 ################################################################################
 
+cgroup_ver=$(grep "/sys/fs/cgroup" /proc/mounts | cut -d' ' -f1)
+
+if [ "$cgroup_ver" = 'cgroup2' ]; then
+	cgroup_proc=cgroup.procs
+	cgroup_mem_limit=memory.max
+else
+	cgroup_proc=tasks
+	cgroup_mem_limit=memory.limit_in_bytes
+fi
+
 # attach current task to memcg/0/
 mkdir memcg/0
-echo $$ > memcg/0/tasks
+echo $$ > memcg/0/${cgroup_proc}
 
 ./memcg_test_4 &
 pid=$!
@@ -35,13 +45,13 @@ sleep 1
 sleep 1
 
 # shrink memory, and then 80M will be swapped
-echo 40M > memcg/0/memory.limit_in_bytes
+echo 40M > memcg/0/${cgroup_mem_limit}
 
 # turn off swap, and swapoff will be killed
 swapoff -a
 sleep 1
-echo $pid > memcg/tasks 2> /dev/null
-echo $$ > memcg/tasks 2> /dev/null
+echo $pid > memcg/${cgroup_proc} 2> /dev/null
+echo $$ > memcg/${cgroup_proc} 2> /dev/null
 
 # now remove the cgroup
 rmdir memcg/0
-- 
2.32.0


-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [LTP] [PATCH] controllers/memcg: update regression tests to work under cgroup2
  2021-11-15 18:26 [LTP] [PATCH] controllers/memcg: update regression tests to work under cgroup2 Luke Nowakowski-Krijger
@ 2021-11-16 10:03 ` Richard Palethorpe
  2021-11-17 21:23   ` Luke Nowakowski-Krijger
  0 siblings, 1 reply; 3+ messages in thread
From: Richard Palethorpe @ 2021-11-16 10:03 UTC (permalink / raw)
  To: Luke Nowakowski-Krijger; +Cc: ltp

Hello Luke,

Luke Nowakowski-Krijger <luke.nowakowskikrijger@canonical.com> writes:

> Some tests no longer make sense under cgroup2, while other tests just
> needed to be updated to use new parameters introduced by the cgroup2
> interface.
>
> Signed-off-by: Luke Nowakowski-Krijger <luke.nowakowskikrijger@canonical.com>
> ---
>  .../memcg/regression/memcg_regression_test.sh | 41 ++++++++++++++++---
>  .../memcg/regression/memcg_test_1.c           | 12 +++++-
>  .../memcg/regression/memcg_test_3.c           |  8 ++++
>  .../memcg/regression/memcg_test_4.sh          | 18 ++++++--
>  4 files changed, 68 insertions(+), 11 deletions(-)
>
> diff --git a/testcases/kernel/controllers/memcg/regression/memcg_regression_test.sh b/testcases/kernel/controllers/memcg/regression/memcg_regression_test.sh
> index c91a4069e..ad88d49d1 100755
> --- a/testcases/kernel/controllers/memcg/regression/memcg_regression_test.sh
> +++ b/testcases/kernel/controllers/memcg/regression/memcg_regression_test.sh
> @@ -103,7 +103,12 @@ check_kernel_bug()
>  test_1()
>  {
>  	mkdir memcg/0/
> -	echo 0 > memcg/0/memory.limit_in_bytes
> +
> +	if [ "$cgroup_ver" = "cgroup2" ]; then
> +		echo 0 > memcg/0/memory.max
> +	else
> +		echo 0 > memcg/0/memory.limit_in_bytes
> +	fi
>  
>  	./memcg_test_1
>  
> @@ -124,6 +129,16 @@ test_1()
>  #---------------------------------------------------------------------------
>  test_2()
>  {
> +	# for cgroup2 the default behaivor is to check the new memory limit and
> +	# then to start killing processes if oom. This test then doesen't
> +	# make sense as we don't expect EBUSY to be returned. The shrink
> +	# operation (write to memory.max in cgroup2) would kill the pid1 process
> +	# and exit.
> +	if [ "$cgroup_ver" = "cgroup2" ]; then
> +		tst_resm TCONF "cgroup2 found, skipping test"
> +		return
> +	fi
> +
>  	./memcg_test_2 &
>  	pid1=$!
>  	sleep 1
> @@ -177,12 +192,20 @@ test_2()
>  test_3()
>  {
>  	mkdir memcg/0
> -	for pid in `cat memcg/tasks`; do
> -		echo $pid > memcg/0/tasks 2> /dev/null
> +	if [ "$cgroup_ver" = "cgroup2" ]; then
> +		memcg_procs=memcg/cgroup.procs
> +		memcg_subprocs=memcg/0/cgroup.procs
> +	else
> +		memcg_procs=memcg/tasks
> +		memcg_subprocs=memcg/0/tasks
> +	fi
> +
> +	for pid in `cat $memcg_procs`; do
> +		echo $pid > $memcg_subprocs 2> /dev/null
>  	done
>  
> -	for pid in `cat memcg/0/tasks`; do
> -		echo $pid > memcg/tasks 2> /dev/null
> +	for pid in `cat $memcg_subprocs`; do
> +		echo $pid > $memcg_procs 2> /dev/null
>  	done
>  	rmdir memcg/0
>  
> @@ -218,13 +241,19 @@ test_4()
>  }
>  
>  # main
> +cgroup_ver=$(grep "/sys/fs/cgroup" /proc/mounts | cut -d' ' -f1)
>  failed=0
>  mkdir memcg/
>  
>  for cur in $(seq 1 $TST_TOTAL); do
>  	export TST_COUNT=$cur
>  
> -	mount -t cgroup -o memory xxx memcg/
> +	if [ "$cgroup_ver" = "cgroup2" ]; then
> +		mount -t cgroup2 xxx memcg/
> +	else
> +		mount -t cgroup -o memory xxx memcg/
> +	fi
> +
>  	if [ $? -ne 0 ]; then
>  		tst_resm TFAIL "failed to mount memory subsystem"
>  		failed=1
> diff --git a/testcases/kernel/controllers/memcg/regression/memcg_test_1.c b/testcases/kernel/controllers/memcg/regression/memcg_test_1.c
> index c7fb948fe..b9277e633 100644
> --- a/testcases/kernel/controllers/memcg/regression/memcg_test_1.c
> +++ b/testcases/kernel/controllers/memcg/regression/memcg_test_1.c
> @@ -33,6 +33,16 @@
>  
>  #define FORKED_PROC_COUNT	10
>  
> +static int open_cgroup_procs(void)
> +{
> +	int fd = open("memcg/0/tasks", O_WRONLY);
> +	if (fd >= 0)
> +		return fd;
> +
> +	fd = open("memcg/0/cgroup.procs", O_WRONLY);
> +	return fd;
> +}
> +
>  int main(void)
>  {
>  	char buf[10];
> @@ -40,7 +50,7 @@ int main(void)
>  	int loop;
>  	int pid;
>  	int size = getpagesize();
> -	int fd = open("memcg/0/tasks", O_WRONLY);
> +	int fd = open_cgroup_procs();
>  
>  	if (fd < 0)
>  		return 1;
> diff --git a/testcases/kernel/controllers/memcg/regression/memcg_test_3.c b/testcases/kernel/controllers/memcg/regression/memcg_test_3.c
> index 75a6e1545..d5531fe87 100644
> --- a/testcases/kernel/controllers/memcg/regression/memcg_test_3.c
> +++ b/testcases/kernel/controllers/memcg/regression/memcg_test_3.c
> @@ -66,6 +66,14 @@ static void setup(void)
>  	SAFE_MKDIR(MNTPOINT, 0644);
>  
>  	ret = mount("memcg", MNTPOINT, "cgroup", 0, "memory");
> +
> +	if (!ret) {
> +		mount_flag = 1;
> +		return;
> +	}
> +
> +	ret = mount("memcg", MNTPOINT, "cgroup2", 0, NULL);
> +
>  	if (ret) {
>  		if (errno == ENOENT)
>  			tst_brk(TCONF | TERRNO, "memcg not supported");
> diff --git a/testcases/kernel/controllers/memcg/regression/memcg_test_4.sh b/testcases/kernel/controllers/memcg/regression/memcg_test_4.sh
> index 620031366..287864b81 100755
> --- a/testcases/kernel/controllers/memcg/regression/memcg_test_4.sh
> +++ b/testcases/kernel/controllers/memcg/regression/memcg_test_4.sh
> @@ -22,9 +22,19 @@
>  ##                                                                            ##
>  ################################################################################
>  
> +cgroup_ver=$(grep "/sys/fs/cgroup" /proc/mounts | cut -d' ' -f1)

Unfortunately this doesn't work when both V1 and V2 hierarchies are
mounted. You need to check that the memory controller is enabled on
V2. Also it's possible to mount CGroups at alternate locations.

Please see the recent patch from Masayoshi:
https://patchwork.ozlabs.org/project/ltp/patch/20211113041706.12893-1-msys.mizuma@gmail.com/

> +
> +if [ "$cgroup_ver" = 'cgroup2' ]; then
> +	cgroup_proc=cgroup.procs
> +	cgroup_mem_limit=memory.max
> +else
> +	cgroup_proc=tasks
> +	cgroup_mem_limit=memory.limit_in_bytes
> +fi
> +
>  # attach current task to memcg/0/
>  mkdir memcg/0
> -echo $$ > memcg/0/tasks
> +echo $$ > memcg/0/${cgroup_proc}
>  
>  ./memcg_test_4 &
>  pid=$!
> @@ -35,13 +45,13 @@ sleep 1
>  sleep 1
>  
>  # shrink memory, and then 80M will be swapped
> -echo 40M > memcg/0/memory.limit_in_bytes
> +echo 40M > memcg/0/${cgroup_mem_limit}
>  
>  # turn off swap, and swapoff will be killed
>  swapoff -a
>  sleep 1
> -echo $pid > memcg/tasks 2> /dev/null
> -echo $$ > memcg/tasks 2> /dev/null
> +echo $pid > memcg/${cgroup_proc} 2> /dev/null
> +echo $$ > memcg/${cgroup_proc} 2> /dev/null
>  
>  # now remove the cgroup
>  rmdir memcg/0
> -- 
> 2.32.0


-- 
Thank you,
Richard.

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [LTP] [PATCH] controllers/memcg: update regression tests to work under cgroup2
  2021-11-16 10:03 ` Richard Palethorpe
@ 2021-11-17 21:23   ` Luke Nowakowski-Krijger
  0 siblings, 0 replies; 3+ messages in thread
From: Luke Nowakowski-Krijger @ 2021-11-17 21:23 UTC (permalink / raw)
  To: rpalethorpe; +Cc: ltp


[-- Attachment #1.1: Type: text/plain, Size: 7468 bytes --]

Hi Richard,

I see what you mean, it would not work if both hierarchies exist. I will do
something similar to the patch you linked as that has cleared up a lot of
my misunderstandings about it. While I am there I will update the tests to
use the newer test APIs.

Thanks for the review.

- Luke

On Tue, Nov 16, 2021 at 2:09 AM Richard Palethorpe <rpalethorpe@suse.de>
wrote:

> Hello Luke,
>
> Luke Nowakowski-Krijger <luke.nowakowskikrijger@canonical.com> writes:
>
> > Some tests no longer make sense under cgroup2, while other tests just
> > needed to be updated to use new parameters introduced by the cgroup2
> > interface.
> >
> > Signed-off-by: Luke Nowakowski-Krijger <
> luke.nowakowskikrijger@canonical.com>
> > ---
> >  .../memcg/regression/memcg_regression_test.sh | 41 ++++++++++++++++---
> >  .../memcg/regression/memcg_test_1.c           | 12 +++++-
> >  .../memcg/regression/memcg_test_3.c           |  8 ++++
> >  .../memcg/regression/memcg_test_4.sh          | 18 ++++++--
> >  4 files changed, 68 insertions(+), 11 deletions(-)
> >
> > diff --git
> a/testcases/kernel/controllers/memcg/regression/memcg_regression_test.sh
> b/testcases/kernel/controllers/memcg/regression/memcg_regression_test.sh
> > index c91a4069e..ad88d49d1 100755
> > ---
> a/testcases/kernel/controllers/memcg/regression/memcg_regression_test.sh
> > +++
> b/testcases/kernel/controllers/memcg/regression/memcg_regression_test.sh
> > @@ -103,7 +103,12 @@ check_kernel_bug()
> >  test_1()
> >  {
> >       mkdir memcg/0/
> > -     echo 0 > memcg/0/memory.limit_in_bytes
> > +
> > +     if [ "$cgroup_ver" = "cgroup2" ]; then
> > +             echo 0 > memcg/0/memory.max
> > +     else
> > +             echo 0 > memcg/0/memory.limit_in_bytes
> > +     fi
> >
> >       ./memcg_test_1
> >
> > @@ -124,6 +129,16 @@ test_1()
> >
> #---------------------------------------------------------------------------
> >  test_2()
> >  {
> > +     # for cgroup2 the default behaivor is to check the new memory
> limit and
> > +     # then to start killing processes if oom. This test then doesen't
> > +     # make sense as we don't expect EBUSY to be returned. The shrink
> > +     # operation (write to memory.max in cgroup2) would kill the pid1
> process
> > +     # and exit.
> > +     if [ "$cgroup_ver" = "cgroup2" ]; then
> > +             tst_resm TCONF "cgroup2 found, skipping test"
> > +             return
> > +     fi
> > +
> >       ./memcg_test_2 &
> >       pid1=$!
> >       sleep 1
> > @@ -177,12 +192,20 @@ test_2()
> >  test_3()
> >  {
> >       mkdir memcg/0
> > -     for pid in `cat memcg/tasks`; do
> > -             echo $pid > memcg/0/tasks 2> /dev/null
> > +     if [ "$cgroup_ver" = "cgroup2" ]; then
> > +             memcg_procs=memcg/cgroup.procs
> > +             memcg_subprocs=memcg/0/cgroup.procs
> > +     else
> > +             memcg_procs=memcg/tasks
> > +             memcg_subprocs=memcg/0/tasks
> > +     fi
> > +
> > +     for pid in `cat $memcg_procs`; do
> > +             echo $pid > $memcg_subprocs 2> /dev/null
> >       done
> >
> > -     for pid in `cat memcg/0/tasks`; do
> > -             echo $pid > memcg/tasks 2> /dev/null
> > +     for pid in `cat $memcg_subprocs`; do
> > +             echo $pid > $memcg_procs 2> /dev/null
> >       done
> >       rmdir memcg/0
> >
> > @@ -218,13 +241,19 @@ test_4()
> >  }
> >
> >  # main
> > +cgroup_ver=$(grep "/sys/fs/cgroup" /proc/mounts | cut -d' ' -f1)
> >  failed=0
> >  mkdir memcg/
> >
> >  for cur in $(seq 1 $TST_TOTAL); do
> >       export TST_COUNT=$cur
> >
> > -     mount -t cgroup -o memory xxx memcg/
> > +     if [ "$cgroup_ver" = "cgroup2" ]; then
> > +             mount -t cgroup2 xxx memcg/
> > +     else
> > +             mount -t cgroup -o memory xxx memcg/
> > +     fi
> > +
> >       if [ $? -ne 0 ]; then
> >               tst_resm TFAIL "failed to mount memory subsystem"
> >               failed=1
> > diff --git
> a/testcases/kernel/controllers/memcg/regression/memcg_test_1.c
> b/testcases/kernel/controllers/memcg/regression/memcg_test_1.c
> > index c7fb948fe..b9277e633 100644
> > --- a/testcases/kernel/controllers/memcg/regression/memcg_test_1.c
> > +++ b/testcases/kernel/controllers/memcg/regression/memcg_test_1.c
> > @@ -33,6 +33,16 @@
> >
> >  #define FORKED_PROC_COUNT    10
> >
> > +static int open_cgroup_procs(void)
> > +{
> > +     int fd = open("memcg/0/tasks", O_WRONLY);
> > +     if (fd >= 0)
> > +             return fd;
> > +
> > +     fd = open("memcg/0/cgroup.procs", O_WRONLY);
> > +     return fd;
> > +}
> > +
> >  int main(void)
> >  {
> >       char buf[10];
> > @@ -40,7 +50,7 @@ int main(void)
> >       int loop;
> >       int pid;
> >       int size = getpagesize();
> > -     int fd = open("memcg/0/tasks", O_WRONLY);
> > +     int fd = open_cgroup_procs();
> >
> >       if (fd < 0)
> >               return 1;
> > diff --git
> a/testcases/kernel/controllers/memcg/regression/memcg_test_3.c
> b/testcases/kernel/controllers/memcg/regression/memcg_test_3.c
> > index 75a6e1545..d5531fe87 100644
> > --- a/testcases/kernel/controllers/memcg/regression/memcg_test_3.c
> > +++ b/testcases/kernel/controllers/memcg/regression/memcg_test_3.c
> > @@ -66,6 +66,14 @@ static void setup(void)
> >       SAFE_MKDIR(MNTPOINT, 0644);
> >
> >       ret = mount("memcg", MNTPOINT, "cgroup", 0, "memory");
> > +
> > +     if (!ret) {
> > +             mount_flag = 1;
> > +             return;
> > +     }
> > +
> > +     ret = mount("memcg", MNTPOINT, "cgroup2", 0, NULL);
> > +
> >       if (ret) {
> >               if (errno == ENOENT)
> >                       tst_brk(TCONF | TERRNO, "memcg not supported");
> > diff --git
> a/testcases/kernel/controllers/memcg/regression/memcg_test_4.sh
> b/testcases/kernel/controllers/memcg/regression/memcg_test_4.sh
> > index 620031366..287864b81 100755
> > --- a/testcases/kernel/controllers/memcg/regression/memcg_test_4.sh
> > +++ b/testcases/kernel/controllers/memcg/regression/memcg_test_4.sh
> > @@ -22,9 +22,19 @@
> >  ##
>       ##
> >
> ################################################################################
> >
> > +cgroup_ver=$(grep "/sys/fs/cgroup" /proc/mounts | cut -d' ' -f1)
>
> Unfortunately this doesn't work when both V1 and V2 hierarchies are
> mounted. You need to check that the memory controller is enabled on
> V2. Also it's possible to mount CGroups at alternate locations.
>
> Please see the recent patch from Masayoshi:
>
> https://patchwork.ozlabs.org/project/ltp/patch/20211113041706.12893-1-msys.mizuma@gmail.com/
>
> > +
> > +if [ "$cgroup_ver" = 'cgroup2' ]; then
> > +     cgroup_proc=cgroup.procs
> > +     cgroup_mem_limit=memory.max
> > +else
> > +     cgroup_proc=tasks
> > +     cgroup_mem_limit=memory.limit_in_bytes
> > +fi
> > +
> >  # attach current task to memcg/0/
> >  mkdir memcg/0
> > -echo $$ > memcg/0/tasks
> > +echo $$ > memcg/0/${cgroup_proc}
> >
> >  ./memcg_test_4 &
> >  pid=$!
> > @@ -35,13 +45,13 @@ sleep 1
> >  sleep 1
> >
> >  # shrink memory, and then 80M will be swapped
> > -echo 40M > memcg/0/memory.limit_in_bytes
> > +echo 40M > memcg/0/${cgroup_mem_limit}
> >
> >  # turn off swap, and swapoff will be killed
> >  swapoff -a
> >  sleep 1
> > -echo $pid > memcg/tasks 2> /dev/null
> > -echo $$ > memcg/tasks 2> /dev/null
> > +echo $pid > memcg/${cgroup_proc} 2> /dev/null
> > +echo $$ > memcg/${cgroup_proc} 2> /dev/null
> >
> >  # now remove the cgroup
> >  rmdir memcg/0
> > --
> > 2.32.0
>
>
> --
> Thank you,
> Richard.
>

[-- Attachment #1.2: Type: text/html, Size: 10177 bytes --]

[-- Attachment #2: Type: text/plain, Size: 60 bytes --]


-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-11-17 21:23 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-15 18:26 [LTP] [PATCH] controllers/memcg: update regression tests to work under cgroup2 Luke Nowakowski-Krijger
2021-11-16 10:03 ` Richard Palethorpe
2021-11-17 21:23   ` Luke Nowakowski-Krijger

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.