• Vlastimil Babka's avatar
    mm, slab: rename kmalloc-node cache to kmalloc-<size> · af3b5f87
    Vlastimil Babka authored
    SLAB as part of its bootstrap pre-creates one kmalloc cache that can fit
    the kmem_cache_node management structure, and puts it into the generic
    kmalloc cache array (e.g. for 128b objects).  The name of this cache is
    "kmalloc-node", which is confusing for readers of /proc/slabinfo as the
    cache is used for generic allocations (and not just the kmem_cache_node
    struct) and it appears as the kmalloc-128 cache is missing.
    
    An easy solution is to use the kmalloc-<size> name when pre-creating the
    cache, which we can get from the kmalloc_info array.
    
    Example /proc/slabinfo before the patch:
    
      ...
      kmalloc-256         1647   1984    256   16    1 : tunables  120   60    8 : slabdata    124    124    828
      kmalloc-192         1974   1974    192   21    1 : tunables  120   60    8 : slabdata     94     94    133
      kmalloc-96          1332   1344    128   32    1 : tunables  120   60    8 : slabdata     42     42    219
      kmalloc-64          2505   5952     64   64    1 : tunables  120   60    8 : slabdata     93     93    715
      kmalloc-32          4278   4464     32  124    1 : tunables  120   60    8 : slabdata     36     36    346
      kmalloc-node        1352   1376    128   32    1 : tunables  120   60    8 : slabdata     43     43     53
      kmem_cache           132    147    192   21    1 : tunables  120   60    8 : slabdata      7      7      0
    
    After the patch:
    
      ...
      kmalloc-256         1672   2160    256   16    1 : tunables  120   60    8 : slabdata    135    135    807
      kmalloc-192         1992   2016    192   21    1 : tunables  120   60    8 : slabdata     96     96    203
      kmalloc-96          1159   1184    128   32    1 : tunables  120   60    8 : slabdata     37     37    116
      kmalloc-64          2561   4864     64   64    1 : tunables  120   60    8 : slabdata     76     76    785
      kmalloc-32          4253   4340     32  124    1 : tunables  120   60    8 : slabdata     35     35    270
      kmalloc-128         1256   1280    128   32    1 : tunables  120   60    8 : slabdata     40     40     39
      kmem_cache           125    147    192   21    1 : tunables  120   60    8 : slabdata      7      7      0
    
    [vbabka@suse.cz: export the whole kmalloc_info structure instead of just a name accessor, per Christoph Lameter]
      Link: http://lkml.kernel.org/r/54e80303-b814-4232-66d4-95b34d3eb9d0@suse.cz
    Link: http://lkml.kernel.org/r/20170203181008.24898-1-vbabka@suse.czSigned-off-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Reviewed-by: default avatarMatthew Wilcox <mawilcox@microsoft.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: Christoph Lameter <cl@linux.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    af3b5f87
slab_common.c 31.9 KB