Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ec85569a authored by Yang Xu's avatar Yang Xu Committed by Greg Kroah-Hartman
Browse files

selftests/zram01.sh: Fix compression ratio calculation



[ Upstream commit d18da7ec3719559d6e74937266d0416e6c7e0b31 ]

zram01 uses `free -m` to measure zram memory usage. The results are no
sense because they are polluted by all running processes on the system.

We Should only calculate the free memory delta for the current process.
So use the third field of /sys/block/zram<id>/mm_stat to measure memory
usage instead. The file is available since kernel 4.1.

orig_data_size(first): uncompressed size of data stored in this disk.
compr_data_size(second): compressed size of data stored in this disk
mem_used_total(third): the amount of memory allocated for this disk

Also remove useless zram cleanup call in zram_fill_fs and so we don't
need to cleanup zram twice if fails.

Signed-off-by: default avatarYang Xu <xuyang2018.jy@fujitsu.com>
Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 2eed1b06
Loading
Loading
Loading
Loading
+8 −22
Original line number Original line Diff line number Diff line
@@ -42,8 +42,6 @@ zram_algs="lzo"


zram_fill_fs()
zram_fill_fs()
{
{
	local mem_free0=$(free -m | awk 'NR==2 {print $4}')

	for i in $(seq 0 $(($dev_num - 1))); do
	for i in $(seq 0 $(($dev_num - 1))); do
		echo "fill zram$i..."
		echo "fill zram$i..."
		local b=0
		local b=0
@@ -54,29 +52,17 @@ zram_fill_fs()
			b=$(($b + 1))
			b=$(($b + 1))
		done
		done
		echo "zram$i can be filled with '$b' KB"
		echo "zram$i can be filled with '$b' KB"
	done

	local mem_free1=$(free -m | awk 'NR==2 {print $4}')
	local used_mem=$(($mem_free0 - $mem_free1))

	local total_size=0
	for sm in $zram_sizes; do
		local s=$(echo $sm | sed 's/M//')
		total_size=$(($total_size + $s))
	done

	echo "zram used ${used_mem}M, zram disk sizes ${total_size}M"

	local v=$((100 * $total_size / $used_mem))


		local mem_used_total=`awk '{print $3}' "/sys/block/zram$i/mm_stat"`
		local v=$((100 * 1024 * $b / $mem_used_total))
		if [ "$v" -lt 100 ]; then
		if [ "$v" -lt 100 ]; then
			 echo "FAIL compression ratio: 0.$v:1"
			 echo "FAIL compression ratio: 0.$v:1"
			 ERR_CODE=-1
			 ERR_CODE=-1
		zram_cleanup
			 return
			 return
		fi
		fi


		echo "zram compression ratio: $(echo "scale=2; $v / 100 " | bc):1: OK"
		echo "zram compression ratio: $(echo "scale=2; $v / 100 " | bc):1: OK"
	done
}
}


check_prereqs
check_prereqs