lkml.org 
[lkml]   [2011]   [Jun]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[slubllv7 14/17] slub: Add statistics for the case that the current slab does not match the node
    Slub reloads the per cpu slab if the page does not satisfy the NUMA condition. Track
    those reloads since doing so has a performance impact.

    Signed-off-by: Christoph Lameter <cl@linux.com>


    ---
    include/linux/slub_def.h | 1 +
    mm/slub.c | 3 +++
    2 files changed, 4 insertions(+)

    Index: linux-2.6/include/linux/slub_def.h
    ===================================================================
    --- linux-2.6.orig/include/linux/slub_def.h 2011-05-31 14:27:07.332880140 -0500
    +++ linux-2.6/include/linux/slub_def.h 2011-05-31 14:27:17.792880073 -0500
    @@ -24,6 +24,7 @@ enum stat_item {
    ALLOC_FROM_PARTIAL, /* Cpu slab acquired from partial list */
    ALLOC_SLAB, /* Cpu slab acquired from page allocator */
    ALLOC_REFILL, /* Refill cpu slab from slab freelist */
    + ALLOC_NODE_MISMATCH, /* Switching cpu slab */
    FREE_SLAB, /* Slab freed to the page allocator */
    CPUSLAB_FLUSH, /* Abandoning of the cpu slab */
    DEACTIVATE_FULL, /* Cpu slab was full when deactivated */
    Index: linux-2.6/mm/slub.c
    ===================================================================
    --- linux-2.6.orig/mm/slub.c 2011-05-31 14:27:12.002880106 -0500
    +++ linux-2.6/mm/slub.c 2011-05-31 14:27:17.792880073 -0500
    @@ -1966,6 +1966,7 @@ static void *__slab_alloc(struct kmem_ca
    goto new_slab;

    if (unlikely(!node_match(c, node))) {
    + stat(s, ALLOC_NODE_MISMATCH);
    deactivate_slab(s, c);
    goto new_slab;
    }
    @@ -4675,6 +4676,7 @@ STAT_ATTR(FREE_REMOVE_PARTIAL, free_remo
    STAT_ATTR(ALLOC_FROM_PARTIAL, alloc_from_partial);
    STAT_ATTR(ALLOC_SLAB, alloc_slab);
    STAT_ATTR(ALLOC_REFILL, alloc_refill);
    +STAT_ATTR(ALLOC_NODE_MISMATCH, alloc_node_mismatch);
    STAT_ATTR(FREE_SLAB, free_slab);
    STAT_ATTR(CPUSLAB_FLUSH, cpuslab_flush);
    STAT_ATTR(DEACTIVATE_FULL, deactivate_full);
    @@ -4734,6 +4736,7 @@ static struct attribute *slab_attrs[] =
    &alloc_from_partial_attr.attr,
    &alloc_slab_attr.attr,
    &alloc_refill_attr.attr,
    + &alloc_node_mismatch_attr.attr,
    &free_slab_attr.attr,
    &cpuslab_flush_attr.attr,
    &deactivate_full_attr.attr,


    \
     
     \ /
      Last update: 2011-06-01 19:29    [W:0.021 / U:30.816 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site