From: Vladimir Davydov <vdavydov@parallels.com> To: <dchinner@redhat.com>, <mhocko@suse.cz>, <hannes@cmpxchg.org>, <akpm@linux-foundation.org> Cc: <linux-kernel@vger.kernel.org>, <linux-mm@kvack.org>, <cgroups@vger.kernel.org>, <devel@openvz.org>, <glommer@openvz.org>, <glommer@gmail.com>, Balbir Singh <bsingharora@gmail.com>, KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Subject: [PATCH v14 01/18] memcg: make cache index determination more robust Date: Mon, 16 Dec 2013 16:16:50 +0400 [thread overview] Message-ID: <e17a4d621bdf2a01dac6179fc7694d0f1c854711.1387193771.git.vdavydov@parallels.com> (raw) In-Reply-To: <cover.1387193771.git.vdavydov@parallels.com> From: Glauber Costa <glommer@openvz.org> I caught myself doing something like the following outside memcg core: memcg_id = -1; if (memcg && memcg_kmem_is_active(memcg)) memcg_id = memcg_cache_id(memcg); to be able to handle all possible memcgs in a sane manner. In particular, the root cache will have kmemcg_id = -1 (just because we don't call memcg_kmem_init to the root cache since it is not limitable). We have always coped with that by making sure we sanitize which cache is passed to memcg_cache_id. Although this example is given for root, what we really need to know is whether or not a cache is kmem active. But outside the memcg core testing for root, for instance, is not trivial since we don't export mem_cgroup_is_root. I ended up realizing that this tests really belong inside memcg_cache_id. This patch moves a similar but stronger test inside memcg_cache_id and make sure it always return a meaningful value. Signed-off-by: Glauber Costa <glommer@openvz.org> Signed-off-by: Vladimir Davydov <vdavydov@parallels.com> Cc: Michal Hocko <mhocko@suse.cz> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Balbir Singh <bsingharora@gmail.com> Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> --- mm/memcontrol.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index bf5e894..3408852 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -3076,7 +3076,9 @@ void memcg_cache_list_add(struct mem_cgroup *memcg, struct kmem_cache *cachep) */ int memcg_cache_id(struct mem_cgroup *memcg) { - return memcg ? memcg->kmemcg_id : -1; + if (!memcg || !memcg_can_account_kmem(memcg)) + return -1; + return memcg->kmemcg_id; } /* -- 1.7.10.4
WARNING: multiple messages have this Message-ID (diff)
From: Vladimir Davydov <vdavydov@parallels.com> To: dchinner@redhat.com, mhocko@suse.cz, hannes@cmpxchg.org, akpm@linux-foundation.org Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, cgroups@vger.kernel.org, devel@openvz.org, glommer@openvz.org, glommer@gmail.com, Balbir Singh <bsingharora@gmail.com>, KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Subject: [PATCH v14 01/18] memcg: make cache index determination more robust Date: Mon, 16 Dec 2013 16:16:50 +0400 [thread overview] Message-ID: <e17a4d621bdf2a01dac6179fc7694d0f1c854711.1387193771.git.vdavydov@parallels.com> (raw) In-Reply-To: <cover.1387193771.git.vdavydov@parallels.com> From: Glauber Costa <glommer@openvz.org> I caught myself doing something like the following outside memcg core: memcg_id = -1; if (memcg && memcg_kmem_is_active(memcg)) memcg_id = memcg_cache_id(memcg); to be able to handle all possible memcgs in a sane manner. In particular, the root cache will have kmemcg_id = -1 (just because we don't call memcg_kmem_init to the root cache since it is not limitable). We have always coped with that by making sure we sanitize which cache is passed to memcg_cache_id. Although this example is given for root, what we really need to know is whether or not a cache is kmem active. But outside the memcg core testing for root, for instance, is not trivial since we don't export mem_cgroup_is_root. I ended up realizing that this tests really belong inside memcg_cache_id. This patch moves a similar but stronger test inside memcg_cache_id and make sure it always return a meaningful value. Signed-off-by: Glauber Costa <glommer@openvz.org> Signed-off-by: Vladimir Davydov <vdavydov@parallels.com> Cc: Michal Hocko <mhocko@suse.cz> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Balbir Singh <bsingharora@gmail.com> Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> --- mm/memcontrol.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index bf5e894..3408852 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -3076,7 +3076,9 @@ void memcg_cache_list_add(struct mem_cgroup *memcg, struct kmem_cache *cachep) */ int memcg_cache_id(struct mem_cgroup *memcg) { - return memcg ? memcg->kmemcg_id : -1; + if (!memcg || !memcg_can_account_kmem(memcg)) + return -1; + return memcg->kmemcg_id; } /* -- 1.7.10.4 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2013-12-16 12:22 UTC|newest] Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-12-16 12:16 [PATCH v14 00/18] kmemcg shrinkers Vladimir Davydov 2013-12-16 12:16 ` Vladimir Davydov 2013-12-16 12:16 ` Vladimir Davydov 2013-12-16 12:16 ` Vladimir Davydov [this message] 2013-12-16 12:16 ` [PATCH v14 01/18] memcg: make cache index determination more robust Vladimir Davydov 2013-12-16 12:16 ` [PATCH v14 02/18] memcg: consolidate callers of memcg_cache_id Vladimir Davydov 2013-12-16 12:16 ` Vladimir Davydov 2013-12-16 12:16 ` [PATCH v14 03/18] memcg: move initialization to memcg creation Vladimir Davydov 2013-12-16 12:16 ` Vladimir Davydov 2013-12-16 12:16 ` [PATCH v14 04/18] memcg: make for_each_mem_cgroup macros public Vladimir Davydov 2013-12-16 12:16 ` Vladimir Davydov 2013-12-16 12:16 ` Vladimir Davydov 2013-12-16 12:16 ` [PATCH v14 05/18] memcg: remove KMEM_ACCOUNTED_ACTIVATED flag Vladimir Davydov 2013-12-16 12:16 ` Vladimir Davydov 2013-12-16 12:16 ` [PATCH v14 06/18] memcg: rework memcg_update_kmem_limit synchronization Vladimir Davydov 2013-12-16 12:16 ` Vladimir Davydov 2013-12-16 12:16 ` [PATCH v14 07/18] list_lru, shrinkers: introduce list_lru_shrink_{count,walk} Vladimir Davydov 2013-12-16 12:16 ` Vladimir Davydov 2013-12-16 12:16 ` [PATCH v14 08/18] fs: consolidate {nr,free}_cached_objects args in shrink_control Vladimir Davydov 2013-12-16 12:16 ` Vladimir Davydov 2013-12-16 12:16 ` [PATCH v14 09/18] vmscan: move call to shrink_slab() to shrink_zones() Vladimir Davydov 2013-12-16 12:16 ` Vladimir Davydov 2013-12-16 12:16 ` [PATCH v14 10/18] vmscan: remove shrink_control arg from do_try_to_free_pages() Vladimir Davydov 2013-12-16 12:16 ` Vladimir Davydov 2013-12-16 12:17 ` [PATCH v14 11/18] vmscan: call NUMA-unaware shrinkers irrespective of nodemask Vladimir Davydov 2013-12-16 12:17 ` Vladimir Davydov 2013-12-16 12:17 ` [PATCH v14 12/18] vmscan: shrink slab on memcg pressure Vladimir Davydov 2013-12-16 12:17 ` Vladimir Davydov 2013-12-16 12:17 ` Vladimir Davydov 2013-12-16 12:17 ` [PATCH v14 13/18] vmscan: take at least one pass with shrinkers Vladimir Davydov 2013-12-16 12:17 ` Vladimir Davydov 2013-12-16 12:17 ` [PATCH v14 14/18] list_lru: add per-memcg lists Vladimir Davydov 2013-12-16 12:17 ` Vladimir Davydov 2013-12-16 12:17 ` Vladimir Davydov 2013-12-16 12:17 ` [PATCH v14 15/18] fs: make shrinker memcg aware Vladimir Davydov 2013-12-16 12:17 ` Vladimir Davydov 2013-12-16 12:17 ` [PATCH v14 16/18] vmpressure: in-kernel notifications Vladimir Davydov 2013-12-16 12:17 ` Vladimir Davydov 2013-12-20 14:26 ` Luiz Capitulino 2013-12-20 14:26 ` Luiz Capitulino 2013-12-20 14:31 ` Glauber Costa 2013-12-20 14:31 ` Glauber Costa 2013-12-20 14:32 ` Glauber Costa 2013-12-20 14:32 ` Glauber Costa 2013-12-20 14:36 ` Vladimir Davydov 2013-12-20 14:36 ` Vladimir Davydov 2013-12-20 15:03 ` Luiz Capitulino 2013-12-20 15:03 ` Luiz Capitulino 2013-12-20 16:44 ` Luiz Capitulino 2013-12-20 16:44 ` Luiz Capitulino 2013-12-20 16:46 ` Glauber Costa 2013-12-20 16:46 ` Glauber Costa 2013-12-20 16:46 ` Glauber Costa 2013-12-20 16:53 ` Luiz Capitulino 2013-12-20 16:53 ` Luiz Capitulino 2013-12-20 16:58 ` Glauber Costa 2013-12-20 16:58 ` Glauber Costa 2013-12-20 17:00 ` Luiz Capitulino 2013-12-20 17:00 ` Luiz Capitulino 2013-12-16 12:17 ` [PATCH v14 17/18] memcg: reap dead memcgs upon global memory pressure Vladimir Davydov 2013-12-16 12:17 ` Vladimir Davydov 2013-12-16 12:17 ` Vladimir Davydov 2013-12-16 12:17 ` [PATCH v14 18/18] memcg: flush memcg items upon memcg destruction Vladimir Davydov 2013-12-16 12:17 ` Vladimir Davydov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=e17a4d621bdf2a01dac6179fc7694d0f1c854711.1387193771.git.vdavydov@parallels.com \ --to=vdavydov@parallels.com \ --cc=akpm@linux-foundation.org \ --cc=bsingharora@gmail.com \ --cc=cgroups@vger.kernel.org \ --cc=dchinner@redhat.com \ --cc=devel@openvz.org \ --cc=glommer@gmail.com \ --cc=glommer@openvz.org \ --cc=hannes@cmpxchg.org \ --cc=kamezawa.hiroyu@jp.fujitsu.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=mhocko@suse.cz \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.