How to convert Kernel Allocator Superpage to bytes

From Wiki-UX.info
Jump to: navigation, search

The following AWK script (kas.awk) can be used to translate the kmeminfo -kas command output to bytes for easier reading.

BEGIN {
TCOUNT=0
TFREE=0
printf "     Size     sp_pool_head_t        count                    free                 highest                      spl_next\n"
}
$2 ~ /KB/ {
   split ($2, a, "KB")
   BSIZE=a[1] * 1024
   COUNT=$4 * BSIZE
   FREE=$5 * BSIZE
   HIGHEST=$6 * BSIZE
   TCOUNT=TCOUNT + COUNT; TFREE=TFREE + FREE
   printf "%3d %5s %18s %12d (%5d MB) %12d (%5d MB) %12d (%5d MB) %18s\n", $1, $2, $3, COUNT, COUNT / 1048576, FREE, FREE / 1048576, HIGHEST, HIGHEST / 1048576, $7
   }
$2 ~ /MB/ {
   split ($2, a, "MB")
   BSIZE=a[1] * 1048576
   COUNT=$4 * BSIZE
   FREE=$5 * BSIZE
   HIGHEST=$6 * BSIZE
   TCOUNT=TCOUNT + COUNT; TFREE=TFREE + FREE
   printf "%3d %5s %18s %12d (%5d MB) %12d (%5d MB) %12d (%5d MB) %18s\n", $1, $2, $3, COUNT, COUNT / 1048576, FREE, FREE / 1048576, HIGHEST, HIGHEST / 1048576, $7
   }
$2 ~ /GB/ {
   split ($2, a, "GB")
   BSIZE=a[1] * 1073741824
   COUNT=$4 * BSIZE
   FREE=$5 * BSIZE
   HIGHEST=$6 * BSIZE
   TCOUNT=TCOUNT + COUNT; TFREE=TFREE + FREE
   printf "%3d %5s %18s %12d (%5d MB) %12d (%5d MB) %12d (%5d MB) %18s\n", $1, $2, $3, COUNT, COUNT / 1048576, FREE, FREE / 1048576, HIGHEST, HIGHEST / 1048576, $7
   }
END {printf "\nTOTAL                        %12s (%5d MB) %12s (%5d MB)\n", TCOUNT, TCOUNT / 1048576, TFREE, TFREE / 1048576}

Example

# awk -f kas.awk test1
     Size     sp_pool_head_t        count                    free                 highest                      spl_next
  0   4KB 0xe000000104ddb5f0            0 (    0 MB)     10043392 (    9 MB)     10125312 (    9 MB) 0xe000000150007000
  1   8KB 0xe000000104ddb618            0 (    0 MB)      9805824 (    9 MB)     17121280 (   16 MB) 0xe000000167706000
  2  16KB 0xe000000104ddb640            0 (    0 MB)     37060608 (   35 MB)    107118592 (  102 MB) 0xe0000001bbd58000
  3  32KB 0xe000000104ddb668            0 (    0 MB)     63995904 (   61 MB)     96665600 (   92 MB) 0xe0000001b5c78000
  4  64KB 0xe000000104ddb690       458752 (    0 MB)     49152000 (   46 MB)     86704128 (   82 MB) 0xe000000427e20000
  5 128KB 0xe000000104ddb6b8            0 (    0 MB)     81788928 (   78 MB)    130023424 (  124 MB) 0xe000000421080000
  6 256KB 0xe000000104ddb6e0     20447232 (   19 MB)     71303168 (   68 MB)    135528448 (  129 MB) 0xe0000004220c0000
  7 512KB 0xe000000104ddb708            0 (    0 MB)     18874368 (   18 MB)     82837504 (   79 MB) 0xe000000412f80000
  8   1MB 0xe000000104ddb730    210763776 (  201 MB)      1048576 (    1 MB)     20971520 (   20 MB) 0xe0000001e6300000
  9   2MB 0xe000000104ddb758            0 (    0 MB)            0 (    0 MB)     50331648 (   48 MB) 0xe000000104ddb758
 10   4MB 0xe000000104ddb780    121634816 (  116 MB)            0 (    0 MB)     29360128 (   28 MB) 0xe000000104ddb780
 11   8MB 0xe000000104ddb7a8            0 (    0 MB)            0 (    0 MB)     41943040 (   40 MB) 0xe000000104ddb7a8
 12  16MB 0xe000000104ddb7d0    100663296 (   96 MB)            0 (    0 MB)     50331648 (   48 MB) 0xe000000104ddb7d0
 13  32MB 0xe000000104ddb7f8            0 (    0 MB)            0 (    0 MB)     67108864 (   64 MB) 0xe000000104ddb7f8
 14  64MB 0xe000000104ddb820    671088640 (  640 MB)            0 (    0 MB)            0 (    0 MB) 0xe000000104ddb820

TOTAL                         1.12506e+09 ( 1072 MB)  3.43073e+08 (  327 MB)

# awk -f kas.awk test2
     Size     sp_pool_head_t        count                    free                 highest                      spl_next
  0   4KB 0xe000000104ddb0f0            0 (    0 MB)    225603584 (  215 MB)    558292992 (  532 MB) 0xe00000040913e000
  1   8KB 0xe000000104ddb118            0 (    0 MB)    349331456 (  333 MB)    522878976 (  498 MB) 0xe0000001b3372000
  2  16KB 0xe000000104ddb140            0 (    0 MB)    416710656 (  397 MB)    494993408 (  472 MB) 0xe00000042ba34000
  3  32KB 0xe000000104ddb168            0 (    0 MB)    403636224 (  384 MB)    403636224 (  384 MB) 0xe0000001e8ad0000
  4  64KB 0xe000000104ddb190            0 (    0 MB)    138477568 (  132 MB)    242745344 (  231 MB) 0xe000000188560000
  5 128KB 0xe000000104ddb1b8            0 (    0 MB)     11796480 (   11 MB)    112721920 (  107 MB) 0xe000000440c60000
  6 256KB 0xe000000104ddb1e0     98041856 (   93 MB)     27525120 (   26 MB)     30408704 (   29 MB) 0xe00000043e2c0000
  7 512KB 0xe000000104ddb208            0 (    0 MB)      4718592 (    4 MB)      4718592 (    4 MB) 0xe000000444980000
  8   1MB 0xe000000104ddb230   1095761920 ( 1045 MB)            0 (    0 MB)      2097152 (    2 MB) 0xe000000104ddb230
  9   2MB 0xe000000104ddb258            0 (    0 MB)      2097152 (    2 MB)      4194304 (    4 MB) 0xe000000444a00000
 10   4MB 0xe000000104ddb280    545259520 (  520 MB)            0 (    0 MB)      4194304 (    4 MB) 0xe000000104ddb280
 11   8MB 0xe000000104ddb2a8            0 (    0 MB)            0 (    0 MB)      8388608 (    8 MB) 0xe000000104ddb2a8
 12  16MB 0xe000000104ddb2d0    637534208 (  608 MB)            0 (    0 MB)     16777216 (   16 MB) 0xe000000104ddb2d0
 13  32MB 0xe000000104ddb2f8            0 (    0 MB)            0 (    0 MB)     33554432 (   32 MB) 0xe000000104ddb2f8
 14  64MB 0xe000000104ddb320    335544320 (  320 MB)            0 (    0 MB)            0 (    0 MB) 0xe000000104ddb320

TOTAL                         2.71214e+09 ( 2586 MB)   1.5799e+09 ( 1506 MB)