• M
    memcg: track all children over limit in the root · 1be171d6
    Michal Hocko 提交于
    Children in soft limit excess are currently tracked up the hierarchy in
    memcg->children_in_excess.  Nevertheless there still might exist tons of
    groups that are not in hierarchy relation to the root cgroup (e.g.  all
    first level groups if root_mem_cgroup->use_hierarchy == false).
    
    As the whole tree walk has to be done when the iteration starts at
    root_mem_cgroup the iterator should be able to skip the walk if there is
    no child above the limit without iterating them.  This can be done
    easily if the root tracks all children rather than only hierarchical
    children.  This is done by this patch which updates root_mem_cgroup
    children_in_excess if root_mem_cgroup->use_hierarchy == false so the
    root knows about all children in excess.
    
    Please note that this is not an issue for inner memcgs which have
    use_hierarchy == false because then only the single group is visited so
    no special optimization is necessary.
    Signed-off-by: NMichal Hocko <mhocko@suse.cz>
    Cc: Balbir Singh <bsingharora@gmail.com>
    Cc: Glauber Costa <glommer@openvz.org>
    Cc: Greg Thelen <gthelen@google.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
    Cc: Michel Lespinasse <walken@google.com>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: Ying Han <yinghan@google.com>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    1be171d6
memcontrol.c 179.4 KB