diff options
author | Taru Karttunen <taruti@taruti.net> | 2011-03-30 17:14:36 +0300 |
---|---|---|
committer | Taru Karttunen <taruti@taruti.net> | 2011-03-30 17:14:36 +0300 |
commit | 2959e1ede0ebc6fdffd7b8660f43c2ce14c9696f (patch) | |
tree | f6343b1ce11a8c87251dd27cf3d3e26b50693fa7 /rc/bin/umem | |
parent | e463eb40363ff4c68b1d903f4e0cdd0ac1c5977f (diff) |
Import sources from 2011-03-30 iso image - rc
Diffstat (limited to 'rc/bin/umem')
-rwxr-xr-x | rc/bin/umem | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/rc/bin/umem b/rc/bin/umem new file mode 100755 index 000000000..2886b1aaa --- /dev/null +++ b/rc/bin/umem @@ -0,0 +1,33 @@ +#!/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 |