• Michal Hocko's avatar
    memcg: do not try to drain per-cpu caches without pages · d1a05b69
    Michal Hocko authored
    drain_all_stock_async tries to optimize a work to be done on the work
    queue by excluding any work for the current CPU because it assumes that
    the context we are called from already tried to charge from that cache
    and it's failed so it must be empty already.
    
    While the assumption is correct we can optimize it even more by checking
    the current number of pages in the cache.  This will also reduce a work
    on other CPUs with an empty stock.
    
    For the current CPU we can simply call drain_local_stock rather than
    deferring it to the work queue.
    
    [kamezawa.hiroyu@jp.fujitsu.com: use drain_local_stock for current CPU optimization]
    Signed-off-by: default avatarMichal Hocko <mhocko@suse.cz>
    Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    d1a05b69
memcontrol.c 147 KB