From: Kamezawa Hiroyuki <kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
To: Glauber Costa <glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org,
cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
devel-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org,
Michal Hocko <mhocko-AlSwsSmVLrQ@public.gmane.org>,
Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>,
Andrew Morton
<akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>,
Christoph Lameter <cl-vYTEC60ixJUAvxtiuMwx3w@public.gmane.org>,
David Rientjes <rientjes-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>,
Pekka Enberg <penberg-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
Pekka Enberg <penberg-bbCR+/B0CizivPeTLB3BmA@public.gmane.org>
Subject: Re: [PATCH v2 06/11] memcg: kmem controller infrastructure
Date: Fri, 17 Aug 2012 11:36:26 +0900 [thread overview]
Message-ID: <502DAE2A.1000404@jp.fujitsu.com> (raw)
In-Reply-To: <5028BA9E.7000302-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
(2012/08/13 17:28), Glauber Costa wrote:
>>>> + * Needs to be called after memcg_kmem_new_page, regardless of success or
>>>> + * failure of the allocation. if @page is NULL, this function will revert the
>>>> + * charges. Otherwise, it will commit the memcg given by @handle to the
>>>> + * corresponding page_cgroup.
>>>> + */
>>>> +static __always_inline void
>>>> +memcg_kmem_commit_page(struct page *page, struct mem_cgroup *handle, int order)
>>>> +{
>>>> + if (memcg_kmem_on)
>>>> + __memcg_kmem_commit_page(page, handle, order);
>>>> +}
>> Doesn't this 2 functions has no short-cuts ?
>
> Sorry kame, what exactly do you mean?
>
I meant avoinding function call. But please ignore, I missed following patches.
>> if (memcg_kmem_on && handle) ?
> I guess this can be done to avoid a function call.
>
>> Maybe free() needs to access page_cgroup...
>>
> Can you also be a bit more specific here?
>
Please ignore, I misunderstood the usage of free_accounted_pages().
>>>> +bool __memcg_kmem_new_page(gfp_t gfp, void *_handle, int order)
>>>> +{
>>>> + struct mem_cgroup *memcg;
>>>> + struct mem_cgroup **handle = (struct mem_cgroup **)_handle;
>>>> + bool ret = true;
>>>> + size_t size;
>>>> + struct task_struct *p;
>>>> +
>>>> + *handle = NULL;
>>>> + rcu_read_lock();
>>>> + p = rcu_dereference(current->mm->owner);
>>>> + memcg = mem_cgroup_from_task(p);
>>>> + if (!memcg_kmem_enabled(memcg))
>>>> + goto out;
>>>> +
>>>> + mem_cgroup_get(memcg);
>>>> +
>> This mem_cgroup_get() will be a potentioal performance problem.
>> Don't you have good idea to avoid accessing atomic counter here ?
>> I think some kind of percpu counter or a feature to disable "move task"
>> will be a help.
>
>
>
>
>>>> + pc = lookup_page_cgroup(page);
>>>> + lock_page_cgroup(pc);
>>>> + pc->mem_cgroup = memcg;
>>>> + SetPageCgroupUsed(pc);
>>>> + unlock_page_cgroup(pc);
>>>> +}
>>>> +
>>>> +void __memcg_kmem_free_page(struct page *page, int order)
>>>> +{
>>>> + struct mem_cgroup *memcg;
>>>> + size_t size;
>>>> + struct page_cgroup *pc;
>>>> +
>>>> + if (mem_cgroup_disabled())
>>>> + return;
>>>> +
>>>> + pc = lookup_page_cgroup(page);
>>>> + lock_page_cgroup(pc);
>>>> + memcg = pc->mem_cgroup;
>>>> + pc->mem_cgroup = NULL;
>
>> shouldn't this happen after checking "Used" bit ?
>> Ah, BTW, why do you need to clear pc->memcg ?
>
> As for clearing pc->memcg, I think I'm just being overzealous. I can't
> foresee any problems due to removing it.
>
> As for the Used bit, what difference does it make when we clear it?
>
I just want to see the same logic used in mem_cgroup_uncharge_common().
Hmm, at setting pc->mem_cgroup, the things happens in
set pc->mem_cgroup
set Used bit
order. If you clear pc->mem_cgroup
unset Used bit
clear pc->mem_cgroup
seems reasonable.
>>>> + if (!PageCgroupUsed(pc)) {
>>>> + unlock_page_cgroup(pc);
>>>> + return;
>>>> + }
>>>> + ClearPageCgroupUsed(pc);
>>>> + unlock_page_cgroup(pc);
>>>> +
>>>> + /*
>>>> + * Checking if kmem accounted is enabled won't work for uncharge, since
>>>> + * it is possible that the user enabled kmem tracking, allocated, and
>>>> + * then disabled it again.
>>>> + *
>>>> + * We trust if there is a memcg associated with the page, it is a valid
>>>> + * allocation
>>>> + */
>>>> + if (!memcg)
>>>> + return;
>>>> +
>>>> + WARN_ON(mem_cgroup_is_root(memcg));
>>>> + size = (1 << order) << PAGE_SHIFT;
>>>> + memcg_uncharge_kmem(memcg, size);
>>>> + mem_cgroup_put(memcg);
>> Why do we need ref-counting here ? kmem res_counter cannot work as
>> reference ?
> This is of course the pair of the mem_cgroup_get() you commented on
> earlier. If we need one, we need the other. If we don't need one, we
> don't need the other =)
>
> The guarantee we're trying to give here is that the memcg structure will
> stay around while there are dangling charges to kmem, that we decided
> not to move (remember: moving it for the stack is simple, for the slab
> is very complicated and ill-defined, and I believe it is better to treat
> all kmem equally here)
>
> So maybe we can be clever here, and avoid reference counting at all
> times. We call mem_cgroup_get() when the first charge occurs, and then
> go for mem_cgroup_put() when our count reaches 0.
>
> What do you think about that?
>
I think that should work. I don't want to add not-optimized atomic counter ops
in this very hot path.
>
>>>> +#ifdef CONFIG_MEMCG_KMEM
>>>> +int memcg_charge_kmem(struct mem_cgroup *memcg, gfp_t gfp, s64 delta)
>>>> +{
>> What does 'delta' means ?
>>
> I can change it to something like nr_bytes, more informative.
>
>>>> + struct res_counter *fail_res;
>>>> + struct mem_cgroup *_memcg;
>>>> + int ret;
>>>> + bool may_oom;
>>>> + bool nofail = false;
>>>> +
>>>> + may_oom = (gfp & __GFP_WAIT) && (gfp & __GFP_FS) &&
>>>> + !(gfp & __GFP_NORETRY);
>>>> +
>>>> + ret = 0;
>>>> +
>>>> + if (!memcg)
>>>> + return ret;
>>>> +
>>>> + _memcg = memcg;
>>>> + ret = __mem_cgroup_try_charge(NULL, gfp, delta / PAGE_SIZE,
>>>> + &_memcg, may_oom);
>>>> +
>>>> + if (ret == -EINTR) {
>>>> + nofail = true;
>>>> + /*
>>>> + * __mem_cgroup_try_charge() chosed to bypass to root due to
>>>> + * OOM kill or fatal signal. Since our only options are to
>>>> + * either fail the allocation or charge it to this cgroup, do
>>>> + * it as a temporary condition. But we can't fail. From a
>>>> + * kmem/slab perspective, the cache has already been selected,
>>>> + * by mem_cgroup_get_kmem_cache(), so it is too late to change
>>>> + * our minds
>>>> + */
>>>> + res_counter_charge_nofail(&memcg->res, delta, &fail_res);
>>>> + if (do_swap_account)
>>>> + res_counter_charge_nofail(&memcg->memsw, delta,
>>>> + &fail_res);
>>>> + ret = 0;
>> Hm, you returns 0 and this charge may never be uncharged....right ?
>>
>
> Can't see why. By returning 0 we inform our caller that the allocation
> succeeded. It is up to him to undo it later through a call to uncharge.
>
Hmm, okay. You trust callers.
Thanks,
-Kame
WARNING: multiple messages have this Message-ID (diff)
From: Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
To: Glauber Costa <glommer@parallels.com>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
cgroups@vger.kernel.org, devel@openvz.org,
Michal Hocko <mhocko@suse.cz>,
Johannes Weiner <hannes@cmpxchg.org>,
Andrew Morton <akpm@linux-foundation.org>,
Christoph Lameter <cl@linux.com>,
David Rientjes <rientjes@google.com>,
Pekka Enberg <penberg@kernel.org>,
Pekka Enberg <penberg@cs.helsinki.fi>
Subject: Re: [PATCH v2 06/11] memcg: kmem controller infrastructure
Date: Fri, 17 Aug 2012 11:36:26 +0900 [thread overview]
Message-ID: <502DAE2A.1000404@jp.fujitsu.com> (raw)
In-Reply-To: <5028BA9E.7000302@parallels.com>
(2012/08/13 17:28), Glauber Costa wrote:
>>>> + * Needs to be called after memcg_kmem_new_page, regardless of success or
>>>> + * failure of the allocation. if @page is NULL, this function will revert the
>>>> + * charges. Otherwise, it will commit the memcg given by @handle to the
>>>> + * corresponding page_cgroup.
>>>> + */
>>>> +static __always_inline void
>>>> +memcg_kmem_commit_page(struct page *page, struct mem_cgroup *handle, int order)
>>>> +{
>>>> + if (memcg_kmem_on)
>>>> + __memcg_kmem_commit_page(page, handle, order);
>>>> +}
>> Doesn't this 2 functions has no short-cuts ?
>
> Sorry kame, what exactly do you mean?
>
I meant avoinding function call. But please ignore, I missed following patches.
>> if (memcg_kmem_on && handle) ?
> I guess this can be done to avoid a function call.
>
>> Maybe free() needs to access page_cgroup...
>>
> Can you also be a bit more specific here?
>
Please ignore, I misunderstood the usage of free_accounted_pages().
>>>> +bool __memcg_kmem_new_page(gfp_t gfp, void *_handle, int order)
>>>> +{
>>>> + struct mem_cgroup *memcg;
>>>> + struct mem_cgroup **handle = (struct mem_cgroup **)_handle;
>>>> + bool ret = true;
>>>> + size_t size;
>>>> + struct task_struct *p;
>>>> +
>>>> + *handle = NULL;
>>>> + rcu_read_lock();
>>>> + p = rcu_dereference(current->mm->owner);
>>>> + memcg = mem_cgroup_from_task(p);
>>>> + if (!memcg_kmem_enabled(memcg))
>>>> + goto out;
>>>> +
>>>> + mem_cgroup_get(memcg);
>>>> +
>> This mem_cgroup_get() will be a potentioal performance problem.
>> Don't you have good idea to avoid accessing atomic counter here ?
>> I think some kind of percpu counter or a feature to disable "move task"
>> will be a help.
>
>
>
>
>>>> + pc = lookup_page_cgroup(page);
>>>> + lock_page_cgroup(pc);
>>>> + pc->mem_cgroup = memcg;
>>>> + SetPageCgroupUsed(pc);
>>>> + unlock_page_cgroup(pc);
>>>> +}
>>>> +
>>>> +void __memcg_kmem_free_page(struct page *page, int order)
>>>> +{
>>>> + struct mem_cgroup *memcg;
>>>> + size_t size;
>>>> + struct page_cgroup *pc;
>>>> +
>>>> + if (mem_cgroup_disabled())
>>>> + return;
>>>> +
>>>> + pc = lookup_page_cgroup(page);
>>>> + lock_page_cgroup(pc);
>>>> + memcg = pc->mem_cgroup;
>>>> + pc->mem_cgroup = NULL;
>
>> shouldn't this happen after checking "Used" bit ?
>> Ah, BTW, why do you need to clear pc->memcg ?
>
> As for clearing pc->memcg, I think I'm just being overzealous. I can't
> foresee any problems due to removing it.
>
> As for the Used bit, what difference does it make when we clear it?
>
I just want to see the same logic used in mem_cgroup_uncharge_common().
Hmm, at setting pc->mem_cgroup, the things happens in
set pc->mem_cgroup
set Used bit
order. If you clear pc->mem_cgroup
unset Used bit
clear pc->mem_cgroup
seems reasonable.
>>>> + if (!PageCgroupUsed(pc)) {
>>>> + unlock_page_cgroup(pc);
>>>> + return;
>>>> + }
>>>> + ClearPageCgroupUsed(pc);
>>>> + unlock_page_cgroup(pc);
>>>> +
>>>> + /*
>>>> + * Checking if kmem accounted is enabled won't work for uncharge, since
>>>> + * it is possible that the user enabled kmem tracking, allocated, and
>>>> + * then disabled it again.
>>>> + *
>>>> + * We trust if there is a memcg associated with the page, it is a valid
>>>> + * allocation
>>>> + */
>>>> + if (!memcg)
>>>> + return;
>>>> +
>>>> + WARN_ON(mem_cgroup_is_root(memcg));
>>>> + size = (1 << order) << PAGE_SHIFT;
>>>> + memcg_uncharge_kmem(memcg, size);
>>>> + mem_cgroup_put(memcg);
>> Why do we need ref-counting here ? kmem res_counter cannot work as
>> reference ?
> This is of course the pair of the mem_cgroup_get() you commented on
> earlier. If we need one, we need the other. If we don't need one, we
> don't need the other =)
>
> The guarantee we're trying to give here is that the memcg structure will
> stay around while there are dangling charges to kmem, that we decided
> not to move (remember: moving it for the stack is simple, for the slab
> is very complicated and ill-defined, and I believe it is better to treat
> all kmem equally here)
>
> So maybe we can be clever here, and avoid reference counting at all
> times. We call mem_cgroup_get() when the first charge occurs, and then
> go for mem_cgroup_put() when our count reaches 0.
>
> What do you think about that?
>
I think that should work. I don't want to add not-optimized atomic counter ops
in this very hot path.
>
>>>> +#ifdef CONFIG_MEMCG_KMEM
>>>> +int memcg_charge_kmem(struct mem_cgroup *memcg, gfp_t gfp, s64 delta)
>>>> +{
>> What does 'delta' means ?
>>
> I can change it to something like nr_bytes, more informative.
>
>>>> + struct res_counter *fail_res;
>>>> + struct mem_cgroup *_memcg;
>>>> + int ret;
>>>> + bool may_oom;
>>>> + bool nofail = false;
>>>> +
>>>> + may_oom = (gfp & __GFP_WAIT) && (gfp & __GFP_FS) &&
>>>> + !(gfp & __GFP_NORETRY);
>>>> +
>>>> + ret = 0;
>>>> +
>>>> + if (!memcg)
>>>> + return ret;
>>>> +
>>>> + _memcg = memcg;
>>>> + ret = __mem_cgroup_try_charge(NULL, gfp, delta / PAGE_SIZE,
>>>> + &_memcg, may_oom);
>>>> +
>>>> + if (ret == -EINTR) {
>>>> + nofail = true;
>>>> + /*
>>>> + * __mem_cgroup_try_charge() chosed to bypass to root due to
>>>> + * OOM kill or fatal signal. Since our only options are to
>>>> + * either fail the allocation or charge it to this cgroup, do
>>>> + * it as a temporary condition. But we can't fail. From a
>>>> + * kmem/slab perspective, the cache has already been selected,
>>>> + * by mem_cgroup_get_kmem_cache(), so it is too late to change
>>>> + * our minds
>>>> + */
>>>> + res_counter_charge_nofail(&memcg->res, delta, &fail_res);
>>>> + if (do_swap_account)
>>>> + res_counter_charge_nofail(&memcg->memsw, delta,
>>>> + &fail_res);
>>>> + ret = 0;
>> Hm, you returns 0 and this charge may never be uncharged....right ?
>>
>
> Can't see why. By returning 0 we inform our caller that the allocation
> succeeded. It is up to him to undo it later through a call to uncharge.
>
Hmm, okay. You trust callers.
Thanks,
-Kame
--
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: Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
To: Glauber Costa <glommer@parallels.com>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
cgroups@vger.kernel.org, devel@openvz.org,
Michal Hocko <mhocko@suse.cz>,
Johannes Weiner <hannes@cmpxchg.org>,
Andrew Morton <akpm@linux-foundation.org>,
Christoph Lameter <cl@linux.com>,
David Rientjes <rientjes@google.com>,
Pekka Enberg <penberg@kernel.org>,
Pekka Enberg <penberg@cs.helsinki.fi>
Subject: Re: [PATCH v2 06/11] memcg: kmem controller infrastructure
Date: Fri, 17 Aug 2012 11:36:26 +0900 [thread overview]
Message-ID: <502DAE2A.1000404@jp.fujitsu.com> (raw)
In-Reply-To: <5028BA9E.7000302@parallels.com>
(2012/08/13 17:28), Glauber Costa wrote:
>>>> + * Needs to be called after memcg_kmem_new_page, regardless of success or
>>>> + * failure of the allocation. if @page is NULL, this function will revert the
>>>> + * charges. Otherwise, it will commit the memcg given by @handle to the
>>>> + * corresponding page_cgroup.
>>>> + */
>>>> +static __always_inline void
>>>> +memcg_kmem_commit_page(struct page *page, struct mem_cgroup *handle, int order)
>>>> +{
>>>> + if (memcg_kmem_on)
>>>> + __memcg_kmem_commit_page(page, handle, order);
>>>> +}
>> Doesn't this 2 functions has no short-cuts ?
>
> Sorry kame, what exactly do you mean?
>
I meant avoinding function call. But please ignore, I missed following patches.
>> if (memcg_kmem_on && handle) ?
> I guess this can be done to avoid a function call.
>
>> Maybe free() needs to access page_cgroup...
>>
> Can you also be a bit more specific here?
>
Please ignore, I misunderstood the usage of free_accounted_pages().
>>>> +bool __memcg_kmem_new_page(gfp_t gfp, void *_handle, int order)
>>>> +{
>>>> + struct mem_cgroup *memcg;
>>>> + struct mem_cgroup **handle = (struct mem_cgroup **)_handle;
>>>> + bool ret = true;
>>>> + size_t size;
>>>> + struct task_struct *p;
>>>> +
>>>> + *handle = NULL;
>>>> + rcu_read_lock();
>>>> + p = rcu_dereference(current->mm->owner);
>>>> + memcg = mem_cgroup_from_task(p);
>>>> + if (!memcg_kmem_enabled(memcg))
>>>> + goto out;
>>>> +
>>>> + mem_cgroup_get(memcg);
>>>> +
>> This mem_cgroup_get() will be a potentioal performance problem.
>> Don't you have good idea to avoid accessing atomic counter here ?
>> I think some kind of percpu counter or a feature to disable "move task"
>> will be a help.
>
>
>
>
>>>> + pc = lookup_page_cgroup(page);
>>>> + lock_page_cgroup(pc);
>>>> + pc->mem_cgroup = memcg;
>>>> + SetPageCgroupUsed(pc);
>>>> + unlock_page_cgroup(pc);
>>>> +}
>>>> +
>>>> +void __memcg_kmem_free_page(struct page *page, int order)
>>>> +{
>>>> + struct mem_cgroup *memcg;
>>>> + size_t size;
>>>> + struct page_cgroup *pc;
>>>> +
>>>> + if (mem_cgroup_disabled())
>>>> + return;
>>>> +
>>>> + pc = lookup_page_cgroup(page);
>>>> + lock_page_cgroup(pc);
>>>> + memcg = pc->mem_cgroup;
>>>> + pc->mem_cgroup = NULL;
>
>> shouldn't this happen after checking "Used" bit ?
>> Ah, BTW, why do you need to clear pc->memcg ?
>
> As for clearing pc->memcg, I think I'm just being overzealous. I can't
> foresee any problems due to removing it.
>
> As for the Used bit, what difference does it make when we clear it?
>
I just want to see the same logic used in mem_cgroup_uncharge_common().
Hmm, at setting pc->mem_cgroup, the things happens in
set pc->mem_cgroup
set Used bit
order. If you clear pc->mem_cgroup
unset Used bit
clear pc->mem_cgroup
seems reasonable.
>>>> + if (!PageCgroupUsed(pc)) {
>>>> + unlock_page_cgroup(pc);
>>>> + return;
>>>> + }
>>>> + ClearPageCgroupUsed(pc);
>>>> + unlock_page_cgroup(pc);
>>>> +
>>>> + /*
>>>> + * Checking if kmem accounted is enabled won't work for uncharge, since
>>>> + * it is possible that the user enabled kmem tracking, allocated, and
>>>> + * then disabled it again.
>>>> + *
>>>> + * We trust if there is a memcg associated with the page, it is a valid
>>>> + * allocation
>>>> + */
>>>> + if (!memcg)
>>>> + return;
>>>> +
>>>> + WARN_ON(mem_cgroup_is_root(memcg));
>>>> + size = (1 << order) << PAGE_SHIFT;
>>>> + memcg_uncharge_kmem(memcg, size);
>>>> + mem_cgroup_put(memcg);
>> Why do we need ref-counting here ? kmem res_counter cannot work as
>> reference ?
> This is of course the pair of the mem_cgroup_get() you commented on
> earlier. If we need one, we need the other. If we don't need one, we
> don't need the other =)
>
> The guarantee we're trying to give here is that the memcg structure will
> stay around while there are dangling charges to kmem, that we decided
> not to move (remember: moving it for the stack is simple, for the slab
> is very complicated and ill-defined, and I believe it is better to treat
> all kmem equally here)
>
> So maybe we can be clever here, and avoid reference counting at all
> times. We call mem_cgroup_get() when the first charge occurs, and then
> go for mem_cgroup_put() when our count reaches 0.
>
> What do you think about that?
>
I think that should work. I don't want to add not-optimized atomic counter ops
in this very hot path.
>
>>>> +#ifdef CONFIG_MEMCG_KMEM
>>>> +int memcg_charge_kmem(struct mem_cgroup *memcg, gfp_t gfp, s64 delta)
>>>> +{
>> What does 'delta' means ?
>>
> I can change it to something like nr_bytes, more informative.
>
>>>> + struct res_counter *fail_res;
>>>> + struct mem_cgroup *_memcg;
>>>> + int ret;
>>>> + bool may_oom;
>>>> + bool nofail = false;
>>>> +
>>>> + may_oom = (gfp & __GFP_WAIT) && (gfp & __GFP_FS) &&
>>>> + !(gfp & __GFP_NORETRY);
>>>> +
>>>> + ret = 0;
>>>> +
>>>> + if (!memcg)
>>>> + return ret;
>>>> +
>>>> + _memcg = memcg;
>>>> + ret = __mem_cgroup_try_charge(NULL, gfp, delta / PAGE_SIZE,
>>>> + &_memcg, may_oom);
>>>> +
>>>> + if (ret == -EINTR) {
>>>> + nofail = true;
>>>> + /*
>>>> + * __mem_cgroup_try_charge() chosed to bypass to root due to
>>>> + * OOM kill or fatal signal. Since our only options are to
>>>> + * either fail the allocation or charge it to this cgroup, do
>>>> + * it as a temporary condition. But we can't fail. From a
>>>> + * kmem/slab perspective, the cache has already been selected,
>>>> + * by mem_cgroup_get_kmem_cache(), so it is too late to change
>>>> + * our minds
>>>> + */
>>>> + res_counter_charge_nofail(&memcg->res, delta, &fail_res);
>>>> + if (do_swap_account)
>>>> + res_counter_charge_nofail(&memcg->memsw, delta,
>>>> + &fail_res);
>>>> + ret = 0;
>> Hm, you returns 0 and this charge may never be uncharged....right ?
>>
>
> Can't see why. By returning 0 we inform our caller that the allocation
> succeeded. It is up to him to undo it later through a call to uncharge.
>
Hmm, okay. You trust callers.
Thanks,
-Kame
next prev parent reply other threads:[~2012-08-17 2:36 UTC|newest]
Thread overview: 352+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-09 13:01 [PATCH v2 00/11] Request for Inclusion: kmem controller for memcg Glauber Costa
2012-08-09 13:01 ` Glauber Costa
2012-08-09 13:01 ` Glauber Costa
[not found] ` <1344517279-30646-1-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-08-09 13:01 ` [PATCH v2 01/11] memcg: Make it possible to use the stock for more than one page Glauber Costa
2012-08-09 13:01 ` Glauber Costa
2012-08-09 13:01 ` Glauber Costa
2012-08-10 15:12 ` Michal Hocko
2012-08-10 15:12 ` Michal Hocko
2012-08-09 13:01 ` [PATCH v2 02/11] memcg: Reclaim when more than one page needed Glauber Costa
2012-08-09 13:01 ` Glauber Costa
2012-08-09 13:01 ` Glauber Costa
[not found] ` <1344517279-30646-3-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-08-10 15:42 ` Michal Hocko
2012-08-10 15:42 ` Michal Hocko
2012-08-10 15:42 ` Michal Hocko
[not found] ` <20120810154240.GG1425-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2012-08-10 16:49 ` Kamezawa Hiroyuki
2012-08-10 16:49 ` Kamezawa Hiroyuki
2012-08-10 16:49 ` Kamezawa Hiroyuki
[not found] ` <50253B95.7010905-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2012-08-10 17:28 ` Michal Hocko
2012-08-10 17:28 ` Michal Hocko
2012-08-10 17:28 ` Michal Hocko
2012-08-10 17:56 ` Kamezawa Hiroyuki
2012-08-10 17:56 ` Kamezawa Hiroyuki
2012-08-10 17:30 ` Michal Hocko
2012-08-10 17:30 ` Michal Hocko
2012-08-10 17:30 ` Michal Hocko
[not found] ` <20120810173000.GB14591-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2012-08-10 18:52 ` Michal Hocko
2012-08-10 18:52 ` Michal Hocko
2012-08-10 18:52 ` Michal Hocko
2012-08-10 18:54 ` Michal Hocko
2012-08-10 18:54 ` Michal Hocko
2012-08-10 18:54 ` Michal Hocko
[not found] ` <20120810185417.GB16110-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2012-08-13 8:05 ` Glauber Costa
2012-08-13 8:05 ` Glauber Costa
2012-08-13 8:05 ` Glauber Costa
[not found] ` <5028B552.2070708-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-08-13 13:10 ` Michal Hocko
2012-08-13 13:10 ` Michal Hocko
2012-08-13 13:10 ` Michal Hocko
2012-08-09 13:01 ` [PATCH v2 03/11] memcg: change defines to an enum Glauber Costa
2012-08-09 13:01 ` Glauber Costa
2012-08-09 13:01 ` Glauber Costa
[not found] ` <1344517279-30646-4-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-08-10 15:43 ` Michal Hocko
2012-08-10 15:43 ` Michal Hocko
2012-08-10 15:43 ` Michal Hocko
2012-08-09 13:01 ` [PATCH v2 04/11] kmem accounting basic infrastructure Glauber Costa
2012-08-09 13:01 ` Glauber Costa
2012-08-09 13:01 ` Glauber Costa
[not found] ` <1344517279-30646-5-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-08-10 17:02 ` Kamezawa Hiroyuki
2012-08-10 17:02 ` Kamezawa Hiroyuki
2012-08-10 17:02 ` Kamezawa Hiroyuki
[not found] ` <50253EA8.9080205-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2012-08-13 8:36 ` Glauber Costa
2012-08-13 8:36 ` Glauber Costa
2012-08-13 8:36 ` Glauber Costa
2012-08-17 2:38 ` Kamezawa Hiroyuki
2012-08-17 2:38 ` Kamezawa Hiroyuki
2012-08-14 16:21 ` Michal Hocko
2012-08-14 16:21 ` Michal Hocko
2012-08-15 9:33 ` Glauber Costa
2012-08-15 9:33 ` Glauber Costa
[not found] ` <502B6D03.1080804-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-08-15 11:12 ` James Bottomley
2012-08-15 11:12 ` James Bottomley
2012-08-15 11:12 ` James Bottomley
[not found] ` <1345029143.2976.41.camel-sFMDBYUN5F8GjUHQrlYNx2Wm91YjaHnnhRte9Li2A+AAvxtiuMwx3w@public.gmane.org>
2012-08-15 12:55 ` Michal Hocko
2012-08-15 12:55 ` Michal Hocko
2012-08-15 12:55 ` Michal Hocko
2012-08-15 13:29 ` James Bottomley
2012-08-15 13:29 ` James Bottomley
2012-08-15 12:39 ` Michal Hocko
2012-08-15 12:39 ` Michal Hocko
2012-08-15 12:39 ` Michal Hocko
[not found] ` <20120815123931.GF23985-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2012-08-15 12:53 ` Glauber Costa
2012-08-15 12:53 ` Glauber Costa
2012-08-15 12:53 ` Glauber Costa
[not found] ` <502B9BD4.4070003-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-08-15 13:02 ` Michal Hocko
2012-08-15 13:02 ` Michal Hocko
2012-08-15 13:02 ` Michal Hocko
[not found] ` <20120815130228.GH23985-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2012-08-15 13:04 ` Glauber Costa
2012-08-15 13:04 ` Glauber Costa
2012-08-15 13:04 ` Glauber Costa
[not found] ` <502B9E5F.2080907-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-08-15 13:26 ` Michal Hocko
2012-08-15 13:26 ` Michal Hocko
2012-08-15 13:26 ` Michal Hocko
[not found] ` <20120815132621.GJ23985-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2012-08-15 13:31 ` Glauber Costa
2012-08-15 13:31 ` Glauber Costa
2012-08-15 13:31 ` Glauber Costa
[not found] ` <502BA4AC.9040000-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-08-15 14:10 ` Michal Hocko
2012-08-15 14:10 ` Michal Hocko
2012-08-15 14:10 ` Michal Hocko
[not found] ` <20120815141041.GK23985-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2012-08-15 14:11 ` Glauber Costa
2012-08-15 14:11 ` Glauber Costa
2012-08-15 14:11 ` Glauber Costa
2012-08-15 14:47 ` Christoph Lameter
2012-08-15 14:47 ` Christoph Lameter
[not found] ` <000001392ac15404-43a3fd2c-a6d3-4985-b173-74bb586ad47c-000000-p/GC64/jrecnJqMo6gzdpkEOCMrvLtNR@public.gmane.org>
2012-08-15 15:11 ` Glauber Costa
2012-08-15 15:11 ` Glauber Costa
2012-08-15 15:11 ` Glauber Costa
2012-08-15 15:34 ` Christoph Lameter
2012-08-15 15:34 ` Christoph Lameter
[not found] ` <000001392aec1926-72b3a631-1fb1-460c-803d-38c4405151e1-000000-p/GC64/jrecnJqMo6gzdpkEOCMrvLtNR@public.gmane.org>
2012-08-15 15:35 ` Glauber Costa
2012-08-15 15:35 ` Glauber Costa
2012-08-15 15:35 ` Glauber Costa
[not found] ` <502BC1B1.3010807-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-08-15 17:26 ` Christoph Lameter
2012-08-15 17:26 ` Christoph Lameter
2012-08-15 17:26 ` Christoph Lameter
2012-08-15 18:11 ` Ying Han
2012-08-15 18:11 ` Ying Han
2012-08-15 18:11 ` Ying Han
[not found] ` <CALWz4ixv8wfOqQ34CBLQ1jVdWoQc4-hQRkeRTb6U5x93gxjZZw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-08-15 18:25 ` Christoph Lameter
2012-08-15 18:25 ` Christoph Lameter
2012-08-15 18:25 ` Christoph Lameter
[not found] ` <000001392b881bf0-4cf7cb93-c142-4ddb-960a-b35390caca0f-000000-p/GC64/jrecnJqMo6gzdpkEOCMrvLtNR@public.gmane.org>
2012-08-15 19:22 ` Glauber Costa
2012-08-15 19:22 ` Glauber Costa
2012-08-15 19:22 ` Glauber Costa
2012-08-15 18:07 ` Ying Han
2012-08-15 18:07 ` Ying Han
2012-08-15 15:19 ` Greg Thelen
2012-08-15 15:19 ` Greg Thelen
2012-08-15 15:36 ` Christoph Lameter
2012-08-15 15:36 ` Christoph Lameter
2012-08-15 18:01 ` Ying Han
2012-08-15 18:01 ` Ying Han
[not found] ` <CALWz4ixYXN9FGJ1E9CZ9viJ=s3k63Pm8t3nakQvi+1T5qtyFYw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-08-15 18:00 ` Glauber Costa
2012-08-15 18:00 ` Glauber Costa
2012-08-15 18:00 ` Glauber Costa
2012-08-15 19:50 ` Ying Han
2012-08-15 19:50 ` Ying Han
[not found] ` <CALWz4iwgnqwq5k_zhpsiiwrj8Y=OkCUg7H96khJWPZScSQE=nw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-08-16 15:25 ` Michal Hocko
2012-08-16 15:25 ` Michal Hocko
2012-08-16 15:25 ` Michal Hocko
2012-08-17 5:58 ` Ying Han
2012-08-17 5:58 ` Ying Han
2012-08-09 13:01 ` [PATCH v2 05/11] Add a __GFP_KMEMCG flag Glauber Costa
2012-08-09 13:01 ` Glauber Costa
2012-08-09 13:01 ` Glauber Costa
[not found] ` <1344517279-30646-6-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-08-10 17:07 ` Kamezawa Hiroyuki
2012-08-10 17:07 ` Kamezawa Hiroyuki
2012-08-10 17:07 ` Kamezawa Hiroyuki
2012-08-09 13:01 ` [PATCH v2 06/11] memcg: kmem controller infrastructure Glauber Costa
2012-08-09 13:01 ` Glauber Costa
2012-08-09 13:01 ` Glauber Costa
[not found] ` <1344517279-30646-7-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-08-10 17:27 ` Kamezawa Hiroyuki
2012-08-10 17:27 ` Kamezawa Hiroyuki
2012-08-10 17:27 ` Kamezawa Hiroyuki
2012-08-13 8:28 ` Glauber Costa
2012-08-13 8:28 ` Glauber Costa
2012-08-14 18:58 ` Greg Thelen
2012-08-14 18:58 ` Greg Thelen
[not found] ` <xr93ipcl9u7x.fsf-aSPv4SP+Du0KgorLzL7FmE7CuiCeIGUxQQ4Iyu8u01E@public.gmane.org>
2012-08-15 9:18 ` Glauber Costa
2012-08-15 9:18 ` Glauber Costa
2012-08-15 9:18 ` Glauber Costa
2012-08-15 16:38 ` Greg Thelen
2012-08-15 16:38 ` Greg Thelen
[not found] ` <xr93wr109kke.fsf-aSPv4SP+Du0KgorLzL7FmE7CuiCeIGUxQQ4Iyu8u01E@public.gmane.org>
2012-08-15 17:00 ` Glauber Costa
2012-08-15 17:00 ` Glauber Costa
2012-08-15 17:00 ` Glauber Costa
2012-08-15 17:12 ` Greg Thelen
2012-08-15 17:12 ` Greg Thelen
2012-08-15 17:12 ` Greg Thelen
[not found] ` <xr93lihg9j0q.fsf-aSPv4SP+Du0KgorLzL7FmE7CuiCeIGUxQQ4Iyu8u01E@public.gmane.org>
2012-08-15 19:31 ` Glauber Costa
2012-08-15 19:31 ` Glauber Costa
2012-08-15 19:31 ` Glauber Costa
[not found] ` <502BF916.10902-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-08-16 3:37 ` Greg Thelen
2012-08-16 3:37 ` Greg Thelen
2012-08-16 3:37 ` Greg Thelen
[not found] ` <xr93zk5vecde.fsf-aSPv4SP+Du0KgorLzL7FmE7CuiCeIGUxQQ4Iyu8u01E@public.gmane.org>
2012-08-16 7:47 ` Glauber Costa
2012-08-16 7:47 ` Glauber Costa
2012-08-16 7:47 ` Glauber Costa
2012-08-20 13:36 ` Kamezawa Hiroyuki
2012-08-20 13:36 ` Kamezawa Hiroyuki
2012-08-20 15:29 ` Glauber Costa
2012-08-20 15:29 ` Glauber Costa
2012-08-20 15:29 ` Glauber Costa
[not found] ` <5028BA9E.7000302-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-08-17 2:36 ` Kamezawa Hiroyuki [this message]
2012-08-17 2:36 ` Kamezawa Hiroyuki
2012-08-17 2:36 ` Kamezawa Hiroyuki
[not found] ` <502DAE2A.1000404-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2012-08-17 7:04 ` Glauber Costa
2012-08-17 7:04 ` Glauber Costa
2012-08-17 7:04 ` Glauber Costa
2012-08-14 11:00 ` Glauber Costa
2012-08-14 11:00 ` Glauber Costa
2012-08-14 17:25 ` Michal Hocko
2012-08-14 17:25 ` Michal Hocko
2012-08-14 17:25 ` Michal Hocko
2012-08-15 9:42 ` Glauber Costa
2012-08-15 9:42 ` Glauber Costa
2012-08-15 10:44 ` Glauber Costa
2012-08-15 10:44 ` Glauber Costa
[not found] ` <502B6F00.8040207-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-08-15 13:09 ` Michal Hocko
2012-08-15 13:09 ` Michal Hocko
2012-08-15 13:09 ` Michal Hocko
2012-08-15 14:01 ` Glauber Costa
2012-08-15 14:01 ` Glauber Costa
[not found] ` <502BABCF.7020608-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-08-15 14:23 ` Michal Hocko
2012-08-15 14:23 ` Michal Hocko
2012-08-15 14:23 ` Michal Hocko
2012-08-15 14:27 ` Glauber Costa
2012-08-15 14:27 ` Glauber Costa
2012-08-16 9:53 ` Michal Hocko
2012-08-16 9:53 ` Michal Hocko
[not found] ` <20120816095309.GB2817-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2012-08-16 9:57 ` Glauber Costa
2012-08-16 9:57 ` Glauber Costa
2012-08-16 9:57 ` Glauber Costa
2012-08-16 15:05 ` Michal Hocko
2012-08-16 15:05 ` Michal Hocko
2012-08-16 15:22 ` Glauber Costa
2012-08-16 15:22 ` Glauber Costa
2012-08-11 5:11 ` Greg Thelen
2012-08-11 5:11 ` Greg Thelen
2012-08-13 8:07 ` Glauber Costa
2012-08-13 8:07 ` Glauber Costa
2012-08-13 9:59 ` Glauber Costa
2012-08-13 9:59 ` Glauber Costa
2012-08-13 21:21 ` Greg Thelen
2012-08-13 21:21 ` Greg Thelen
2012-08-21 21:50 ` Greg Thelen
2012-08-21 21:50 ` Greg Thelen
2012-08-22 8:35 ` Glauber Costa
2012-08-22 8:35 ` Glauber Costa
[not found] ` <503499CC.7070704-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-08-23 0:07 ` Greg Thelen
2012-08-23 0:07 ` Greg Thelen
2012-08-23 0:07 ` Greg Thelen
[not found] ` <xr93boi2v5bi.fsf-aSPv4SP+Du0KgorLzL7FmE7CuiCeIGUxQQ4Iyu8u01E@public.gmane.org>
2012-08-23 7:51 ` Glauber Costa
2012-08-23 7:51 ` Glauber Costa
2012-08-23 7:51 ` Glauber Costa
2012-08-09 13:01 ` [PATCH v2 07/11] mm: Allocate kernel pages to the right memcg Glauber Costa
2012-08-09 13:01 ` Glauber Costa
2012-08-09 13:01 ` Glauber Costa
[not found] ` <1344517279-30646-8-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-08-09 16:33 ` Greg Thelen
2012-08-09 16:33 ` Greg Thelen
2012-08-09 16:33 ` Greg Thelen
[not found] ` <xr93boikgh4w.fsf-aSPv4SP+Du0KgorLzL7FmE7CuiCeIGUxQQ4Iyu8u01E@public.gmane.org>
2012-08-09 16:42 ` Glauber Costa
2012-08-09 16:42 ` Glauber Costa
2012-08-09 16:42 ` Glauber Costa
2012-08-10 17:33 ` Kamezawa Hiroyuki
2012-08-10 17:33 ` Kamezawa Hiroyuki
2012-08-10 17:33 ` Kamezawa Hiroyuki
[not found] ` <502545D2.80708-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2012-08-13 8:03 ` Glauber Costa
2012-08-13 8:03 ` Glauber Costa
2012-08-13 8:03 ` Glauber Costa
2012-08-13 8:57 ` Mel Gorman
2012-08-13 8:57 ` Mel Gorman
2012-08-14 15:16 ` Mel Gorman
2012-08-14 15:16 ` Mel Gorman
2012-08-14 15:16 ` Mel Gorman
2012-08-15 9:08 ` Glauber Costa
2012-08-15 9:08 ` Glauber Costa
[not found] ` <502B66F8.30909-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-08-15 13:22 ` Mel Gorman
2012-08-15 13:22 ` Mel Gorman
2012-08-15 13:22 ` Mel Gorman
2012-08-15 13:39 ` Glauber Costa
2012-08-15 13:39 ` Glauber Costa
[not found] ` <20120815132244.GQ4177-l3A5Bk7waGM@public.gmane.org>
2012-08-15 13:51 ` Glauber Costa
2012-08-15 13:51 ` Glauber Costa
2012-08-15 13:51 ` Glauber Costa
2012-08-15 9:24 ` Michal Hocko
2012-08-15 9:24 ` Michal Hocko
2012-08-15 9:24 ` Michal Hocko
2012-08-10 17:36 ` Greg Thelen
2012-08-10 17:36 ` Greg Thelen
2012-08-10 17:36 ` Greg Thelen
2012-08-13 8:02 ` Glauber Costa
2012-08-13 8:02 ` Glauber Costa
2012-08-09 13:01 ` [PATCH v2 08/11] memcg: disable kmem code when not in use Glauber Costa
2012-08-09 13:01 ` Glauber Costa
2012-08-09 13:01 ` Glauber Costa
2012-08-17 7:02 ` Michal Hocko
2012-08-17 7:02 ` Michal Hocko
2012-08-17 7:01 ` Glauber Costa
2012-08-17 7:01 ` Glauber Costa
2012-08-17 8:04 ` Michal Hocko
2012-08-17 8:04 ` Michal Hocko
2012-08-09 13:01 ` [PATCH v2 09/11] memcg: propagate kmem limiting information to children Glauber Costa
2012-08-09 13:01 ` Glauber Costa
2012-08-09 13:01 ` Glauber Costa
[not found] ` <1344517279-30646-10-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-08-10 17:51 ` Kamezawa Hiroyuki
2012-08-10 17:51 ` Kamezawa Hiroyuki
2012-08-10 17:51 ` Kamezawa Hiroyuki
[not found] ` <50254A0A.3080805-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2012-08-13 8:01 ` Glauber Costa
2012-08-13 8:01 ` Glauber Costa
2012-08-13 8:01 ` Glauber Costa
2012-08-17 9:00 ` Michal Hocko
2012-08-17 9:00 ` Michal Hocko
2012-08-17 9:15 ` Glauber Costa
2012-08-17 9:15 ` Glauber Costa
2012-08-17 9:35 ` Michal Hocko
2012-08-17 9:35 ` Michal Hocko
[not found] ` <20120817093504.GE18600-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2012-08-17 10:07 ` Glauber Costa
2012-08-17 10:07 ` Glauber Costa
2012-08-17 10:07 ` Glauber Costa
[not found] ` <502E17C4.7060204-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-08-17 10:35 ` Michal Hocko
2012-08-17 10:35 ` Michal Hocko
2012-08-17 10:35 ` Michal Hocko
2012-08-17 10:36 ` Glauber Costa
2012-08-17 10:36 ` Glauber Costa
[not found] ` <502E1E90.1080805-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-08-21 7:54 ` Michal Hocko
2012-08-21 7:54 ` Michal Hocko
2012-08-21 7:54 ` Michal Hocko
2012-08-21 8:35 ` Michal Hocko
2012-08-21 8:35 ` Michal Hocko
2012-08-21 9:17 ` Glauber Costa
2012-08-21 9:17 ` Glauber Costa
[not found] ` <20120821075430.GA19797-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2012-08-21 9:22 ` Glauber Costa
2012-08-21 9:22 ` Glauber Costa
2012-08-21 9:22 ` Glauber Costa
2012-08-21 10:00 ` Michal Hocko
2012-08-21 10:00 ` Michal Hocko
2012-08-21 10:01 ` Glauber Costa
2012-08-21 10:01 ` Glauber Costa
2012-08-22 1:09 ` Greg Thelen
2012-08-22 1:09 ` Greg Thelen
2012-08-22 8:22 ` Glauber Costa
2012-08-22 8:22 ` Glauber Costa
2012-08-22 23:23 ` Greg Thelen
2012-08-22 23:23 ` Greg Thelen
[not found] ` <xr93a9xmwly7.fsf-aSPv4SP+Du0KgorLzL7FmE7CuiCeIGUxQQ4Iyu8u01E@public.gmane.org>
2012-08-23 7:55 ` Glauber Costa
2012-08-23 7:55 ` Glauber Costa
2012-08-23 7:55 ` Glauber Costa
[not found] ` <5035E1D6.6010503-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-08-24 5:06 ` Greg Thelen
2012-08-24 5:06 ` Greg Thelen
2012-08-24 5:06 ` Greg Thelen
[not found] ` <xr93harsvpxx.fsf-aSPv4SP+Du0KgorLzL7FmE7CuiCeIGUxQQ4Iyu8u01E@public.gmane.org>
2012-08-24 5:23 ` Glauber Costa
2012-08-24 5:23 ` Glauber Costa
2012-08-24 5:23 ` Glauber Costa
[not found] ` <20120817103550.GF18600-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2012-08-17 10:39 ` Glauber Costa
2012-08-17 10:39 ` Glauber Costa
2012-08-17 10:39 ` Glauber Costa
2012-08-09 13:01 ` [PATCH v2 10/11] memcg: allow a memcg with kmem charges to be destructed Glauber Costa
2012-08-09 13:01 ` Glauber Costa
2012-08-09 13:01 ` Glauber Costa
[not found] ` <1344517279-30646-11-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-08-21 8:22 ` Michal Hocko
2012-08-21 8:22 ` Michal Hocko
2012-08-21 8:22 ` Michal Hocko
2012-08-22 8:36 ` Glauber Costa
2012-08-22 8:36 ` Glauber Costa
2012-08-09 13:01 ` [PATCH v2 11/11] protect architectures where THREAD_SIZE >= PAGE_SIZE against fork bombs Glauber Costa
2012-08-09 13:01 ` Glauber Costa
2012-08-09 13:01 ` Glauber Costa
[not found] ` <1344517279-30646-12-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-08-10 17:54 ` Kamezawa Hiroyuki
2012-08-10 17:54 ` Kamezawa Hiroyuki
2012-08-10 17:54 ` Kamezawa Hiroyuki
2012-08-21 9:35 ` Michal Hocko
2012-08-21 9:35 ` Michal Hocko
[not found] ` <20120821093513.GD19797-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2012-08-21 9:40 ` Glauber Costa
2012-08-21 9:40 ` Glauber Costa
2012-08-21 9:40 ` Glauber Costa
[not found] ` <5033579D.5000203-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2012-08-21 10:57 ` Michal Hocko
2012-08-21 10:57 ` Michal Hocko
2012-08-21 10:57 ` Michal Hocko
2012-08-17 21:37 ` [PATCH v2 00/11] Request for Inclusion: kmem controller for memcg Ying Han
2012-08-17 21:37 ` Ying Han
[not found] ` <CALWz4iycCxuUaEeBz_b8+U13fcCLep3rvuSNUTPD8N-eZkDBrg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-08-20 7:51 ` Glauber Costa
2012-08-20 7:51 ` Glauber Costa
2012-08-20 7:51 ` 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=502DAE2A.1000404@jp.fujitsu.com \
--to=kamezawa.hiroyu-+cum20s59erqfuhtdcdx3a@public.gmane.org \
--cc=akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
--cc=cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=cl-vYTEC60ixJUAvxtiuMwx3w@public.gmane.org \
--cc=devel-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org \
--cc=glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org \
--cc=hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org \
--cc=mhocko-AlSwsSmVLrQ@public.gmane.org \
--cc=penberg-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=penberg-bbCR+/B0CizivPeTLB3BmA@public.gmane.org \
--cc=rientjes-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
/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.