ksh/vmbalance
2012-02-03 09:46:17 +00:00

37 lines
651 B
Awk

#!/usr/bin/awk -f
#
# vmblance Awk script to detect endless growing memory alloctions
# in endless shell loops using in daemonized shell scripts
#
# Usage:
#
# strace -e mmap,mmap2,munmap -o '|./vmbalance' ksh leak1.sh
#
BEGIN {
FS="([[:blank:]]|[[:punct:]])"
ignore=""
sum=0
allocs=0
frees=0
}
/^mmap(2|64)?\(/ {
if ($0 !~ /.*MAP_PRIVATE\|MAP_ANONYMOUS.*/) {
if (ignore)
ignore=ignore "|" $NF
else
ignore=$NF
} else {
sum+=$4
allocs++
}
}
/^munmap(2|64)?\(/ {
if ($0 !~ ignore) {
sum-=$4
frees++
}
}
END {
print sum " bytes with " allocs " chunks allocated and " frees " chunks freed"
}