65 lines
1.2 KiB
Plaintext
65 lines
1.2 KiB
Plaintext
|
#!/bin/bash
|
||
|
|
||
|
##
|
||
|
# Show stats for all (initialized) zram devices
|
||
|
# Author: Nitin Gupta
|
||
|
#
|
||
|
|
||
|
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=$(echo "print $__compr_data_size*100/$__orig_data_size" | python | tr -d '\n')
|
||
|
show_stat "avg_compr_ratio" $cratio "%"
|
||
|
|
||
|
# Memory wasted due to fragmentation, metadata overhead etc.
|
||
|
ovhd=$(echo "print ($__mem_used_total - $__compr_data_size) * 100 / \
|
||
|
$__compr_data_size" | python | tr -d '\n')
|
||
|
show_stat "mem_overhead" $ovhd "%"
|
||
|
echo
|
||
|
done
|
||
|
|