• Sergey Senozhatsky's avatar
    tools/vm/slabinfo: output sizes in bytes · a8ea0bf1
    Sergey Senozhatsky authored
    Introduce "-B|--Bytes" opt to disable store_size() dynamic
    size scaling and report size in bytes instead.
    
    This `expands' the interface a bit, it's impossible to use
    printf("%6s") anymore to output sizes.
    
    Example:
    
    slabinfo -X -N 2
     Slabcache Totals
     ----------------
     Slabcaches :              91   Aliases  :         119->69   Active:     63
     Memory used:       199798784   # Loss   :        10689376   MRatio:     5%
     # Objects  :          324301   # PartObj:           18151   ORatio:     5%
    
     Per Cache         Average              Min              Max            Total
     ----------------------------------------------------------------------------
     #Objects             5147                1            89068           324301
     #Slabs                199                1             3886            12537
     #PartSlab              12                0              240              778
     %PartSlab             32%               0%             100%               6%
     PartObjs                5                0             4569            18151
     % PartObj             26%               0%             100%               5%
     Memory            3171409             8192        127336448        199798784
     Used              3001736              160        121429728        189109408
     Loss               169672                0          5906720         10689376
    
     Per Object        Average              Min              Max
     -----------------------------------------------------------
     Memory                585                8             8192
     User                  583                8             8192
     Loss                    2                0               64
    
     Slabs sorted by size
     --------------------
     Name                   Objects Objsize           Space Slabs/Part/Cpu  O/S O %Fr %Ef Flg
     ext4_inode_cache         69948    1736       127336448      3871/0/15   18 3   0  95 a
     dentry                   89068     288        26058752      3164/0/17   28 1   0  98 a
    
     Slabs sorted by loss
     --------------------
     Name                   Objects Objsize            Loss Slabs/Part/Cpu  O/S O %Fr %Ef Flg
     ext4_inode_cache         69948    1736         5906720      3871/0/15   18 3   0  95 a
     inode_cache              11628     864          537472        642/0/4   18 2   0  94 a
    
    Besides, store_size() does not use powers of two for G/M/K
    
        if (value > 1000000000UL) {
                divisor = 100000000UL;
                trailer = 'G';
        } else if (value > 1000000UL) {
                divisor = 100000UL;
                trailer = 'M';
        } else if (value > 1000UL) {
                divisor = 100;
                trailer = 'K';
        }
    Signed-off-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    a8ea0bf1
slabinfo.c 36.1 KB