@@ -251,6 +251,7 @@ test_mem_stat()
local exp_stat_size_low=$5
local exp_stat_size_up=$6
local check_after_free=$7
+ local kmem_stat_name="${stat_name##*.}"
start_memcg_process $memtypes -s $size
@@ -261,6 +262,15 @@ test_mem_stat()
echo $MEMCG_PROCESS_PID > tasks
signal_memcg_process $size
+ if [ "$kmem_stat_name" = "max_usage_in_bytes" ] ||
+ [ "$kmem_stat_name" = "usage_in_bytes" ]; then
+ local kmem=$(cat "memory.kmem.${kmem_stat_name}")
+ if [ $? -eq 0 ]; then
+ exp_stat_size_low=$((exp_stat_size_low + kmem))
+ exp_stat_size_up=$((exp_stat_size_up + kmem))
+ fi
+ fi
+
if [ "$exp_stat_size_low" = "$exp_stat_size_up" ]; then
check_mem_stat $stat_name $exp_stat_size_low
else
@@ -22,6 +22,10 @@ test_max_usage_in_bytes()
local item="memory.max_usage_in_bytes"
[ $1 -eq 1 ] && item="memory.memsw.max_usage_in_bytes"
local check_after_reset=$2
+ local exp_stat_size_low=$MEM_TO_ALLOC
+ local exp_stat_size_up=$MEM_EXPECTED_UPPER
+ local kmem_stat_name="${item##*.}"
+
start_memcg_process --mmap-anon -s $MEM_TO_ALLOC
warmup
@@ -33,7 +37,16 @@ test_max_usage_in_bytes()
signal_memcg_process $MEM_TO_ALLOC
signal_memcg_process $MEM_TO_ALLOC
- check_mem_stat $item $MEM_TO_ALLOC $MEM_EXPECTED_UPPER
+ if [ "$kmem_stat_name" = "max_usage_in_bytes" ] ||
+ [ "$kmem_stat_name" = "usage_in_bytes" ]; then
+ local kmem=$(cat "memory.kmem.${kmem_stat_name}")
+ if [ $? -eq 0 ]; then
+ exp_stat_size_low=$((exp_stat_size_low + kmem))
+ exp_stat_size_up=$((exp_stat_size_up + kmem))
+ fi
+ fi
+
+ check_mem_stat $item $exp_stat_size_low $exp_stat_size_up
if [ $check_after_reset -eq 1 ]; then
echo 0 > $item
The memory allocated by kernel with __GFP_ACCOUNT is counted as well in memory group usage limits. Add it to fix failures like: memcg_max_usage_in_bytes_test 1 TINFO: Running memcg_process --mmap-anon -s 4194304 memcg_max_usage_in_bytes_test 1 TINFO: Warming up pid: 925811 memcg_max_usage_in_bytes_test 1 TINFO: Process is still here after warm up: 925811 memcg_max_usage_in_bytes_test 1 TFAIL: memory.max_usage_in_bytes is 4333568, 4194304-4325376 expected (where memory.kmem.max_usage_in_bytes:8192) Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> --- .../controllers/memcg/functional/memcg_lib.sh | 10 ++++++++++ .../functional/memcg_max_usage_in_bytes_test.sh | 15 ++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-)