• J
    mm: memcg: count pte references from every member of the reclaimed hierarchy · c3ac9a8a
    Johannes Weiner 提交于
    The rmap walker checking page table references has historically ignored
    references from VMAs that were not part of the memcg that was being
    reclaimed during memcg hard limit reclaim.
    
    When transitioning global reclaim to memcg hierarchy reclaim, I missed
    that bit and now references from outside a memcg are ignored even during
    global reclaim.
    
    Reverting back to traditional behaviour - count all references during
    global reclaim and only mind references of the memcg being reclaimed
    during limit reclaim would be one option.
    
    However, the more generic idea is to ignore references exactly then when
    they are outside the hierarchy that is currently under reclaim; because
    only then will their reclamation be of any use to help the pressure
    situation.  It makes no sense to ignore references from a sibling memcg
    and then evict a page that will be immediately refaulted by that sibling
    which contributes to the same usage of the common ancestor under
    reclaim.
    
    The solution: make the rmap walker ignore references from VMAs that are
    not part of the hierarchy that is being reclaimed.
    
    Flat limit reclaim will stay the same, hierarchical limit reclaim will
    mind the references only to pages that the hierarchy owns.  Global
    reclaim, since it reclaims from all memcgs, will be fixed to regard all
    references.
    
    [akpm@linux-foundation.org: name the args in the declaration]
    Signed-off-by: NJohannes Weiner <hannes@cmpxchg.org>
    Reported-by: NKonstantin Khlebnikov <khlebnikov@openvz.org>
    Acked-by: Konstantin Khlebnikov<khlebnikov@openvz.org>
    Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Acked-by: NMichal Hocko <mhocko@suse.cz>
    Cc: Li Zefan <lizf@cn.fujitsu.com>
    Cc: Li Zefan <lizf@cn.fujitsu.com>
    Cc: Tejun Heo <tj@kernel.org>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    c3ac9a8a
memcontrol.c 146.6 KB