Re: [Devel] [PATCH 4/6] memcg, slab: check and init memcg_cahes under slab_mutex

2013-12-19 Thread Glauber Costa
On Thu, Dec 19, 2013 at 11:07 AM, Vladimir Davydov vdavy...@parallels.com wrote: On 12/18/2013 09:41 PM, Michal Hocko wrote: On Wed 18-12-13 17:16:55, Vladimir Davydov wrote: The memcg_params::memcg_caches array can be updated concurrently from memcg_update_cache_size() and

Re: [Devel] [PATCH 1/6] slab: cleanup kmem_cache_create_memcg()

2013-12-19 Thread Vasily Averin
On 12/18/2013 05:16 PM, Vladimir Davydov wrote: --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -176,8 +176,9 @@ kmem_cache_create_memcg(struct mem_cgroup *memcg, const char *name, size_t size, get_online_cpus(); mutex_lock(slab_mutex); - if

Re: [Devel] [PATCH 1/6] slab: cleanup kmem_cache_create_memcg()

2013-12-19 Thread Vladimir Davydov
On 12/19/2013 12:17 PM, Vasily Averin wrote: On 12/18/2013 05:16 PM, Vladimir Davydov wrote: --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -176,8 +176,9 @@ kmem_cache_create_memcg(struct mem_cgroup *memcg, const char *name, size_t size, get_online_cpus();

Re: [Devel] [PATCH 1/6] slab: cleanup kmem_cache_create_memcg()

2013-12-19 Thread Michal Hocko
On Thu 19-12-13 10:31:43, Vladimir Davydov wrote: On 12/18/2013 08:56 PM, Michal Hocko wrote: On Wed 18-12-13 17:16:52, Vladimir Davydov wrote: Signed-off-by: Vladimir Davydov vdavy...@parallels.com Cc: Michal Hocko mho...@suse.cz Cc: Johannes Weiner han...@cmpxchg.org Cc: Glauber Costa

Re: [Devel] [PATCH 2/6] memcg, slab: kmem_cache_create_memcg(): free memcg params on error

2013-12-19 Thread Michal Hocko
On Thu 19-12-13 10:32:29, Vladimir Davydov wrote: On 12/18/2013 09:06 PM, Michal Hocko wrote: On Wed 18-12-13 17:16:53, Vladimir Davydov wrote: Plus, rename memcg_register_cache() to memcg_init_cache_params(), because it actually does not register the cache anywhere, but simply initialize

Re: [Devel] [PATCH 1/6] slab: cleanup kmem_cache_create_memcg()

2013-12-19 Thread Vladimir Davydov
On 12/19/2013 12:44 PM, Michal Hocko wrote: On Thu 19-12-13 10:31:43, Vladimir Davydov wrote: On 12/18/2013 08:56 PM, Michal Hocko wrote: On Wed 18-12-13 17:16:52, Vladimir Davydov wrote: Signed-off-by: Vladimir Davydov vdavy...@parallels.com Cc: Michal Hocko mho...@suse.cz Cc: Johannes

Re: [Devel] [PATCH 2/6] memcg, slab: kmem_cache_create_memcg(): free memcg params on error

2013-12-19 Thread Vladimir Davydov
On 12/19/2013 12:48 PM, Michal Hocko wrote: On Thu 19-12-13 10:32:29, Vladimir Davydov wrote: On 12/18/2013 09:06 PM, Michal Hocko wrote: On Wed 18-12-13 17:16:53, Vladimir Davydov wrote: Plus, rename memcg_register_cache() to memcg_init_cache_params(), because it actually does not register

Re: [Devel] [PATCH 4/6] memcg, slab: check and init memcg_cahes under slab_mutex

2013-12-19 Thread Michal Hocko
On Thu 19-12-13 12:00:58, Glauber Costa wrote: On Thu, Dec 19, 2013 at 11:07 AM, Vladimir Davydov vdavy...@parallels.com wrote: On 12/18/2013 09:41 PM, Michal Hocko wrote: On Wed 18-12-13 17:16:55, Vladimir Davydov wrote: The memcg_params::memcg_caches array can be updated concurrently

Re: [Devel] [PATCH 3/6] memcg, slab: cleanup barrier usage when accessing memcg_caches

2013-12-19 Thread Vladimir Davydov
On 12/19/2013 01:10 PM, Michal Hocko wrote: On Thu 19-12-13 10:37:27, Vladimir Davydov wrote: On 12/18/2013 09:14 PM, Michal Hocko wrote: On Wed 18-12-13 17:16:54, Vladimir Davydov wrote: First, in memcg_create_kmem_cache() we should issue the write barrier after the kmem_cache is

Re: [Devel] [PATCH 1/6] slab: cleanup kmem_cache_create_memcg()

2013-12-19 Thread Michal Hocko
On Thu 19-12-13 12:51:38, Vladimir Davydov wrote: On 12/19/2013 12:44 PM, Michal Hocko wrote: On Thu 19-12-13 10:31:43, Vladimir Davydov wrote: On 12/18/2013 08:56 PM, Michal Hocko wrote: On Wed 18-12-13 17:16:52, Vladimir Davydov wrote: Signed-off-by: Vladimir Davydov

Re: [Devel] [PATCH 4/6] memcg, slab: check and init memcg_cahes under slab_mutex

2013-12-19 Thread Vladimir Davydov
On 12/19/2013 01:12 PM, Michal Hocko wrote: On Thu 19-12-13 12:00:58, Glauber Costa wrote: On Thu, Dec 19, 2013 at 11:07 AM, Vladimir Davydov vdavy...@parallels.com wrote: On 12/18/2013 09:41 PM, Michal Hocko wrote: On Wed 18-12-13 17:16:55, Vladimir Davydov wrote: The

Re: [Devel] [PATCH 2/6] memcg, slab: kmem_cache_create_memcg(): free memcg params on error

2013-12-19 Thread Michal Hocko
On Thu 19-12-13 13:01:28, Vladimir Davydov wrote: On 12/19/2013 12:48 PM, Michal Hocko wrote: On Thu 19-12-13 10:32:29, Vladimir Davydov wrote: On 12/18/2013 09:06 PM, Michal Hocko wrote: On Wed 18-12-13 17:16:53, Vladimir Davydov wrote: Plus, rename memcg_register_cache() to

Re: [Devel] [PATCH 3/6] memcg, slab: cleanup barrier usage when accessing memcg_caches

2013-12-19 Thread Michal Hocko
On Thu 19-12-13 13:16:01, Vladimir Davydov wrote: On 12/19/2013 01:10 PM, Michal Hocko wrote: On Thu 19-12-13 10:37:27, Vladimir Davydov wrote: On 12/18/2013 09:14 PM, Michal Hocko wrote: On Wed 18-12-13 17:16:54, Vladimir Davydov wrote: First, in memcg_create_kmem_cache() we should issue

Re: [Devel] [PATCH 4/6] memcg, slab: check and init memcg_cahes under slab_mutex

2013-12-19 Thread Vladimir Davydov
Hi, Christoph We have a problem with memcg-vs-slab interactions. Currently we set the pointer to a new kmem_cache in its parent's memcg_caches array inside memcg_create_kmem_cache() (mm/memcontrol.c): memcg_create_kmem_cache(): new_cachep = cache_from_memcg_idx(cachep, idx); if

Re: [Devel] [PATCH 1/6] slab: cleanup kmem_cache_create_memcg()

2013-12-19 Thread Vasily Averin
On 12/19/2013 12:39 PM, Vladimir Davydov wrote: On 12/19/2013 12:17 PM, Vasily Averin wrote: On 12/18/2013 05:16 PM, Vladimir Davydov wrote: --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -176,8 +176,9 @@ kmem_cache_create_memcg(struct mem_cgroup *memcg, const char *name, size_t size,

Re: [Devel] [PATCH 6/6] memcg, slab: RCU protect memcg_params for root caches

2013-12-19 Thread Michal Hocko
On Wed 18-12-13 17:16:57, Vladimir Davydov wrote: We update root cache's memcg_params whenever we need to grow the memcg_caches array to accommodate all kmem-active memory cgroups. Currently we free the old version immediately then, which can lead to use-after-free, because the memcg_caches

Re: [Devel] [PATCH 3/6] memcg, slab: cleanup barrier usage when accessing memcg_caches

2013-12-19 Thread Vladimir Davydov
On 12/19/2013 01:21 PM, Michal Hocko wrote: On Thu 19-12-13 13:16:01, Vladimir Davydov wrote: On 12/19/2013 01:10 PM, Michal Hocko wrote: On Thu 19-12-13 10:37:27, Vladimir Davydov wrote: On 12/18/2013 09:14 PM, Michal Hocko wrote: On Wed 18-12-13 17:16:54, Vladimir Davydov wrote: First, in

Re: [Devel] [PATCH 3/6] memcg, slab: cleanup barrier usage when accessing memcg_caches

2013-12-19 Thread Michal Hocko
On Thu 19-12-13 13:29:59, Vladimir Davydov wrote: On 12/19/2013 01:21 PM, Michal Hocko wrote: On Thu 19-12-13 13:16:01, Vladimir Davydov wrote: On 12/19/2013 01:10 PM, Michal Hocko wrote: On Thu 19-12-13 10:37:27, Vladimir Davydov wrote: On 12/18/2013 09:14 PM, Michal Hocko wrote: On

Re: [Devel] [PATCH 6/6] memcg, slab: RCU protect memcg_params for root caches

2013-12-19 Thread Vladimir Davydov
On 12/19/2013 01:28 PM, Michal Hocko wrote: On Wed 18-12-13 17:16:57, Vladimir Davydov wrote: We update root cache's memcg_params whenever we need to grow the memcg_caches array to accommodate all kmem-active memory cgroups. Currently we free the old version immediately then, which can lead to

Re: [Devel] [PATCH 1/6] slab: cleanup kmem_cache_create_memcg()

2013-12-19 Thread Vladimir Davydov
On 12/19/2013 01:26 PM, Vasily Averin wrote: On 12/19/2013 12:39 PM, Vladimir Davydov wrote: On 12/19/2013 12:17 PM, Vasily Averin wrote: On 12/18/2013 05:16 PM, Vladimir Davydov wrote: --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -176,8 +176,9 @@ kmem_cache_create_memcg(struct

Re: [Devel] [PATCH 6/6] memcg, slab: RCU protect memcg_params for root caches

2013-12-19 Thread Michal Hocko
On Thu 19-12-13 13:36:42, Vladimir Davydov wrote: On 12/19/2013 01:28 PM, Michal Hocko wrote: On Wed 18-12-13 17:16:57, Vladimir Davydov wrote: [...] diff --git a/mm/slab.h b/mm/slab.h index 1d8b53f..53b81a9 100644 --- a/mm/slab.h +++ b/mm/slab.h @@ -164,10 +164,16 @@ static inline

Re: [Devel] [PATCH 1/6] slab: cleanup kmem_cache_create_memcg()

2013-12-19 Thread Michal Hocko
On Thu 19-12-13 13:26:12, Vasily Averin wrote: On 12/19/2013 12:39 PM, Vladimir Davydov wrote: On 12/19/2013 12:17 PM, Vasily Averin wrote: On 12/18/2013 05:16 PM, Vladimir Davydov wrote: --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -176,8 +176,9 @@ kmem_cache_create_memcg(struct

Re: [Devel] [PATCH 6/6] memcg, slab: RCU protect memcg_params for root caches

2013-12-19 Thread Vladimir Davydov
On 12/19/2013 01:43 PM, Michal Hocko wrote: On Thu 19-12-13 13:36:42, Vladimir Davydov wrote: On 12/19/2013 01:28 PM, Michal Hocko wrote: On Wed 18-12-13 17:16:57, Vladimir Davydov wrote: [...] diff --git a/mm/slab.h b/mm/slab.h index 1d8b53f..53b81a9 100644 --- a/mm/slab.h +++ b/mm/slab.h

Re: [Devel] [PATCH 3/6] memcg, slab: cleanup barrier usage when accessing memcg_caches

2013-12-19 Thread Vladimir Davydov
On 12/19/2013 01:36 PM, Michal Hocko wrote: On Thu 19-12-13 13:29:59, Vladimir Davydov wrote: On 12/19/2013 01:21 PM, Michal Hocko wrote: On Thu 19-12-13 13:16:01, Vladimir Davydov wrote: On 12/19/2013 01:10 PM, Michal Hocko wrote: On Thu 19-12-13 10:37:27, Vladimir Davydov wrote: On

Re: [Devel] [PATCH 6/6] memcg, slab: RCU protect memcg_params for root caches

2013-12-19 Thread Michal Hocko
On Thu 19-12-13 13:47:33, Vladimir Davydov wrote: [...] Yeah, you're right, this longs for a documentation. I'm going to check We desparately need a documentation for the life cycle of all involved objects and description of which locks are used at which stage. this code a bit more and try to

Re: [Devel] [PATCH 1/6] slab: cleanup kmem_cache_create_memcg()

2013-12-19 Thread Pekka Enberg
On 12/18/2013 03:16 PM, Vladimir Davydov wrote: Signed-off-by: Vladimir Davydov vdavy...@parallels.com Cc: Michal Hocko mho...@suse.cz Cc: Johannes Weiner han...@cmpxchg.org Cc: Glauber Costa glom...@gmail.com Cc: Christoph Lameter c...@linux.com Cc: Pekka Enberg penb...@kernel.org Cc: Andrew

Re: [Devel] [PATCH 1/6] slab: cleanup kmem_cache_create_memcg()

2013-12-19 Thread Pekka Enberg
On 12/19/2013 11:26 AM, Vasily Averin wrote: On 12/19/2013 12:39 PM, Vladimir Davydov wrote: On 12/19/2013 12:17 PM, Vasily Averin wrote: On 12/18/2013 05:16 PM, Vladimir Davydov wrote: --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -176,8 +176,9 @@ kmem_cache_create_memcg(struct mem_cgroup