From: Glauber Costa Date: Mon, 8 Jul 2013 23:00:01 +0000 (-0700) Subject: memcg: do not account memory used for cache creation X-Git-Tag: v3.11-rc1~67^2~93 X-Git-Url: http://git.cascardo.info/?a=commitdiff_plain;h=425c598d583883c33c75780225ba8e0794b43bd9;hp=6d42c232bd1e77288b2660153299b7d12a5c8e15;p=cascardo%2Flinux.git memcg: do not account memory used for cache creation The memory we used to hold the memcg arrays is currently accounted to the current memcg. But that creates a problem, because that memory can only be freed after the last user is gone. Our only way to know which is the last user, is to hook up to freeing time, but the fact that we still have some in flight kmallocs will prevent freeing to happen. I believe therefore to be just easier to account this memory as global overhead. Signed-off-by: Glauber Costa Cc: Johannes Weiner Cc: Michal Hocko Cc: Kamezawa Hiroyuki Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 06a595fd6400..64f726599ff0 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -5232,7 +5232,9 @@ static int memcg_propagate_kmem(struct mem_cgroup *memcg) static_key_slow_inc(&memcg_kmem_enabled_key); mutex_lock(&set_limit_mutex); + memcg_stop_kmem_account(); ret = memcg_update_cache_sizes(memcg); + memcg_resume_kmem_account(); mutex_unlock(&set_limit_mutex); out: return ret;