From: Glauber Costa <glommer@parallels.com>
To: "Kirill A. Shutemov" <kirill@shutemov.name>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
Andrew Morton <akpm@linux-foundation.org>,
Christoph Lameter <cl@linux.com>,
David Rientjes <rientjes@google.com>,
Pekka Enberg <penberg@kernel.org>,
Greg Thelen <gthelen@google.com>,
Johannes Weiner <hannes@cmpxchg.org>,
Michal Hocko <mhocko@suse.cz>,
Frederic Weisbecker <fweisbec@gmail.com>,
devel@openvz.org, cgroups@vger.kernel.org,
Pekka Enberg <penberg@cs.helsinki.fi>,
Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Suleiman Souhlal <suleiman@google.com>
Subject: Re: [PATCH 06/10] sl[au]b: Allocate objects from memcg cache
Date: Mon, 30 Jul 2012 17:11:06 +0400 [thread overview]
Message-ID: <501687EA.5050401@parallels.com> (raw)
In-Reply-To: <20120730125851.GB27293@shutemov.name>
On 07/30/2012 04:58 PM, Kirill A. Shutemov wrote:
> On Wed, Jul 25, 2012 at 06:38:17PM +0400, Glauber Costa wrote:
>> We are able to match a cache allocation to a particular memcg. If the
>> task doesn't change groups during the allocation itself - a rare event,
>> this will give us a good picture about who is the first group to touch a
>> cache page.
>>
>> This patch uses the now available infrastructure by calling
>> memcg_kmem_get_cache() before all the cache allocations.
>>
>> Signed-off-by: Glauber Costa <glommer@parallels.com>
>> CC: Christoph Lameter <cl@linux.com>
>> CC: Pekka Enberg <penberg@cs.helsinki.fi>
>> CC: Michal Hocko <mhocko@suse.cz>
>> CC: Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
>> CC: Johannes Weiner <hannes@cmpxchg.org>
>> CC: Suleiman Souhlal <suleiman@google.com>
>> ---
>> include/linux/slub_def.h | 18 +++++++++++++-----
>> mm/memcontrol.c | 2 ++
>> mm/slab.c | 4 ++++
>> mm/slub.c | 1 +
>> 4 files changed, 20 insertions(+), 5 deletions(-)
>>
>> diff --git a/include/linux/slub_def.h b/include/linux/slub_def.h
>> index 8bb8ad2..148000a 100644
>> --- a/include/linux/slub_def.h
>> +++ b/include/linux/slub_def.h
>> @@ -13,6 +13,8 @@
>> #include <linux/kobject.h>
>>
>> #include <linux/kmemleak.h>
>> +#include <linux/memcontrol.h>
>> +#include <linux/mm.h>
>>
>> enum stat_item {
>> ALLOC_FASTPATH, /* Allocation from cpu slab */
>> @@ -209,14 +211,14 @@ static __always_inline int kmalloc_index(size_t size)
>> * This ought to end up with a global pointer to the right cache
>> * in kmalloc_caches.
>> */
>> -static __always_inline struct kmem_cache *kmalloc_slab(size_t size)
>> +static __always_inline struct kmem_cache *kmalloc_slab(gfp_t flags, size_t size)
>> {
>> int index = kmalloc_index(size);
>>
>> if (index == 0)
>> return NULL;
>>
>> - return kmalloc_caches[index];
>> + return memcg_kmem_get_cache(kmalloc_caches[index], flags);
>> }
>>
>> void *kmem_cache_alloc(struct kmem_cache *, gfp_t);
>> @@ -225,7 +227,13 @@ void *__kmalloc(size_t size, gfp_t flags);
>> static __always_inline void *
>> kmalloc_order(size_t size, gfp_t flags, unsigned int order)
>> {
>> - void *ret = (void *) __get_free_pages(flags | __GFP_COMP, order);
>> + void *ret;
>> +
>> + flags = __GFP_COMP;
>> +#ifdef CONFIG_MEMCG_KMEM
>> + flags |= __GFP_KMEMCG;
>> +#endif
>
> Em.. I don't see where __GFP_KMEMCG is defined.
> It should be 0 for !CONFIG_MEMCG_KMEM.
>
It is not, sorry.
As I said, this is dependent on another patch series.
My main goal while sending this was to get the slab part - that will
eventually come ontop of that - discussed. Because they are both quite
complex, I believe they benefit from being discussed separately.
You can find the latest version of that here:
https://lkml.org/lkml/2012/6/25/251
--
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>
WARNING: multiple messages have this Message-ID (diff)
From: Glauber Costa <glommer@parallels.com>
To: "Kirill A. Shutemov" <kirill@shutemov.name>
Cc: <linux-kernel@vger.kernel.org>, <linux-mm@kvack.org>,
Andrew Morton <akpm@linux-foundation.org>,
Christoph Lameter <cl@linux.com>,
David Rientjes <rientjes@google.com>,
Pekka Enberg <penberg@kernel.org>,
Greg Thelen <gthelen@google.com>,
Johannes Weiner <hannes@cmpxchg.org>,
Michal Hocko <mhocko@suse.cz>,
Frederic Weisbecker <fweisbec@gmail.com>, <devel@openvz.org>,
<cgroups@vger.kernel.org>, Pekka Enberg <penberg@cs.helsinki.fi>,
Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Suleiman Souhlal <suleiman@google.com>
Subject: Re: [PATCH 06/10] sl[au]b: Allocate objects from memcg cache
Date: Mon, 30 Jul 2012 17:11:06 +0400 [thread overview]
Message-ID: <501687EA.5050401@parallels.com> (raw)
In-Reply-To: <20120730125851.GB27293@shutemov.name>
On 07/30/2012 04:58 PM, Kirill A. Shutemov wrote:
> On Wed, Jul 25, 2012 at 06:38:17PM +0400, Glauber Costa wrote:
>> We are able to match a cache allocation to a particular memcg. If the
>> task doesn't change groups during the allocation itself - a rare event,
>> this will give us a good picture about who is the first group to touch a
>> cache page.
>>
>> This patch uses the now available infrastructure by calling
>> memcg_kmem_get_cache() before all the cache allocations.
>>
>> Signed-off-by: Glauber Costa <glommer@parallels.com>
>> CC: Christoph Lameter <cl@linux.com>
>> CC: Pekka Enberg <penberg@cs.helsinki.fi>
>> CC: Michal Hocko <mhocko@suse.cz>
>> CC: Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
>> CC: Johannes Weiner <hannes@cmpxchg.org>
>> CC: Suleiman Souhlal <suleiman@google.com>
>> ---
>> include/linux/slub_def.h | 18 +++++++++++++-----
>> mm/memcontrol.c | 2 ++
>> mm/slab.c | 4 ++++
>> mm/slub.c | 1 +
>> 4 files changed, 20 insertions(+), 5 deletions(-)
>>
>> diff --git a/include/linux/slub_def.h b/include/linux/slub_def.h
>> index 8bb8ad2..148000a 100644
>> --- a/include/linux/slub_def.h
>> +++ b/include/linux/slub_def.h
>> @@ -13,6 +13,8 @@
>> #include <linux/kobject.h>
>>
>> #include <linux/kmemleak.h>
>> +#include <linux/memcontrol.h>
>> +#include <linux/mm.h>
>>
>> enum stat_item {
>> ALLOC_FASTPATH, /* Allocation from cpu slab */
>> @@ -209,14 +211,14 @@ static __always_inline int kmalloc_index(size_t size)
>> * This ought to end up with a global pointer to the right cache
>> * in kmalloc_caches.
>> */
>> -static __always_inline struct kmem_cache *kmalloc_slab(size_t size)
>> +static __always_inline struct kmem_cache *kmalloc_slab(gfp_t flags, size_t size)
>> {
>> int index = kmalloc_index(size);
>>
>> if (index == 0)
>> return NULL;
>>
>> - return kmalloc_caches[index];
>> + return memcg_kmem_get_cache(kmalloc_caches[index], flags);
>> }
>>
>> void *kmem_cache_alloc(struct kmem_cache *, gfp_t);
>> @@ -225,7 +227,13 @@ void *__kmalloc(size_t size, gfp_t flags);
>> static __always_inline void *
>> kmalloc_order(size_t size, gfp_t flags, unsigned int order)
>> {
>> - void *ret = (void *) __get_free_pages(flags | __GFP_COMP, order);
>> + void *ret;
>> +
>> + flags = __GFP_COMP;
>> +#ifdef CONFIG_MEMCG_KMEM
>> + flags |= __GFP_KMEMCG;
>> +#endif
>
> Em.. I don't see where __GFP_KMEMCG is defined.
> It should be 0 for !CONFIG_MEMCG_KMEM.
>
It is not, sorry.
As I said, this is dependent on another patch series.
My main goal while sending this was to get the slab part - that will
eventually come ontop of that - discussed. Because they are both quite
complex, I believe they benefit from being discussed separately.
You can find the latest version of that here:
https://lkml.org/lkml/2012/6/25/251
next prev parent reply other threads:[~2012-07-30 13:11 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-25 14:38 [PATCH 00/10] memcg kmem limitation - slab Glauber Costa
2012-07-25 14:38 ` Glauber Costa
2012-07-25 14:38 ` Glauber Costa
[not found] ` <1343227101-14217-1-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-07-25 14:38 ` [PATCH 01/10] slab/slub: struct memcg_params Glauber Costa
2012-07-25 14:38 ` Glauber Costa
2012-07-25 14:38 ` Glauber Costa
2012-07-25 19:26 ` Kirill A. Shutemov
2012-07-25 19:26 ` Kirill A. Shutemov
2012-07-25 19:25 ` Glauber Costa
2012-07-25 19:25 ` Glauber Costa
2012-07-25 14:38 ` [PATCH 02/10] consider a memcg parameter in kmem_create_cache Glauber Costa
2012-07-25 14:38 ` Glauber Costa
2012-07-25 14:38 ` Glauber Costa
2012-07-25 18:10 ` Kirill A. Shutemov
2012-07-25 18:10 ` Kirill A. Shutemov
[not found] ` <20120725181018.GA4921-oKw7cIdHH8eLwutG50LtGA@public.gmane.org>
2012-07-26 9:42 ` Glauber Costa
2012-07-26 9:42 ` Glauber Costa
2012-07-26 9:42 ` Glauber Costa
[not found] ` <501110ED.9030400-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-07-26 10:01 ` Kirill A. Shutemov
2012-07-26 10:01 ` Kirill A. Shutemov
2012-07-26 10:01 ` Kirill A. Shutemov
2012-07-26 10:27 ` Glauber Costa
2012-07-26 10:27 ` Glauber Costa
2012-07-25 14:38 ` [PATCH 03/10] memcg: infrastructure to match an allocation to the right cache Glauber Costa
2012-07-25 14:38 ` Glauber Costa
2012-07-25 14:38 ` Glauber Costa
2012-07-25 21:53 ` Kirill A. Shutemov
2012-07-25 21:53 ` Kirill A. Shutemov
2012-07-25 14:38 ` [PATCH 04/10] memcg: skip memcg kmem allocations in specified code regions Glauber Costa
2012-07-25 14:38 ` Glauber Costa
2012-07-25 14:38 ` Glauber Costa
2012-07-30 12:50 ` Kirill A. Shutemov
2012-07-30 12:50 ` Kirill A. Shutemov
2012-07-30 14:09 ` Glauber Costa
2012-07-30 14:09 ` Glauber Costa
2012-07-25 14:38 ` [PATCH 05/10] slab: allow enable_cpu_cache to use preset values for its tunables Glauber Costa
2012-07-25 14:38 ` Glauber Costa
2012-07-25 14:38 ` Glauber Costa
[not found] ` <1343227101-14217-6-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-07-25 17:05 ` Christoph Lameter
2012-07-25 17:05 ` Christoph Lameter
2012-07-25 17:05 ` Christoph Lameter
[not found] ` <alpine.DEB.2.00.1207251204450.3543-sBS69tsa9Uj/9pzu0YdTqQ@public.gmane.org>
2012-07-25 18:24 ` Glauber Costa
2012-07-25 18:24 ` Glauber Costa
2012-07-25 18:24 ` Glauber Costa
[not found] ` <501039F9.7040309-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-07-25 18:33 ` Christoph Lameter
2012-07-25 18:33 ` Christoph Lameter
2012-07-25 18:33 ` Christoph Lameter
[not found] ` <alpine.DEB.2.00.1207251331480.4995-sBS69tsa9Uj/9pzu0YdTqQ@public.gmane.org>
2012-07-26 14:02 ` Glauber Costa
2012-07-26 14:02 ` Glauber Costa
2012-07-26 14:02 ` Glauber Costa
2012-07-25 14:38 ` [PATCH 06/10] sl[au]b: Allocate objects from memcg cache Glauber Costa
2012-07-25 14:38 ` Glauber Costa
2012-07-25 14:38 ` Glauber Costa
[not found] ` <1343227101-14217-7-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-07-30 12:58 ` Kirill A. Shutemov
2012-07-30 12:58 ` Kirill A. Shutemov
2012-07-30 12:58 ` Kirill A. Shutemov
2012-07-30 13:11 ` Glauber Costa [this message]
2012-07-30 13:11 ` Glauber Costa
2012-07-25 14:38 ` [PATCH 07/10] memcg: destroy memcg caches Glauber Costa
2012-07-25 14:38 ` Glauber Costa
2012-07-25 14:38 ` Glauber Costa
2012-07-25 14:38 ` [PATCH 08/10] memcg/sl[au]b Track all the memcg children of a kmem_cache Glauber Costa
2012-07-25 14:38 ` Glauber Costa
2012-07-25 14:38 ` Glauber Costa
2012-07-25 14:38 ` [PATCH 09/10] slab: slab-specific propagation changes Glauber Costa
2012-07-25 14:38 ` Glauber Costa
2012-07-25 14:38 ` Glauber Costa
2012-07-25 17:07 ` Christoph Lameter
2012-07-25 17:07 ` Christoph Lameter
2012-07-25 14:38 ` [PATCH 10/10] memcg/sl[au]b: shrink dead caches Glauber Costa
2012-07-25 14:38 ` Glauber Costa
2012-07-25 14:38 ` Glauber Costa
[not found] ` <1343227101-14217-11-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-07-25 17:13 ` Christoph Lameter
2012-07-25 17:13 ` Christoph Lameter
2012-07-25 17:13 ` Christoph Lameter
[not found] ` <alpine.DEB.2.00.1207251207180.3543-sBS69tsa9Uj/9pzu0YdTqQ@public.gmane.org>
2012-07-25 18:16 ` Glauber Costa
2012-07-25 18:16 ` Glauber Costa
2012-07-25 18:16 ` Glauber Costa
2012-07-31 16:30 ` [PATCH 00/10] memcg kmem limitation - slab Frederic Weisbecker
2012-07-31 16:30 ` Frederic Weisbecker
2012-07-31 16:30 ` Frederic Weisbecker
[not found] ` <20120731163027.GE17078-oHC15RC7JGTpAmv0O++HtFaTQe2KTcn/@public.gmane.org>
2012-07-31 16:39 ` Glauber Costa
2012-07-31 16:39 ` Glauber Costa
2012-07-31 16:39 ` Glauber Costa
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=501687EA.5050401@parallels.com \
--to=glommer@parallels.com \
--cc=akpm@linux-foundation.org \
--cc=cgroups@vger.kernel.org \
--cc=cl@linux.com \
--cc=devel@openvz.org \
--cc=fweisbec@gmail.com \
--cc=gthelen@google.com \
--cc=hannes@cmpxchg.org \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=kirill@shutemov.name \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.cz \
--cc=penberg@cs.helsinki.fi \
--cc=penberg@kernel.org \
--cc=rientjes@google.com \
--cc=suleiman@google.com \
/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: link
Be 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.