1824682f6SDavid du Colombier#!/bin/rc 2*a6b1725cSDavid du Colombier# kmem [kernel] - print summary of allocate blocks in running kernel 3*a6b1725cSDavid du Colombierrfork e 4824682f6SDavid du Colombierif(! ~ $#* 0 1){ 5824682f6SDavid du Colombier echo 'usage: kmem [kernel]' >[1=2] 6824682f6SDavid du Colombier exit usage 7824682f6SDavid du Colombier} 8824682f6SDavid du Colombier 9824682f6SDavid du Colombierif(~ $#* 1) 10824682f6SDavid du Colombier binary=$1 11824682f6SDavid du Colombier 12824682f6SDavid du Colombierecho 'kinit(); blocksummary()' | acid -k -lkernel -lpool -lleak $pid $binary | awk ' 13824682f6SDavid du Colombier $1 == "block" { 14824682f6SDavid du Colombier addr=$6 15824682f6SDavid du Colombier size=$3 16824682f6SDavid du Colombier alloc=$4 17824682f6SDavid du Colombier total[alloc] += size 18824682f6SDavid du Colombier count[alloc]++ 19824682f6SDavid du Colombier } 20824682f6SDavid du Colombier $1 == "summary" { 21824682f6SDavid du Colombier alloc=$2 22824682f6SDavid du Colombier cnt=$3 23824682f6SDavid du Colombier size=$4 24824682f6SDavid du Colombier total[alloc] += size 25824682f6SDavid du Colombier count[alloc] += cnt 26824682f6SDavid du Colombier } 27824682f6SDavid du Colombier END{ 28824682f6SDavid du Colombier for(i in count) 29824682f6SDavid du Colombier printf("%6d %11d %s\n", count[i], total[i], i); 30824682f6SDavid du Colombier } 31824682f6SDavid du Colombier' | sort -nr 32