• A
    [PATCH] vmscan: notice slab shrinking · b15e0905
    akpm@osdl.org 提交于
    Fix a problem identified by Andrea Arcangeli <andrea@suse.de>
    
    kswapd will set a zone into all_unreclaimable state if it sees that we're not
    successfully reclaiming LRU pages.  But that fails to notice that we're
    successfully reclaiming slab obects, so we can set all_unreclaimable too soon.
    
    So change shrink_slab() to return a success indication if it actually
    reclaimed some objects, and don't assume that the zone is all_unreclaimable if
    that is true.  This means that we won't enter all_unreclaimable state if we
    are successfully freeing slab objects but we're not yet actually freeing slab
    pages, due to internal fragmentation.
    
    (hm, this has a shortcoming.  We could be successfully freeing ZONE_NORMAL
    slab objects while being really oom on ZONE_DMA.  If that happens then kswapd
    might burn a lot of CPU.  But given that there might be some slab objects in
    ZONE_DMA, perhaps that is appropriate.)
    Signed-off-by: NAndrew Morton <akpm@osdl.org>
    Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
    b15e0905
vmscan.c 35.4 KB