summaryrefslogtreecommitdiff
path: root/rc/bin/umem
diff options
context:
space:
mode:
authorTaru Karttunen <taruti@taruti.net>2011-03-30 17:14:36 +0300
committerTaru Karttunen <taruti@taruti.net>2011-03-30 17:14:36 +0300
commit2959e1ede0ebc6fdffd7b8660f43c2ce14c9696f (patch)
treef6343b1ce11a8c87251dd27cf3d3e26b50693fa7 /rc/bin/umem
parente463eb40363ff4c68b1d903f4e0cdd0ac1c5977f (diff)
Import sources from 2011-03-30 iso image - rc
Diffstat (limited to 'rc/bin/umem')
-rwxr-xr-xrc/bin/umem33
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