37 lines
651 B
Awk
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"
|
|
}
|