Skip to content
  • Sergey Senozhatsky's avatar
    tools/vm/slabinfo: use getopt no_argument/optional_argument · 2b100755
    Sergey Senozhatsky authored
    This patchset adds 'extended' slabinfo mode that provides additional
    information:
    
     -- totals summary
     -- slabs sorted by size
     -- slabs sorted by loss (waste)
    
    The patches also introduces several new slabinfo options to limit the
    number of slabs reported, sort slabs by loss (waste); and some fixes.
    
    Extended output 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
    
    The last patch in the series addresses Linus' comment from
    http://marc.info/?l=linux-mm&m=144148518703321&w=2
    
    
    
    (well, it's been some time. sorry.)
    
    gnuplot script takes the slabinfo records file, where every record is a `slabinfo -X'
    output. So the basic workflow is, for example, as follows:
    
            while [ 1 ]; do slabinfo -X -N 2 >> stats; sleep 1; done
            ^C
            slabinfo-gnuplot.sh stats
    
    The last command will produce 3 png files (and 3 stats files)
    -- graph of slabinfo totals
    -- graph of slabs by size
    -- graph of slabs by loss
    
    It's also possible to select a range of records for plotting (a range of collected
    slabinfo outputs) via `-r 10,100` (for example); and compare totals from several
    measurements (to visially compare slabs behaviour (10,50 range)) using
    pre-parsed totals files:
            slabinfo-gnuplot.sh -r 10,50 -t stats-totals1 .. stats-totals2
    
    This also, technically, supports ktest. Upload new slabinfo to target,
    collect the stats and give the resulting stats file to slabinfo-gnuplot
    
    This patch (of 8):
    
    Use getopt constants in `struct option' ->has_arg instead of numerical
    representations.
    
    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>
    2b100755