From: Glauber Costa <glommer@parallels.com>
To: Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: <linux-mm@kvack.org>, <linux-fsdevel@vger.kernel.org>,
<containers@lists.linux-foundation.org>,
Michal Hocko <mhocko@suse.cz>,
Johannes Weiner <hannes@cmpxchg.org>,
Andrew Morton <akpm@linux-foundation.org>,
Dave Shrinnker <david@fromorbit.com>,
Greg Thelen <gthelen@google.com>, <hughd@google.com>,
<yinghan@google.com>, Dave Chinner <dchinner@redhat.com>,
Mel Gorman <mgorman@suse.de>, Rik van Riel <riel@redhat.com>
Subject: Re: [PATCH v2 21/28] vmscan: also shrink slab in memcg pressure
Date: Mon, 1 Apr 2013 12:51:22 +0400 [thread overview]
Message-ID: <51594A8A.7020704@parallels.com> (raw)
In-Reply-To: <51593B70.6080003@jp.fujitsu.com>
Hi Kame,
>> /*
>> * In general, we'll do everything in our power to not incur in any overhead
>> * for non-memcg users for the kmem functions. Not even a function call, if we
>> @@ -562,6 +573,12 @@ memcg_kmem_get_cache(struct kmem_cache *cachep, gfp_t gfp)
>> return __memcg_kmem_get_cache(cachep, gfp);
>> }
>> #else
>> +
>> +static inline bool memcg_kmem_is_active(struct mem_cgroup *memcg)
>> +{
>> + return false;
>> +}
>> +
>> #define for_each_memcg_cache_index(_idx) \
>> for (; NULL; )
>>
>> diff --git a/include/linux/shrinker.h b/include/linux/shrinker.h
>> index d4636a0..4e9e53b 100644
>> --- a/include/linux/shrinker.h
>> +++ b/include/linux/shrinker.h
>> @@ -20,6 +20,9 @@ struct shrink_control {
>>
>> /* shrink from these nodes */
>> nodemask_t nodes_to_scan;
>> +
>> + /* reclaim from this memcg only (if not NULL) */
>> + struct mem_cgroup *target_mem_cgroup;
>> };
>
> Does this works only with kmem ? If so, please rename to some explicit
> name for now.
>
> shrink_slab_memcg_target or some ?
No, this is not kmem specific. It will be used (so far) to determine
which shrinkers to shrink from, but since we are now including
shrink_slab in user pressure as well, this can very well be filled by
user memory pressure code. (This will be the case, for instance, if umem
== kmem)
Therefore, it is the same target_mem_cgroup context we are already
passing around in other vmscan functions. But shrink_control had none,
and now we are attaching it there.
Therefore I would like to maintain it neutral, just as memcg.
>
>> diff --git a/mm/memcontrol.c b/mm/memcontrol.c
>> index 2b55222..ecdae39 100644
>> --- a/mm/memcontrol.c
>> +++ b/mm/memcontrol.c
>> @@ -386,7 +386,7 @@ static inline void memcg_kmem_set_active(struct mem_cgroup *memcg)
>> set_bit(KMEM_ACCOUNTED_ACTIVE, &memcg->kmem_account_flags);
>> }
>>
>> -static bool memcg_kmem_is_active(struct mem_cgroup *memcg)
>> +bool memcg_kmem_is_active(struct mem_cgroup *memcg)
>> {
>> return test_bit(KMEM_ACCOUNTED_ACTIVE, &memcg->kmem_account_flags);
>> }
>> @@ -942,6 +942,20 @@ mem_cgroup_zone_nr_lru_pages(struct mem_cgroup *memcg, int nid, int zid,
>> return ret;
>> }
>>
>> +unsigned long
>> +memcg_zone_reclaimable_pages(struct mem_cgroup *memcg, struct zone *zone)
>> +{
>> + int nid = zone_to_nid(zone);
>> + int zid = zone_idx(zone);
>> + unsigned long val;
>> +
>> + val = mem_cgroup_zone_nr_lru_pages(memcg, nid, zid, LRU_ALL_FILE);
>> + if (do_swap_account)
>> + val += mem_cgroup_zone_nr_lru_pages(memcg, nid, zid,
>> + LRU_ALL_ANON);
>> + return val;
>> +}
>> +
>> static unsigned long
>> mem_cgroup_node_nr_lru_pages(struct mem_cgroup *memcg,
>> int nid, unsigned int lru_mask)
>> diff --git a/mm/vmscan.c b/mm/vmscan.c
>> index 232dfcb..43928fd 100644
>> --- a/mm/vmscan.c
>> +++ b/mm/vmscan.c
>> @@ -138,11 +138,42 @@ static bool global_reclaim(struct scan_control *sc)
>> {
>> return !sc->target_mem_cgroup;
>> }
>> +
>> +/*
>> + * kmem reclaim should usually not be triggered when we are doing targetted
>> + * reclaim. It is only valid when global reclaim is triggered, or when the
>> + * underlying memcg has kmem objects.
>> + */
>> +static bool has_kmem_reclaim(struct scan_control *sc)
>> +{
>> + return !sc->target_mem_cgroup ||
>> + memcg_kmem_is_active(sc->target_mem_cgroup);
>> +}
>
> Is this test hierarchy aware ?
>
> For example, in following case,
>
> A no kmem limit
> \
> B kmem limit=XXX
> \
> C kmem limit=XXX
>
> what happens when A is the target.
>
When A is under pressure, we won't scan A. I coded it like this because
the slabs are local, even if the charges are not.
In other words, because I won't scan the memcgs hierarchically, I didn't
bother noticing about their kmem awareness hierarchically.
But I am still thinking about that, and your input is very welcome.
In one hand, A won't have a kmem res_counter, so we won't be able to
uncharge anything from it. On the other hand, the charges are also
accumulated on the user res_counter of A. Under user pressure, it may be
important to free this memory. So I am inclined to change that.
Do you agree?
WARNING: multiple messages have this Message-ID (diff)
From: Glauber Costa <glommer@parallels.com>
To: Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: linux-mm@kvack.org, linux-fsdevel@vger.kernel.org,
containers@lists.linux-foundation.org,
Michal Hocko <mhocko@suse.cz>,
Johannes Weiner <hannes@cmpxchg.org>,
Andrew Morton <akpm@linux-foundation.org>,
Dave Shrinnker <david@fromorbit.com>,
Greg Thelen <gthelen@google.com>,
hughd@google.com, yinghan@google.com,
Dave Chinner <dchinner@redhat.com>, Mel Gorman <mgorman@suse.de>,
Rik van Riel <riel@redhat.com>
Subject: Re: [PATCH v2 21/28] vmscan: also shrink slab in memcg pressure
Date: Mon, 1 Apr 2013 12:51:22 +0400 [thread overview]
Message-ID: <51594A8A.7020704@parallels.com> (raw)
In-Reply-To: <51593B70.6080003@jp.fujitsu.com>
Hi Kame,
>> /*
>> * In general, we'll do everything in our power to not incur in any overhead
>> * for non-memcg users for the kmem functions. Not even a function call, if we
>> @@ -562,6 +573,12 @@ memcg_kmem_get_cache(struct kmem_cache *cachep, gfp_t gfp)
>> return __memcg_kmem_get_cache(cachep, gfp);
>> }
>> #else
>> +
>> +static inline bool memcg_kmem_is_active(struct mem_cgroup *memcg)
>> +{
>> + return false;
>> +}
>> +
>> #define for_each_memcg_cache_index(_idx) \
>> for (; NULL; )
>>
>> diff --git a/include/linux/shrinker.h b/include/linux/shrinker.h
>> index d4636a0..4e9e53b 100644
>> --- a/include/linux/shrinker.h
>> +++ b/include/linux/shrinker.h
>> @@ -20,6 +20,9 @@ struct shrink_control {
>>
>> /* shrink from these nodes */
>> nodemask_t nodes_to_scan;
>> +
>> + /* reclaim from this memcg only (if not NULL) */
>> + struct mem_cgroup *target_mem_cgroup;
>> };
>
> Does this works only with kmem ? If so, please rename to some explicit
> name for now.
>
> shrink_slab_memcg_target or some ?
No, this is not kmem specific. It will be used (so far) to determine
which shrinkers to shrink from, but since we are now including
shrink_slab in user pressure as well, this can very well be filled by
user memory pressure code. (This will be the case, for instance, if umem
== kmem)
Therefore, it is the same target_mem_cgroup context we are already
passing around in other vmscan functions. But shrink_control had none,
and now we are attaching it there.
Therefore I would like to maintain it neutral, just as memcg.
>
>> diff --git a/mm/memcontrol.c b/mm/memcontrol.c
>> index 2b55222..ecdae39 100644
>> --- a/mm/memcontrol.c
>> +++ b/mm/memcontrol.c
>> @@ -386,7 +386,7 @@ static inline void memcg_kmem_set_active(struct mem_cgroup *memcg)
>> set_bit(KMEM_ACCOUNTED_ACTIVE, &memcg->kmem_account_flags);
>> }
>>
>> -static bool memcg_kmem_is_active(struct mem_cgroup *memcg)
>> +bool memcg_kmem_is_active(struct mem_cgroup *memcg)
>> {
>> return test_bit(KMEM_ACCOUNTED_ACTIVE, &memcg->kmem_account_flags);
>> }
>> @@ -942,6 +942,20 @@ mem_cgroup_zone_nr_lru_pages(struct mem_cgroup *memcg, int nid, int zid,
>> return ret;
>> }
>>
>> +unsigned long
>> +memcg_zone_reclaimable_pages(struct mem_cgroup *memcg, struct zone *zone)
>> +{
>> + int nid = zone_to_nid(zone);
>> + int zid = zone_idx(zone);
>> + unsigned long val;
>> +
>> + val = mem_cgroup_zone_nr_lru_pages(memcg, nid, zid, LRU_ALL_FILE);
>> + if (do_swap_account)
>> + val += mem_cgroup_zone_nr_lru_pages(memcg, nid, zid,
>> + LRU_ALL_ANON);
>> + return val;
>> +}
>> +
>> static unsigned long
>> mem_cgroup_node_nr_lru_pages(struct mem_cgroup *memcg,
>> int nid, unsigned int lru_mask)
>> diff --git a/mm/vmscan.c b/mm/vmscan.c
>> index 232dfcb..43928fd 100644
>> --- a/mm/vmscan.c
>> +++ b/mm/vmscan.c
>> @@ -138,11 +138,42 @@ static bool global_reclaim(struct scan_control *sc)
>> {
>> return !sc->target_mem_cgroup;
>> }
>> +
>> +/*
>> + * kmem reclaim should usually not be triggered when we are doing targetted
>> + * reclaim. It is only valid when global reclaim is triggered, or when the
>> + * underlying memcg has kmem objects.
>> + */
>> +static bool has_kmem_reclaim(struct scan_control *sc)
>> +{
>> + return !sc->target_mem_cgroup ||
>> + memcg_kmem_is_active(sc->target_mem_cgroup);
>> +}
>
> Is this test hierarchy aware ?
>
> For example, in following case,
>
> A no kmem limit
> \
> B kmem limit=XXX
> \
> C kmem limit=XXX
>
> what happens when A is the target.
>
When A is under pressure, we won't scan A. I coded it like this because
the slabs are local, even if the charges are not.
In other words, because I won't scan the memcgs hierarchically, I didn't
bother noticing about their kmem awareness hierarchically.
But I am still thinking about that, and your input is very welcome.
In one hand, A won't have a kmem res_counter, so we won't be able to
uncharge anything from it. On the other hand, the charges are also
accumulated on the user res_counter of A. Under user pressure, it may be
important to free this memory. So I am inclined to change that.
Do you agree?
--
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-04-01 8:50 UTC|newest]
Thread overview: 249+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-29 9:13 [PATCH v2 00/28] memcg-aware slab shrinking Glauber Costa
2013-03-29 9:13 ` Glauber Costa
2013-03-29 9:13 ` [PATCH v2 03/28] dcache: convert dentry_stat.nr_unused to per-cpu counters Glauber Costa
2013-03-29 9:13 ` Glauber Costa
2013-04-05 1:09 ` Greg Thelen
2013-04-05 1:09 ` Greg Thelen
[not found] ` <xr93r4ipkcl0.fsf-aSPv4SP+Du0KgorLzL7FmE7CuiCeIGUxQQ4Iyu8u01E@public.gmane.org>
2013-04-05 1:15 ` Dave Chinner
2013-04-05 1:15 ` Dave Chinner
2013-04-08 9:14 ` Glauber Costa
2013-04-08 9:14 ` Glauber Costa
2013-04-08 9:14 ` Glauber Costa
2013-04-08 13:18 ` Glauber Costa
2013-04-08 13:18 ` Glauber Costa
[not found] ` <51628A88.2090002-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-04-08 13:18 ` Glauber Costa
2013-04-08 23:26 ` Dave Chinner
2013-04-08 23:26 ` Dave Chinner
2013-04-09 8:02 ` Glauber Costa
2013-04-09 8:02 ` Glauber Costa
[not found] ` <5163CB0D.1040000-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-04-09 12:47 ` Dave Chinner
2013-04-09 12:47 ` Dave Chinner
2013-03-29 9:13 ` [PATCH v2 04/28] dentry: move to per-sb LRU locks Glauber Costa
2013-03-29 9:13 ` Glauber Costa
2013-03-29 9:13 ` [PATCH v2 05/28] dcache: remove dentries from LRU before putting on dispose list Glauber Costa
2013-03-29 9:13 ` Glauber Costa
[not found] ` <1364548450-28254-6-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-04-03 6:51 ` Sha Zhengju
2013-04-03 6:51 ` Sha Zhengju
2013-04-03 8:55 ` Glauber Costa
2013-04-03 8:55 ` Glauber Costa
[not found] ` <CAFj3OHU_o5o_n_kcci1U_=M0tCpYEwy8abRvHKBdp-GoJ-cs3w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-04-03 8:55 ` Glauber Costa
2013-04-04 6:19 ` Dave Chinner
2013-04-04 6:19 ` Dave Chinner
2013-04-04 6:19 ` Dave Chinner
2013-04-04 6:56 ` Glauber Costa
2013-04-04 6:56 ` Glauber Costa
2013-04-04 6:56 ` Glauber Costa
2013-03-29 9:13 ` [PATCH v2 06/28] mm: new shrinker API Glauber Costa
2013-03-29 9:13 ` Glauber Costa
2013-04-05 1:09 ` Greg Thelen
2013-04-05 1:09 ` Greg Thelen
2013-03-29 9:13 ` [PATCH v2 07/28] shrinker: convert superblock shrinkers to new API Glauber Costa
2013-03-29 9:13 ` Glauber Costa
2013-03-29 9:13 ` [PATCH v2 08/28] list: add a new LRU list type Glauber Costa
2013-03-29 9:13 ` Glauber Costa
2013-04-04 21:53 ` Greg Thelen
2013-04-04 21:53 ` Greg Thelen
2013-04-04 21:53 ` Greg Thelen
[not found] ` <xr93ehepkcje.fsf-aSPv4SP+Du0KgorLzL7FmE7CuiCeIGUxQQ4Iyu8u01E@public.gmane.org>
2013-04-05 1:20 ` Dave Chinner
2013-04-05 1:20 ` Dave Chinner
2013-04-05 1:20 ` Dave Chinner
2013-04-05 8:01 ` Glauber Costa
2013-04-05 8:01 ` Glauber Costa
2013-04-05 8:01 ` Glauber Costa
2013-04-06 0:04 ` Dave Chinner
2013-04-06 0:04 ` Dave Chinner
2013-03-29 9:13 ` [PATCH v2 09/28] inode: convert inode lru list to generic lru list code Glauber Costa
2013-03-29 9:13 ` Glauber Costa
2013-03-29 9:13 ` [PATCH v2 10/28] dcache: convert to use new lru list infrastructure Glauber Costa
2013-03-29 9:13 ` Glauber Costa
2013-04-08 13:14 ` Glauber Costa
2013-04-08 13:14 ` Glauber Costa
[not found] ` <5162C2C4.7010807-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-04-08 23:28 ` Dave Chinner
2013-04-08 23:28 ` Dave Chinner
[not found] ` <1364548450-28254-11-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-04-08 13:14 ` Glauber Costa
2013-03-29 9:13 ` [PATCH v2 11/28] list_lru: per-node " Glauber Costa
2013-03-29 9:13 ` Glauber Costa
2013-03-29 9:13 ` [PATCH v2 12/28] shrinker: add node awareness Glauber Costa
2013-03-29 9:13 ` Glauber Costa
2013-03-29 9:13 ` [PATCH v2 13/28] fs: convert inode and dentry shrinking to be node aware Glauber Costa
2013-03-29 9:13 ` Glauber Costa
2013-03-29 9:13 ` [PATCH v2 14/28] xfs: convert buftarg LRU to generic code Glauber Costa
2013-03-29 9:13 ` Glauber Costa
2013-03-29 9:13 ` [PATCH v2 15/28] xfs: convert dquot cache lru to list_lru Glauber Costa
2013-03-29 9:13 ` Glauber Costa
2013-03-29 9:13 ` [PATCH v2 16/28] fs: convert fs shrinkers to new scan/count API Glauber Costa
2013-03-29 9:13 ` Glauber Costa
2013-03-29 9:13 ` [PATCH v2 17/28] drivers: convert shrinkers to new count/scan API Glauber Costa
2013-03-29 9:13 ` Glauber Costa
2013-03-29 9:14 ` [PATCH v2 18/28] shrinker: convert remaining shrinkers to " Glauber Costa
2013-03-29 9:14 ` Glauber Costa
2013-03-29 9:14 ` [PATCH v2 19/28] hugepage: convert huge zero page shrinker to new shrinker API Glauber Costa
2013-03-29 9:14 ` Glauber Costa
2013-03-29 9:14 ` [PATCH v2 20/28] shrinker: Kill old ->shrink API Glauber Costa
2013-03-29 9:14 ` Glauber Costa
2013-03-29 9:14 ` [PATCH v2 21/28] vmscan: also shrink slab in memcg pressure Glauber Costa
2013-03-29 9:14 ` Glauber Costa
2013-04-01 7:46 ` Kamezawa Hiroyuki
2013-04-01 7:46 ` Kamezawa Hiroyuki
[not found] ` <51593B70.6080003-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2013-04-01 8:51 ` Glauber Costa
2013-04-01 8:51 ` Glauber Costa [this message]
2013-04-01 8:51 ` Glauber Costa
[not found] ` <1364548450-28254-22-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-04-01 7:46 ` Kamezawa Hiroyuki
2013-04-03 10:11 ` Sha Zhengju
2013-04-03 10:11 ` Sha Zhengju
[not found] ` <CAFj3OHXp5K6TSCJq4gmi7Y_RpkmbLzDU3GP8vRMmChexULZjyQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-04-03 10:43 ` Glauber Costa
2013-04-03 10:43 ` Glauber Costa
2013-04-03 10:43 ` Glauber Costa
[not found] ` <515C07E9.8080307-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-04-04 9:35 ` Sha Zhengju
2013-04-04 9:35 ` Sha Zhengju
2013-04-04 9:35 ` Sha Zhengju
2013-04-05 8:25 ` Glauber Costa
2013-04-05 8:25 ` Glauber Costa
[not found] ` <CAFj3OHWEirUH-xWX4O1NVDXCc6EYtceYy9suUgphEQ3C-35oxQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-04-05 8:25 ` Glauber Costa
2013-03-29 9:14 ` [PATCH v2 22/28] memcg,list_lru: duplicate LRUs upon kmemcg creation Glauber Costa
2013-03-29 9:14 ` Glauber Costa
[not found] ` <1364548450-28254-23-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-04-01 8:05 ` [PATCH v2 22/28] memcg, list_lru: " Kamezawa Hiroyuki
2013-04-01 8:05 ` [PATCH v2 22/28] memcg,list_lru: " Kamezawa Hiroyuki
[not found] ` <51593FD0.9080502-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2013-04-01 8:22 ` [PATCH v2 22/28] memcg, list_lru: " Glauber Costa
2013-04-01 8:22 ` [PATCH v2 22/28] memcg,list_lru: " Glauber Costa
2013-04-01 8:22 ` Glauber Costa
2013-03-29 9:14 ` [PATCH v2 23/28] lru: add an element to a memcg list Glauber Costa
2013-03-29 9:14 ` Glauber Costa
[not found] ` <1364548450-28254-24-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-04-01 8:18 ` Kamezawa Hiroyuki
2013-04-01 8:18 ` Kamezawa Hiroyuki
[not found] ` <515942D8.1070301-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2013-04-01 8:29 ` Glauber Costa
2013-04-01 8:29 ` Glauber Costa
2013-04-01 8:29 ` Glauber Costa
2013-03-29 9:14 ` [PATCH v2 24/28] list_lru: also include memcg lists in counts and scans Glauber Costa
2013-03-29 9:14 ` Glauber Costa
2013-03-29 9:14 ` [PATCH v2 25/28] list_lru: per-memcg walks Glauber Costa
2013-03-29 9:14 ` Glauber Costa
2013-03-29 9:14 ` [PATCH v2 26/28] memcg: per-memcg kmem shrinking Glauber Costa
2013-03-29 9:14 ` Glauber Costa
2013-04-01 8:31 ` Kamezawa Hiroyuki
2013-04-01 8:31 ` Kamezawa Hiroyuki
2013-04-01 8:48 ` Glauber Costa
2013-04-01 8:48 ` Glauber Costa
[not found] ` <515949EB.7020400-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-04-01 9:01 ` Kamezawa Hiroyuki
2013-04-01 9:01 ` Kamezawa Hiroyuki
2013-04-01 9:14 ` Glauber Costa
2013-04-01 9:14 ` Glauber Costa
[not found] ` <51594CED.4050401-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2013-04-01 9:14 ` Glauber Costa
2013-04-01 9:35 ` Kamezawa Hiroyuki
2013-04-01 9:35 ` Kamezawa Hiroyuki
2013-04-01 9:35 ` Kamezawa Hiroyuki
[not found] ` <515945E3.9090809-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2013-04-01 8:48 ` Glauber Costa
[not found] ` <1364548450-28254-27-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-04-01 8:31 ` Kamezawa Hiroyuki
2013-03-29 9:14 ` [PATCH v2 27/28] list_lru: reclaim proportionaly between memcgs and nodes Glauber Costa
2013-03-29 9:14 ` Glauber Costa
[not found] ` <1364548450-28254-1-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-03-29 9:13 ` [PATCH v2 01/28] super: fix calculation of shrinkable objects for small numbers Glauber Costa
2013-03-29 9:13 ` Glauber Costa
2013-03-29 9:13 ` Glauber Costa
[not found] ` <1364548450-28254-2-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-04-01 7:16 ` Kamezawa Hiroyuki
2013-04-01 7:16 ` Kamezawa Hiroyuki
2013-03-29 9:13 ` [PATCH v2 02/28] vmscan: take at least one pass with shrinkers Glauber Costa
2013-03-29 9:13 ` Glauber Costa
2013-03-29 9:13 ` Glauber Costa
[not found] ` <1364548450-28254-3-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-04-01 7:26 ` Kamezawa Hiroyuki
2013-04-01 7:26 ` Kamezawa Hiroyuki
2013-04-01 7:26 ` Kamezawa Hiroyuki
2013-04-01 8:10 ` Glauber Costa
2013-04-01 8:10 ` Glauber Costa
[not found] ` <515940E4.8050704-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-04-10 5:09 ` Ric Mason
2013-04-10 5:09 ` Ric Mason
2013-04-10 7:32 ` Glauber Costa
2013-04-10 7:32 ` Glauber Costa
2013-04-10 9:19 ` Dave Chinner
2013-04-10 9:19 ` Dave Chinner
[not found] ` <5164F416.8040903-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-04-10 7:32 ` Glauber Costa
2013-04-10 9:19 ` Dave Chinner
[not found] ` <515936B5.8070501-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2013-04-01 8:10 ` Glauber Costa
2013-04-08 8:42 ` Joonsoo Kim
2013-04-08 8:42 ` Joonsoo Kim
2013-04-08 8:47 ` Glauber Costa
2013-04-08 8:47 ` Glauber Costa
[not found] ` <51628412.6050803-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-04-08 9:01 ` Joonsoo Kim
2013-04-08 9:01 ` Joonsoo Kim
2013-04-08 9:01 ` Joonsoo Kim
2013-04-08 9:05 ` Glauber Costa
2013-04-08 9:05 ` Glauber Costa
2013-04-09 0:55 ` Joonsoo Kim
[not found] ` <20130409005547.GC21654-Hm3cg6mZ9cc@public.gmane.org>
2013-04-09 1:29 ` Dave Chinner
2013-04-09 1:29 ` Dave Chinner
2013-04-09 2:05 ` Joonsoo Kim
2013-04-09 2:05 ` Joonsoo Kim
[not found] ` <20130409020505.GA4218-Hm3cg6mZ9cc@public.gmane.org>
2013-04-09 7:43 ` Glauber Costa
2013-04-09 12:30 ` Dave Chinner
2013-04-09 12:30 ` Dave Chinner
2013-04-10 2:51 ` Joonsoo Kim
2013-04-10 2:51 ` Joonsoo Kim
2013-04-10 7:30 ` Glauber Costa
2013-04-10 7:30 ` Glauber Costa
[not found] ` <51651518.4010007-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-04-10 8:19 ` Joonsoo Kim
2013-04-10 8:19 ` Joonsoo Kim
[not found] ` <20130410025115.GA5872-Hm3cg6mZ9cc@public.gmane.org>
2013-04-10 7:30 ` Glauber Costa
2013-04-10 8:46 ` Wanpeng Li
2013-04-10 8:46 ` Wanpeng Li
2013-04-10 8:46 ` Wanpeng Li
2013-04-10 10:07 ` Dave Chinner
2013-04-10 10:07 ` Dave Chinner
2013-04-10 14:03 ` JoonSoo Kim
2013-04-10 14:03 ` JoonSoo Kim
[not found] ` <CAAmzW4OMyZ=nVbHK_AiifPK5LVxvhOQUXmsD5NGfo33CBjf=eA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-04-11 0:41 ` Dave Chinner
2013-04-11 0:41 ` Dave Chinner
2013-04-11 7:27 ` Wanpeng Li
2013-04-11 7:27 ` Wanpeng Li
2013-04-11 9:25 ` Dave Chinner
2013-04-11 9:25 ` Dave Chinner
2013-04-11 7:27 ` Wanpeng Li
2013-04-10 14:03 ` JoonSoo Kim
2013-04-10 2:51 ` Joonsoo Kim
2013-04-09 7:43 ` Glauber Costa
2013-04-09 7:43 ` Glauber Costa
[not found] ` <5163C6A5.5050307-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-04-09 9:08 ` Joonsoo Kim
2013-04-09 9:08 ` Joonsoo Kim
2013-04-09 2:05 ` Joonsoo Kim
[not found] ` <51628877.5000701-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-04-09 0:55 ` Joonsoo Kim
2013-03-29 9:13 ` [PATCH v2 03/28] dcache: convert dentry_stat.nr_unused to per-cpu counters Glauber Costa
2013-03-29 9:13 ` [PATCH v2 04/28] dentry: move to per-sb LRU locks Glauber Costa
2013-03-29 9:13 ` [PATCH v2 05/28] dcache: remove dentries from LRU before putting on dispose list Glauber Costa
2013-03-29 9:13 ` [PATCH v2 06/28] mm: new shrinker API Glauber Costa
2013-03-29 9:13 ` [PATCH v2 07/28] shrinker: convert superblock shrinkers to new API Glauber Costa
2013-03-29 9:13 ` [PATCH v2 08/28] list: add a new LRU list type Glauber Costa
2013-03-29 9:13 ` [PATCH v2 09/28] inode: convert inode lru list to generic lru list code Glauber Costa
2013-03-29 9:13 ` [PATCH v2 10/28] dcache: convert to use new lru list infrastructure Glauber Costa
2013-03-29 9:13 ` [PATCH v2 11/28] list_lru: per-node " Glauber Costa
2013-03-29 9:13 ` [PATCH v2 12/28] shrinker: add node awareness Glauber Costa
2013-03-29 9:13 ` [PATCH v2 13/28] fs: convert inode and dentry shrinking to be node aware Glauber Costa
2013-03-29 9:13 ` [PATCH v2 14/28] xfs: convert buftarg LRU to generic code Glauber Costa
2013-03-29 9:13 ` [PATCH v2 15/28] xfs: convert dquot cache lru to list_lru Glauber Costa
2013-03-29 9:13 ` [PATCH v2 16/28] fs: convert fs shrinkers to new scan/count API Glauber Costa
2013-03-29 9:13 ` [PATCH v2 17/28] drivers: convert shrinkers to new count/scan API Glauber Costa
2013-03-29 9:14 ` [PATCH v2 18/28] shrinker: convert remaining shrinkers to " Glauber Costa
2013-03-29 9:14 ` [PATCH v2 19/28] hugepage: convert huge zero page shrinker to new shrinker API Glauber Costa
2013-03-29 9:14 ` [PATCH v2 20/28] shrinker: Kill old ->shrink API Glauber Costa
2013-03-29 9:14 ` [PATCH v2 21/28] vmscan: also shrink slab in memcg pressure Glauber Costa
2013-03-29 9:14 ` [PATCH v2 22/28] memcg,list_lru: duplicate LRUs upon kmemcg creation Glauber Costa
2013-03-29 9:14 ` [PATCH v2 23/28] lru: add an element to a memcg list Glauber Costa
2013-03-29 9:14 ` [PATCH v2 24/28] list_lru: also include memcg lists in counts and scans Glauber Costa
2013-03-29 9:14 ` [PATCH v2 25/28] list_lru: per-memcg walks Glauber Costa
2013-03-29 9:14 ` [PATCH v2 26/28] memcg: per-memcg kmem shrinking Glauber Costa
2013-03-29 9:14 ` [PATCH v2 27/28] list_lru: reclaim proportionaly between memcgs and nodes Glauber Costa
2013-03-29 9:14 ` [PATCH v2 28/28] super: targeted memcg reclaim Glauber Costa
2013-04-01 12:38 ` [PATCH v2 00/28] memcg-aware slab shrinking Serge Hallyn
2013-03-29 9:14 ` [PATCH v2 28/28] super: targeted memcg reclaim Glauber Costa
2013-03-29 9:14 ` Glauber Costa
2013-04-01 12:38 ` [PATCH v2 00/28] memcg-aware slab shrinking Serge Hallyn
2013-04-01 12:45 ` Glauber Costa
2013-04-01 12:45 ` Glauber Costa
2013-04-01 12:45 ` Glauber Costa
[not found] ` <51598168.4050404-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-04-01 14:12 ` Serge Hallyn
2013-04-01 14:12 ` Serge Hallyn
2013-04-08 8:11 ` Glauber Costa
2013-04-08 8:11 ` Glauber Costa
2013-04-02 4:58 ` Dave Chinner
2013-04-02 4:58 ` Dave Chinner
2013-04-02 7:55 ` Glauber Costa
2013-04-02 7:55 ` Glauber Costa
2013-04-02 7:55 ` Glauber Costa
2013-04-02 4:58 ` Dave Chinner
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=51594A8A.7020704@parallels.com \
--to=glommer@parallels.com \
--cc=akpm@linux-foundation.org \
--cc=containers@lists.linux-foundation.org \
--cc=david@fromorbit.com \
--cc=dchinner@redhat.com \
--cc=gthelen@google.com \
--cc=hannes@cmpxchg.org \
--cc=hughd@google.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mgorman@suse.de \
--cc=mhocko@suse.cz \
--cc=riel@redhat.com \
--cc=yinghan@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.