#!/system/bin/bash
#Tweaked by Dorimanx
##
# Show stats for all (initialized) zram devices
# Author: Nitin Gupta
#

echo "Swaps Status"
cat /proc/swaps
sleep 4

echo "ZRAM STATS"
stats=(
	"disksize"
	"num_reads"
	"num_writes"
	"invalid_io"
	"discard"
	"notify_free"
	"zero_pages"
	"orig_data_size"
	"compr_data_size"
	"mem_used_total"
)

function get_stat()
{
	local _dev=$1
	local _stat=$2
	cat $dev/$_stat
}

function show_stat()
{
	local _name=$1
	local _val=$2
	local _unit=$3
	printf "%-16s %11d %s\n" "$_name:" "$_val" "$_unit"
}

#for dev in `find /sys/block -name 'zram*'`; do
find /sys/block -name 'zram*' | while read dev; do
	orig=0
	compr=0
	total=0
	is_init=$(get_stat $dev initstate)

	# Show stats only for initialized devices
	[ "$is_init" == 1 ] || continue

	echo "$dev"
	for stat in "${stats[@]}"; do
		val=$(get_stat $dev $stat)
		eval __$stat=$val	# ex: __disksize=$disksize
		show_stat $stat $val
	done

	[ "$__orig_data_size" == "0" ] && continue; 

	cratio=$(($(($__compr_data_size * 100)) / $__orig_data_size))
	show_stat "avg_compr_ratio" $cratio "%"

	# Memory wasted due to fragmentation, metadata overhead etc.
	ovhd=$(($(($__mem_used_total - $__compr_data_size)) * 100 / $__compr_data_size))
	show_stat "mem_overhead" $ovhd "%"
	echo
done

