ref: cdaa7b899f874f4e0e6c8a04dcf6a5a3a7dfafdf
dir: /rc/bin/umem/
#!/bin/rc
# umem pid [binary] - print summary of allocate blocks in a running process
rfork e
if(! ~ $#* 1 2){
echo 'usage: umem pid [binary]' >[1=2]
exit usage
}
p=$1
binary=()
if(~ $#* 2)
binary=$2
echo 'blocksummary()' | acid -lpool -lleak $p $binary | awk '
$1 == "block" {
addr=$6
size=$3
alloc=$4
total[alloc] += size
count[alloc]++
}
$1 == "summary" {
alloc=$2
cnt=$3
size=$4
total[alloc] += size
count[alloc] += cnt
}
END{
for(i in count)
printf("%6d %11d %s\n", count[i], total[i], i);
}
' | sort -nr