From: Ying Han <yinghan@google.com>
To: Michal Hocko <mhocko@suse.cz>
Cc: Johannes Weiner <hannes@cmpxchg.org>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>,
Balbir Singh <balbir@linux.vnet.ibm.com>,
Andrew Morton <akpm@linux-foundation.org>,
Rik van Riel <riel@redhat.com>,
Minchan Kim <minchan.kim@gmail.com>,
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
Mel Gorman <mgorman@suse.de>, Greg Thelen <gthelen@google.com>,
Michel Lespinasse <walken@google.com>,
"linux-mm@kvack.org" <linux-mm@kvack.org>,
linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: [patch 4/8] memcg: rework soft limit reclaim
Date: Wed, 15 Jun 2011 15:48:25 -0700 [thread overview]
Message-ID: <BANLkTimbEnEHuxBDzKrEjPY7Y5F_aSoOdXkmjaOY+3xLBLzLdA@mail.gmail.com> (raw)
In-Reply-To: <20110609150026.GD3994@tiehlicka.suse.cz>
On Thu, Jun 9, 2011 at 8:00 AM, Michal Hocko <mhocko@suse.cz> wrote:
> On Thu 02-06-11 22:25:29, Ying Han wrote:
>> On Thu, Jun 2, 2011 at 2:55 PM, Ying Han <yinghan@google.com> wrote:
>> > On Tue, May 31, 2011 at 11:25 PM, Johannes Weiner <hannes@cmpxchg.org> wrote:
>> >> Currently, soft limit reclaim is entered from kswapd, where it selects
> [...]
>> >> diff --git a/mm/vmscan.c b/mm/vmscan.c
>> >> index c7d4b44..0163840 100644
>> >> --- a/mm/vmscan.c
>> >> +++ b/mm/vmscan.c
>> >> @@ -1988,9 +1988,13 @@ static void shrink_zone(int priority, struct zone *zone,
>> >> unsigned long reclaimed = sc->nr_reclaimed;
>> >> unsigned long scanned = sc->nr_scanned;
>> >> unsigned long nr_reclaimed;
>> >> + int epriority = priority;
>> >> +
>> >> + if (mem_cgroup_soft_limit_exceeded(root, mem))
>> >> + epriority -= 1;
>> >
>> > Here we grant the ability to shrink from all the memcgs, but only
>> > higher the priority for those exceed the soft_limit. That is a design
>> > change
>> > for the "soft_limit" which giving a hint to which memcgs to reclaim
>> > from first under global memory pressure.
>>
>>
>> Basically, we shouldn't reclaim from a memcg under its soft_limit
>> unless we have trouble reclaim pages from others.
>
> Agreed.
>
>> Something like the following makes better sense:
>>
>> diff --git a/mm/vmscan.c b/mm/vmscan.c
>> index bdc2fd3..b82ba8c 100644
>> --- a/mm/vmscan.c
>> +++ b/mm/vmscan.c
>> @@ -1989,6 +1989,8 @@ restart:
>> throttle_vm_writeout(sc->gfp_mask);
>> }
>>
>> +#define MEMCG_SOFTLIMIT_RECLAIM_PRIORITY 2
>> +
>> static void shrink_zone(int priority, struct zone *zone,
>> struct scan_control *sc)
>> {
>> @@ -2001,13 +2003,13 @@ static void shrink_zone(int priority, struct zone *zone,
>> unsigned long reclaimed = sc->nr_reclaimed;
>> unsigned long scanned = sc->nr_scanned;
>> unsigned long nr_reclaimed;
>> - int epriority = priority;
>>
>> - if (mem_cgroup_soft_limit_exceeded(root, mem))
>> - epriority -= 1;
>> + if (!mem_cgroup_soft_limit_exceeded(root, mem) &&
>> + priority > MEMCG_SOFTLIMIT_RECLAIM_PRIORITY)
>> + continue;
>
> yes, this makes sense but I am not sure about the right(tm) value of the
> MEMCG_SOFTLIMIT_RECLAIM_PRIORITY. 2 sounds too low. You would do quite a
> lot of loops
> (DEFAULT_PRIORITY-MEMCG_SOFTLIMIT_RECLAIM_PRIORITY) * zones * memcg_count
> without any progress (assuming that all of them are under soft limit
> which doesn't sound like a totally artificial configuration) until you
> allow reclaiming from groups that are under soft limit. Then, when you
> finally get to reclaiming, you scan rather aggressively.
Fair enough, something smarter is definitely needed :)
>
> Maybe something like 3/4 of DEFAULT_PRIORITY? You would get 3 times
> over all (unbalanced) zones and all cgroups that are above the limit
> (scanning max{1/4096+1/2048+1/1024, 3*SWAP_CLUSTER_MAX} of the LRUs for
> each cgroup) which could be enough to collect the low hanging fruit.
Hmm, that sounds more reasonable than the initial proposal.
For the same worst case where all the memcgs are blow their soft
limit, we need to scan 3 times of total memcgs before actually doing
anything. For that condition, I can not think of anything solve the
problem totally unless we have separate list of memcg (like what do
currently) per-zone.
--Ying
> --
> Michal Hocko
> SUSE Labs
> SUSE LINUX s.r.o.
> Lihovarska 1060/12
> 190 00 Praha 9
> Czech Republic
>
--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2011-06-15 22:48 UTC|newest]
Thread overview: 110+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-01 6:25 [patch 0/8] mm: memcg naturalization -rc2 Johannes Weiner
2011-06-01 6:25 ` [patch 1/8] memcg: remove unused retry signal from reclaim Johannes Weiner
2011-06-01 6:25 ` [patch 2/8] mm: memcg-aware global reclaim Johannes Weiner
2011-06-02 13:59 ` Hiroyuki Kamezawa
2011-06-02 15:01 ` Johannes Weiner
2011-06-02 16:14 ` Hiroyuki Kamezawa
2011-06-02 17:29 ` Johannes Weiner
2011-06-09 14:01 ` Michal Hocko
2011-06-07 12:25 ` Christoph Hellwig
2011-06-08 9:30 ` Johannes Weiner
2011-06-09 9:26 ` Christoph Hellwig
2011-06-09 16:57 ` Johannes Weiner
2011-06-09 13:12 ` Michal Hocko
2011-06-09 13:45 ` Johannes Weiner
2011-06-09 15:48 ` Minchan Kim
2011-06-09 17:23 ` Johannes Weiner
2011-06-09 23:41 ` Minchan Kim
2011-06-09 23:47 ` Minchan Kim
2011-06-10 0:34 ` Johannes Weiner
2011-06-10 0:48 ` Minchan Kim
2011-08-11 20:39 ` Ying Han
2011-08-11 21:09 ` Johannes Weiner
2011-08-29 7:15 ` Ying Han
2011-08-29 7:22 ` Ying Han
2011-08-29 7:57 ` Johannes Weiner
2011-08-30 6:08 ` Ying Han
2011-08-29 19:04 ` Johannes Weiner
2011-08-29 20:36 ` Ying Han
2011-08-29 21:05 ` Johannes Weiner
2011-08-30 7:07 ` Ying Han
2011-08-30 15:14 ` Johannes Weiner
2011-08-31 22:58 ` Ying Han
2011-09-21 8:44 ` Johannes Weiner
2011-08-29 8:07 ` Johannes Weiner
2011-06-01 6:25 ` [patch 3/8] memcg: reclaim statistics Johannes Weiner
2011-06-01 6:25 ` [patch 4/8] memcg: rework soft limit reclaim Johannes Weiner
2011-06-02 5:37 ` Ying Han
2011-06-02 21:55 ` Ying Han
2011-06-03 5:25 ` Ying Han
2011-06-09 15:00 ` Michal Hocko
2011-06-10 7:36 ` Michal Hocko
2011-06-15 22:57 ` Ying Han
2011-06-16 0:33 ` Ying Han
2011-06-16 11:45 ` Michal Hocko
2011-06-15 22:48 ` Ying Han [this message]
2011-06-16 11:41 ` Michal Hocko
2011-06-01 6:25 ` [patch 5/8] memcg: remove unused soft limit code Johannes Weiner
2011-06-13 9:26 ` Michal Hocko
2011-06-01 6:25 ` [patch 6/8] vmscan: change zone_nr_lru_pages to take memcg instead of scan control Johannes Weiner
2011-06-02 13:30 ` Hiroyuki Kamezawa
2011-06-02 14:28 ` Johannes Weiner
2011-06-13 9:29 ` Michal Hocko
2011-06-01 6:25 ` [patch 7/8] vmscan: memcg-aware unevictable page rescue scanner Johannes Weiner
2011-06-02 13:27 ` Hiroyuki Kamezawa
2011-06-02 14:27 ` Johannes Weiner
2011-06-02 21:02 ` Ying Han
2011-06-02 22:01 ` Hiroyuki Kamezawa
2011-06-02 22:19 ` Johannes Weiner
2011-06-02 23:15 ` Hiroyuki Kamezawa
2011-06-03 5:08 ` Ying Han
2011-06-13 9:42 ` Michal Hocko
2011-06-13 10:30 ` Johannes Weiner
2011-06-13 11:18 ` Michal Hocko
2011-07-19 22:47 ` Ying Han
2011-07-20 0:36 ` Johannes Weiner
2011-08-29 7:28 ` Ying Han
2011-08-29 7:59 ` Johannes Weiner
2011-06-01 6:25 ` [patch 8/8] mm: make per-memcg lru lists exclusive Johannes Weiner
2011-06-02 13:16 ` Hiroyuki Kamezawa
2011-06-02 14:24 ` Johannes Weiner
2011-06-02 15:54 ` Hiroyuki Kamezawa
2011-06-02 17:57 ` Johannes Weiner
2011-06-08 15:04 ` Michal Hocko
2011-06-07 12:42 ` Christoph Hellwig
2011-06-08 8:54 ` Johannes Weiner
2011-06-09 9:23 ` Christoph Hellwig
2011-08-11 20:33 ` Ying Han
2011-08-12 8:34 ` Johannes Weiner
2011-08-12 17:08 ` Ying Han
2011-08-12 19:17 ` Johannes Weiner
2011-08-15 3:01 ` Ying Han
2011-08-15 1:34 ` Ying Han
2011-08-15 9:39 ` Johannes Weiner
2011-06-01 23:52 ` [patch 0/8] mm: memcg naturalization -rc2 Hiroyuki Kamezawa
2011-06-02 0:35 ` Greg Thelen
2011-06-09 1:13 ` Rik van Riel
2011-06-02 4:05 ` Ying Han
2011-06-02 7:50 ` Johannes Weiner
2011-06-02 15:51 ` Ying Han
2011-06-02 17:51 ` Johannes Weiner
2011-06-08 3:45 ` Ying Han
2011-06-08 3:53 ` Ying Han
2011-06-08 15:32 ` Johannes Weiner
2011-06-09 3:52 ` Ying Han
2011-06-09 8:35 ` Johannes Weiner
2011-06-09 17:36 ` Ying Han
2011-06-09 18:36 ` Johannes Weiner
2011-06-09 21:38 ` Ying Han
2011-06-09 22:30 ` Ying Han
2011-06-09 23:31 ` Johannes Weiner
2011-06-10 0:17 ` Ying Han
2011-06-02 7:33 ` Johannes Weiner
2011-06-02 9:06 ` Hiroyuki Kamezawa
2011-06-02 10:00 ` Johannes Weiner
2011-06-02 12:59 ` Hiroyuki Kamezawa
2011-06-09 1:15 ` Rik van Riel
2011-06-09 8:43 ` Johannes Weiner
2011-06-09 9:31 ` Christoph Hellwig
2011-06-13 9:47 ` Michal Hocko
2011-06-13 10:35 ` Johannes Weiner
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=BANLkTimbEnEHuxBDzKrEjPY7Y5F_aSoOdXkmjaOY+3xLBLzLdA@mail.gmail.com \
--to=yinghan@google.com \
--cc=akpm@linux-foundation.org \
--cc=balbir@linux.vnet.ibm.com \
--cc=gthelen@google.com \
--cc=hannes@cmpxchg.org \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mgorman@suse.de \
--cc=mhocko@suse.cz \
--cc=minchan.kim@gmail.com \
--cc=nishimura@mxp.nes.nec.co.jp \
--cc=riel@redhat.com \
--cc=walken@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox