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