• Yafang Shao's avatar
    mm/vmscan.c: calculate reclaimed slab caches in all reclaim paths · 0308f7cf
    Yafang Shao authored
    There are six different reclaim paths by now:
    
     - kswapd reclaim path
     - node reclaim path
     - hibernate preallocate memory reclaim path
     - direct reclaim path
     - memcg reclaim path
     - memcg softlimit reclaim path
    
    The slab caches reclaimed in these paths are only calculated in the
    above three paths.
    
    There're some drawbacks if we don't calculate the reclaimed slab caches.
    
     - The sc->nr_reclaimed isn't correct if there're some slab caches
       relcaimed in this path.
    
     - The slab caches may be reclaimed thoroughly if there're lots of
       reclaimable slab caches and few page caches.
    
       Let's take an easy example for this case. If one memcg is full of
       slab caches and the limit of it is 512M, in other words there're
       approximately 512M slab caches in this memcg. Then the limit of the
       memcg is reached and the memcg reclaim begins, and then in this memcg
       reclaim path it will continuesly reclaim the slab caches until the
       sc->priority drops to 0. After this reclaim stops, you will find
       there're few slab caches left, which is less than 20M in my test
       case. While after this patch applied the number is greater than 300M
       and the sc->priority only drops to 3.
    
    Link: http://lkml.kernel.org/r/1561112086-6169-3-git-send-email-laoar.shao@gmail.comSigned-off-by: default avatarYafang Shao <laoar.shao@gmail.com>
    Reviewed-by: default avatarKirill Tkhai <ktkhai@virtuozzo.com>
    Reviewed-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Cc: Kirill Tkhai <ktkhai@virtuozzo.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Vladimir Davydov <vdavydov.dev@gmail.com>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    0308f7cf
vmscan.c 122 KB