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

66 lines
1.1 KiB
Bash

#!/usr/bin/ksh
foo=0
LoopCountForMEMSAP=0
bla=234
typeset -lui count=${1:-4000}
typeset -lui 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
}
fusub()
{
datum=`date +%S`
interval=$((10 - datum%10))
}
fvsub()
{
datum=$(date +%S)
interval=$((10 - datum%10))
}
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
foo=$((foo+1))
if ((count%2 == 0)) ; then
datum=`fusub`
else
datum=$(fvsub)
fi
curstate=($(vm))
lessequal || let leak++
oldstate=(${curstate[@]})
done
echo "[${0##*/}: leak count at $leak]"
((leak < 60)) || exit 1