46 lines
781 B
Bash
46 lines
781 B
Bash
#!/bin/bash
|
|
intv="$1"
|
|
|
|
if [ -z $intv ]
|
|
then
|
|
intv=5
|
|
fi
|
|
|
|
prevhits=0
|
|
prevmisses=0
|
|
|
|
i=0
|
|
|
|
while true
|
|
do
|
|
|
|
stats=`cat /proc/spl/kstat/zfs/arcstats`
|
|
hit=`echo "$stats" | grep -w hits | awk '{ print $3}'`
|
|
miss=`echo "$stats" | grep -w misses | awk '{ print $3}'`
|
|
|
|
|
|
hitrate=$(((hit-prevhits)/intv))
|
|
missrate=$(((miss-prevmisses)/intv))
|
|
|
|
prevhits=$hit
|
|
prevmisses=$miss
|
|
|
|
req=$((hitrate+missrate))
|
|
|
|
if [ "$hitrate" != 0 ] && [ "$req" != 0 ]
|
|
then
|
|
hitper=`echo "scale=2; (($hitrate / $req) * 100)" | bc`
|
|
else
|
|
hitper=0
|
|
fi
|
|
|
|
if [ "$i" -gt 0 ]
|
|
then
|
|
echo "IOPs: $req | ARC cache hit ratio: $hitper % | Hitrate: $hitrate / Missrate: $missrate"
|
|
else
|
|
echo "Loading"
|
|
fi
|
|
|
|
((i++))
|
|
sleep $intv
|
|
done |