34 lines
547 B
Text
34 lines
547 B
Text
|
#!/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
|