ksh/leak1.sh
2012-02-06 12:36:57 +00:00

48 lines
938 B
Bash

#!/usr/bin/ksh
PATH=/bin:/usr/bin:/usr/sbin:/sbin
getSampleInterval() { return 0; }
typeset -lui count=${1:-4000}
typeset -ilu leak=0
typeset -a curstate=(0 0 0)
typeset -a oldstate=(0 0 0)
vm()
{
typeset size
typeset key unit result=""
while read key size unit; do
case "$key" in
VmSize*) result=${result:+"$result "}$size ;;
VmRSS*) result=${result:+"$result "}$size ;;
VmData*) result=${result:+"$result "}$size ;;
esac
done < /proc/$$/status
echo $result
}
lessequal()
{
typeset -i ret=0
((${curstate[0]} > ${oldstate[0]})) && let ret=1
((${curstate[1]} > ${oldstate[1]})) && let ret=1
((${curstate[2]} > ${oldstate[2]})) && let ret=1
return $ret
}
oldstate=($(vm))
while ((count-- > 0))
do
interval=$(getSampleInterval)
curstate=($(vm))
lessequal || let leak++
oldstate=(${curstate[@]})
done
echo "[${0##*/}: leak count at $leak]"
((leak < 20)) || exit 1