xref: /aosp_15_r20/external/ltp/testcases/kernel/controllers/memcg/functional/memcg_stat_test.sh (revision 49cdfc7efb34551c7342be41a7384b9c40d7cab7)
1#! /bin/sh
2# SPDX-License-Identifier: GPL-2.0-or-later
3# Copyright (c) 2012 FUJITSU LIMITED
4# Copyright (c) 2014-2018 Linux Test Project
5# Copyright (c) 2021 Joerg Vehlow <[email protected]>
6#
7# Author: Peng Haitao <[email protected]>
8
9MEMCG_TESTFUNC=test
10TST_CNT=8
11
12
13test1()
14{
15	tst_res TINFO "Test cache"
16	test_mem_stat "--shm -k 3" $PAGESIZES $PAGESIZES "cache" $PAGESIZES $PAGESIZES false
17}
18
19test2()
20{
21	tst_res TINFO "Test mapped_file"
22	test_mem_stat "--mmap-file" $PAGESIZES $PAGESIZES \
23		"mapped_file" $PAGESIZES $PAGESIZES false
24}
25
26test3()
27{
28	tst_res TINFO "Test unevictable with MAP_LOCKED"
29	test_mem_stat "--mmap-lock1" $PAGESIZES $PAGESIZES \
30		"unevictable" $PAGESIZES $PAGESIZES false
31}
32
33test4()
34{
35	tst_res TINFO "Test unevictable with mlock"
36	test_mem_stat "--mmap-lock2" $PAGESIZES $PAGESIZES \
37		"unevictable" $PAGESIZES $PAGESIZES false
38}
39
40test5()
41{
42	tst_res TINFO "Test hierarchical_memory_limit with enabling hierarchical accounting"
43	echo 1 > memory.use_hierarchy
44
45	local limit=$(memcg_adjust_limit_for_kmem $PAGESIZES)
46
47	ROD mkdir subgroup
48	EXPECT_PASS echo $limit \> memory.limit_in_bytes
49	EXPECT_PASS echo $((limit + PAGESIZES * 2)) \> subgroup/memory.limit_in_bytes
50
51	cd subgroup
52	check_mem_stat "hierarchical_memory_limit" $limit
53
54	cd ..
55	rmdir subgroup
56}
57
58test6()
59{
60	tst_res TINFO "Test hierarchical_memory_limit with disabling hierarchical accounting"
61	memcg_require_hierarchy_disabled
62
63	ROD echo 0 \> memory.use_hierarchy
64
65	ROD mkdir subgroup
66	EXPECT_PASS echo $PAGESIZES \> memory.limit_in_bytes
67	EXPECT_PASS echo $((PAGESIZES * 2)) \> subgroup/memory.limit_in_bytes
68
69	cd subgroup
70	check_mem_stat "hierarchical_memory_limit" $((PAGESIZES * 2))
71
72	cd ..
73	rmdir subgroup
74}
75
76test7()
77{
78	tst_res TINFO "Test hierarchical_memsw_limit with enabling hierarchical accounting"
79	memcg_require_memsw
80
81	ROD echo 1 \> memory.use_hierarchy
82
83	ROD mkdir subgroup
84	EXPECT_PASS echo $PAGESIZES \> memory.limit_in_bytes
85	EXPECT_PASS echo $PAGESIZES \> memory.memsw.limit_in_bytes
86	EXPECT_PASS echo $((PAGESIZES * 2)) \> subgroup/memory.limit_in_bytes
87	EXPECT_PASS echo $((PAGESIZES * 2)) \> subgroup/memory.memsw.limit_in_bytes
88
89	cd subgroup
90	check_mem_stat "hierarchical_memsw_limit" $PAGESIZES
91
92	cd ..
93	rmdir subgroup
94}
95
96test8()
97{
98	tst_res TINFO "Test hierarchical_memsw_limit with disabling hierarchical accounting"
99	memcg_require_memsw
100	memcg_require_hierarchy_disabled
101
102	ROD echo 0 \> memory.use_hierarchy
103
104	ROD mkdir subgroup
105	EXPECT_PASS echo $PAGESIZES \> memory.limit_in_bytes
106	EXPECT_PASS echo $PAGESIZES \> memory.memsw.limit_in_bytes
107	EXPECT_PASS echo $((PAGESIZES * 2)) \> subgroup/memory.limit_in_bytes
108	EXPECT_PASS echo $((PAGESIZES * 2)) \> subgroup/memory.memsw.limit_in_bytes
109
110	cd subgroup
111	check_mem_stat "hierarchical_memsw_limit" $((PAGESIZES * 2))
112
113	cd ..
114	rmdir subgroup
115}
116
117. memcg_lib.sh
118tst_run
119