kmem 468 B

123456789101112131415161718192021222324252627282930
  1. #!/bin/rc
  2. if(! ~ $#* 0 1){
  3. echo 'usage: kmem [kernel]' >[1=2]
  4. exit usage
  5. }
  6. if(~ $#* 1)
  7. binary=$1
  8. echo 'kinit(); blocksummary()' | acid -k -lkernel -lpool -lleak $pid $binary | awk '
  9. $1 == "block" {
  10. addr=$6
  11. size=$3
  12. alloc=$4
  13. total[alloc] += size
  14. count[alloc]++
  15. }
  16. $1 == "summary" {
  17. alloc=$2
  18. cnt=$3
  19. size=$4
  20. total[alloc] += size
  21. count[alloc] += cnt
  22. }
  23. END{
  24. for(i in count)
  25. printf("%6d %11d %s\n", count[i], total[i], i);
  26. }
  27. ' | sort -nr