123456789101112131415161718192021222324252627282930313233 |
- #!/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
|