lkml.org 
[lkml]   [2010]   [Jan]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subjectslub defrag: Transition patch upstream -> -next
    The slub statistics have been simplified through the use of per cpu
    operations in -next. In order for this patchset to compile applied to the
    -next tree the following changes need to be made.

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


    ---
    mm/slub.c | 14 +++++---------
    1 file changed, 5 insertions(+), 9 deletions(-)

    Index: slab-2.6/mm/slub.c
    ===================================================================
    --- slab-2.6.orig/mm/slub.c 2010-01-29 12:26:52.000000000 -0600
    +++ slab-2.6/mm/slub.c 2010-01-29 12:28:28.000000000 -0600
    @@ -2906,7 +2906,6 @@ static int kmem_cache_vacate(struct page
    void *private;
    unsigned long flags;
    unsigned long objects;
    - struct kmem_cache_cpu *c;

    local_irq_save(flags);
    slab_lock(page);
    @@ -2955,13 +2954,12 @@ out:
    * Check the result and unfreeze the slab
    */
    leftover = page->inuse;
    - c = get_cpu_slab(s, smp_processor_id());
    if (leftover) {
    /* Unsuccessful reclaim. Avoid future reclaim attempts. */
    - stat(c, SHRINK_OBJECT_RECLAIM_FAILED);
    + stat(s, SHRINK_OBJECT_RECLAIM_FAILED);
    __ClearPageSlubKickable(page);
    } else
    - stat(c, SHRINK_SLAB_RECLAIMED);
    + stat(s, SHRINK_SLAB_RECLAIMED);
    unfreeze_slab(s, page, leftover > 0);
    local_irq_restore(flags);
    return leftover;
    @@ -3012,14 +3010,12 @@ static unsigned long __kmem_cache_shrink
    LIST_HEAD(zaplist);
    int freed = 0;
    struct kmem_cache_node *n = get_node(s, node);
    - struct kmem_cache_cpu *c;

    if (n->nr_partial <= limit)
    return 0;

    spin_lock_irqsave(&n->list_lock, flags);
    - c = get_cpu_slab(s, smp_processor_id());
    - stat(c, SHRINK_CALLS);
    + stat(s, SHRINK_CALLS);
    list_for_each_entry_safe(page, page2, &n->partial, lru) {
    if (!slab_trylock(page))
    /* Busy slab. Get out of the way */
    @@ -3039,14 +3035,14 @@ static unsigned long __kmem_cache_shrink

    list_move(&page->lru, &zaplist);
    if (s->kick) {
    - stat(c, SHRINK_ATTEMPT_DEFRAG);
    + stat(s, SHRINK_ATTEMPT_DEFRAG);
    n->nr_partial--;
    __SetPageSlubFrozen(page);
    }
    slab_unlock(page);
    } else {
    /* Empty slab page */
    - stat(c, SHRINK_EMPTY_SLAB);
    + stat(s, SHRINK_EMPTY_SLAB);
    list_del(&page->lru);
    n->nr_partial--;
    slab_unlock(page);
    --


    \
     
     \ /
      Last update: 2010-01-29 21:53    [W:3.575 / U:0.088 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site