From: Johannes Weiner <jweiner@redhat.com>
To: Michal Hocko <mhocko@suse.cz>
Cc: Andrew Morton <akpm@linux-foundation.org>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>,
Balbir Singh <bsingharora@gmail.com>,
Ying Han <yinghan@google.com>, Greg Thelen <gthelen@google.com>,
Michel Lespinasse <walken@google.com>,
Rik van Riel <riel@redhat.com>,
Minchan Kim <minchan.kim@gmail.com>,
Christoph Hellwig <hch@infradead.org>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [patch 03/11] mm: vmscan: distinguish between memcg triggering reclaim and memcg being scanned
Date: Thu, 29 Sep 2011 09:55:54 +0200 [thread overview]
Message-ID: <20110929075554.GA6050@redhat.com> (raw)
In-Reply-To: <20110920091738.GD27675@tiehlicka.suse.cz>
On Tue, Sep 20, 2011 at 11:17:38AM +0200, Michal Hocko wrote:
> On Tue 20-09-11 10:58:11, Johannes Weiner wrote:
> > On Mon, Sep 19, 2011 at 04:29:55PM +0200, Michal Hocko wrote:
> > > On Mon 12-09-11 12:57:20, Johannes Weiner wrote:
> > > > @@ -2390,6 +2413,18 @@ unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *mem_cont,
> > > > }
> > > > #endif
> > > >
> > > > +static void age_active_anon(struct zone *zone, struct scan_control *sc,
> > > > + int priority)
> > > > +{
> > > > + struct mem_cgroup_zone mz = {
> > > > + .mem_cgroup = NULL,
> > > > + .zone = zone,
> > > > + };
> > > > +
> > > > + if (inactive_anon_is_low(&mz))
> > > > + shrink_active_list(SWAP_CLUSTER_MAX, &mz, sc, priority, 0);
> > > > +}
> > > > +
> > >
> > > I do not like this very much because we are using a similar construct in
> > > shrink_mem_cgroup_zone so we are duplicating that code.
> > > What about adding age_mem_cgroup_active_anon (something like shrink_zone).
> >
> > I am not sure I follow and I don't see what could be shared between
> > the zone shrinking and this as there are different exit conditions to
> > the hierarchy walk. Can you elaborate?
>
> Sorry for not being clear enough. Maybe it is not very much important
> but what about something like:
>
> Index: linus_tree/mm/vmscan.c
> ===================================================================
> --- linus_tree.orig/mm/vmscan.c 2011-09-20 11:07:57.000000000 +0200
> +++ linus_tree/mm/vmscan.c 2011-09-20 11:12:53.000000000 +0200
> @@ -2041,6 +2041,13 @@ static inline bool should_continue_recla
> }
> }
>
> +static void age_mem_cgroup_active_anon(struct mem_cgroup_zone *mz,
> + struct scan_control *sc, int priority)
> +{
> + if (inactive_anon_is_low(mz))
> + shrink_active_list(SWAP_CLUSTER_MAX, mz, sc, priority, 0);
> +}
> +
> /*
> * This is a basic per-zone page freer. Used by both kswapd and direct reclaim.
> */
> @@ -2090,8 +2097,7 @@ restart:
> * Even if we did not try to evict anon pages at all, we want to
> * rebalance the anon lru active/inactive ratio.
> */
> - if (inactive_anon_is_low(mz))
> - shrink_active_list(SWAP_CLUSTER_MAX, mz, sc, priority, 0);
> + age_mem_cgroup_active_anon(mz, sc, priority);
>
> /* reclaim/compaction might need reclaim to continue */
> if (should_continue_reclaim(mz, nr_reclaimed,
> @@ -2421,8 +2427,7 @@ static void age_active_anon(struct zone
> .zone = zone,
> };
>
> - if (inactive_anon_is_low(&mz))
> - shrink_active_list(SWAP_CLUSTER_MAX, &mz, sc, priority, 0);
> + age_mem_cgroup_active_anon(&mz, sc, priority);
> }
Ahh, understood.
I think it would be an unrelated change, though. There already are
two of those constructs, I just move one of them.
WARNING: multiple messages have this Message-ID (diff)
From: Johannes Weiner <jweiner@redhat.com>
To: Michal Hocko <mhocko@suse.cz>
Cc: Andrew Morton <akpm@linux-foundation.org>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>,
Balbir Singh <bsingharora@gmail.com>,
Ying Han <yinghan@google.com>, Greg Thelen <gthelen@google.com>,
Michel Lespinasse <walken@google.com>,
Rik van Riel <riel@redhat.com>,
Minchan Kim <minchan.kim@gmail.com>,
Christoph Hellwig <hch@infradead.org>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [patch 03/11] mm: vmscan: distinguish between memcg triggering reclaim and memcg being scanned
Date: Thu, 29 Sep 2011 09:55:54 +0200 [thread overview]
Message-ID: <20110929075554.GA6050@redhat.com> (raw)
In-Reply-To: <20110920091738.GD27675@tiehlicka.suse.cz>
On Tue, Sep 20, 2011 at 11:17:38AM +0200, Michal Hocko wrote:
> On Tue 20-09-11 10:58:11, Johannes Weiner wrote:
> > On Mon, Sep 19, 2011 at 04:29:55PM +0200, Michal Hocko wrote:
> > > On Mon 12-09-11 12:57:20, Johannes Weiner wrote:
> > > > @@ -2390,6 +2413,18 @@ unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *mem_cont,
> > > > }
> > > > #endif
> > > >
> > > > +static void age_active_anon(struct zone *zone, struct scan_control *sc,
> > > > + int priority)
> > > > +{
> > > > + struct mem_cgroup_zone mz = {
> > > > + .mem_cgroup = NULL,
> > > > + .zone = zone,
> > > > + };
> > > > +
> > > > + if (inactive_anon_is_low(&mz))
> > > > + shrink_active_list(SWAP_CLUSTER_MAX, &mz, sc, priority, 0);
> > > > +}
> > > > +
> > >
> > > I do not like this very much because we are using a similar construct in
> > > shrink_mem_cgroup_zone so we are duplicating that code.
> > > What about adding age_mem_cgroup_active_anon (something like shrink_zone).
> >
> > I am not sure I follow and I don't see what could be shared between
> > the zone shrinking and this as there are different exit conditions to
> > the hierarchy walk. Can you elaborate?
>
> Sorry for not being clear enough. Maybe it is not very much important
> but what about something like:
>
> Index: linus_tree/mm/vmscan.c
> ===================================================================
> --- linus_tree.orig/mm/vmscan.c 2011-09-20 11:07:57.000000000 +0200
> +++ linus_tree/mm/vmscan.c 2011-09-20 11:12:53.000000000 +0200
> @@ -2041,6 +2041,13 @@ static inline bool should_continue_recla
> }
> }
>
> +static void age_mem_cgroup_active_anon(struct mem_cgroup_zone *mz,
> + struct scan_control *sc, int priority)
> +{
> + if (inactive_anon_is_low(mz))
> + shrink_active_list(SWAP_CLUSTER_MAX, mz, sc, priority, 0);
> +}
> +
> /*
> * This is a basic per-zone page freer. Used by both kswapd and direct reclaim.
> */
> @@ -2090,8 +2097,7 @@ restart:
> * Even if we did not try to evict anon pages at all, we want to
> * rebalance the anon lru active/inactive ratio.
> */
> - if (inactive_anon_is_low(mz))
> - shrink_active_list(SWAP_CLUSTER_MAX, mz, sc, priority, 0);
> + age_mem_cgroup_active_anon(mz, sc, priority);
>
> /* reclaim/compaction might need reclaim to continue */
> if (should_continue_reclaim(mz, nr_reclaimed,
> @@ -2421,8 +2427,7 @@ static void age_active_anon(struct zone
> .zone = zone,
> };
>
> - if (inactive_anon_is_low(&mz))
> - shrink_active_list(SWAP_CLUSTER_MAX, &mz, sc, priority, 0);
> + age_mem_cgroup_active_anon(&mz, sc, priority);
> }
Ahh, understood.
I think it would be an unrelated change, though. There already are
two of those constructs, I just move one of them.
--
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-09-29 7:56 UTC|newest]
Thread overview: 130+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-09-12 10:57 [patch 0/11] mm: memcg naturalization -rc3 Johannes Weiner
2011-09-12 10:57 ` Johannes Weiner
2011-09-12 10:57 ` [patch 01/11] mm: memcg: consolidate hierarchy iteration primitives Johannes Weiner
2011-09-12 10:57 ` Johannes Weiner
2011-09-12 22:37 ` Kirill A. Shutemov
2011-09-12 22:37 ` Kirill A. Shutemov
2011-09-13 5:40 ` Johannes Weiner
2011-09-13 5:40 ` Johannes Weiner
2011-09-19 13:06 ` Michal Hocko
2011-09-19 13:06 ` Michal Hocko
2011-09-13 10:06 ` KAMEZAWA Hiroyuki
2011-09-13 10:06 ` KAMEZAWA Hiroyuki
2011-09-19 12:53 ` Michal Hocko
2011-09-19 12:53 ` Michal Hocko
2011-09-20 8:45 ` Johannes Weiner
2011-09-20 8:45 ` Johannes Weiner
2011-09-20 8:53 ` Michal Hocko
2011-09-20 8:53 ` Michal Hocko
2011-09-12 10:57 ` [patch 02/11] mm: vmscan: distinguish global reclaim from global LRU scanning Johannes Weiner
2011-09-12 10:57 ` Johannes Weiner
2011-09-12 23:02 ` Kirill A. Shutemov
2011-09-12 23:02 ` Kirill A. Shutemov
2011-09-13 5:48 ` Johannes Weiner
2011-09-13 5:48 ` Johannes Weiner
2011-09-13 10:07 ` KAMEZAWA Hiroyuki
2011-09-13 10:07 ` KAMEZAWA Hiroyuki
2011-09-19 13:23 ` Michal Hocko
2011-09-19 13:23 ` Michal Hocko
2011-09-19 13:46 ` Michal Hocko
2011-09-19 13:46 ` Michal Hocko
2011-09-20 8:52 ` Johannes Weiner
2011-09-20 8:52 ` Johannes Weiner
2011-09-12 10:57 ` [patch 03/11] mm: vmscan: distinguish between memcg triggering reclaim and memcg being scanned Johannes Weiner
2011-09-12 10:57 ` Johannes Weiner
2011-09-13 10:23 ` KAMEZAWA Hiroyuki
2011-09-13 10:23 ` KAMEZAWA Hiroyuki
2011-09-19 14:29 ` Michal Hocko
2011-09-19 14:29 ` Michal Hocko
2011-09-20 8:58 ` Johannes Weiner
2011-09-20 8:58 ` Johannes Weiner
2011-09-20 9:17 ` Michal Hocko
2011-09-20 9:17 ` Michal Hocko
2011-09-29 7:55 ` Johannes Weiner [this message]
2011-09-29 7:55 ` Johannes Weiner
2011-09-12 10:57 ` [patch 04/11] mm: memcg: per-priority per-zone hierarchy scan generations Johannes Weiner
2011-09-12 10:57 ` Johannes Weiner
2011-09-13 10:27 ` KAMEZAWA Hiroyuki
2011-09-13 10:27 ` KAMEZAWA Hiroyuki
2011-09-13 11:03 ` Johannes Weiner
2011-09-13 11:03 ` Johannes Weiner
2011-09-14 0:55 ` KAMEZAWA Hiroyuki
2011-09-14 0:55 ` KAMEZAWA Hiroyuki
2011-09-14 5:56 ` Johannes Weiner
2011-09-14 5:56 ` Johannes Weiner
2011-09-14 7:40 ` KAMEZAWA Hiroyuki
2011-09-14 7:40 ` KAMEZAWA Hiroyuki
2011-09-20 8:15 ` Michal Hocko
2011-09-20 8:15 ` Michal Hocko
2011-09-20 8:45 ` Michal Hocko
2011-09-20 8:45 ` Michal Hocko
2011-09-20 9:10 ` Johannes Weiner
2011-09-20 9:10 ` Johannes Weiner
2011-09-20 12:37 ` Michal Hocko
2011-09-20 12:37 ` Michal Hocko
2011-09-12 10:57 ` [patch 05/11] mm: move memcg hierarchy reclaim to generic reclaim code Johannes Weiner
2011-09-12 10:57 ` Johannes Weiner
2011-09-13 10:31 ` KAMEZAWA Hiroyuki
2011-09-13 10:31 ` KAMEZAWA Hiroyuki
2011-09-20 13:09 ` Michal Hocko
2011-09-20 13:09 ` Michal Hocko
2011-09-20 13:29 ` Johannes Weiner
2011-09-20 13:29 ` Johannes Weiner
2011-09-20 14:08 ` Michal Hocko
2011-09-20 14:08 ` Michal Hocko
2011-09-12 10:57 ` [patch 06/11] mm: memcg: remove optimization of keeping the root_mem_cgroup LRU lists empty Johannes Weiner
2011-09-12 10:57 ` Johannes Weiner
2011-09-13 10:34 ` KAMEZAWA Hiroyuki
2011-09-13 10:34 ` KAMEZAWA Hiroyuki
2011-09-20 15:02 ` Michal Hocko
2011-09-20 15:02 ` Michal Hocko
2011-09-29 9:20 ` Johannes Weiner
2011-09-29 9:20 ` Johannes Weiner
2011-09-29 9:49 ` Michal Hocko
2011-09-29 9:49 ` Michal Hocko
2011-09-12 10:57 ` [patch 07/11] mm: vmscan: convert unevictable page rescue scanner to per-memcg LRU lists Johannes Weiner
2011-09-12 10:57 ` Johannes Weiner
2011-09-13 10:37 ` KAMEZAWA Hiroyuki
2011-09-13 10:37 ` KAMEZAWA Hiroyuki
2011-09-21 12:33 ` Michal Hocko
2011-09-21 12:33 ` Michal Hocko
2011-09-21 13:47 ` Johannes Weiner
2011-09-21 13:47 ` Johannes Weiner
2011-09-21 14:08 ` Michal Hocko
2011-09-21 14:08 ` Michal Hocko
2011-09-12 10:57 ` [patch 08/11] mm: vmscan: convert global reclaim " Johannes Weiner
2011-09-12 10:57 ` Johannes Weiner
2011-09-13 10:41 ` KAMEZAWA Hiroyuki
2011-09-13 10:41 ` KAMEZAWA Hiroyuki
2011-09-21 13:10 ` Michal Hocko
2011-09-21 13:10 ` Michal Hocko
2011-09-21 13:51 ` Johannes Weiner
2011-09-21 13:51 ` Johannes Weiner
2011-09-21 13:57 ` Michal Hocko
2011-09-21 13:57 ` Michal Hocko
2011-09-12 10:57 ` [patch 09/11] mm: collect LRU list heads into struct lruvec Johannes Weiner
2011-09-12 10:57 ` Johannes Weiner
2011-09-13 10:43 ` KAMEZAWA Hiroyuki
2011-09-13 10:43 ` KAMEZAWA Hiroyuki
2011-09-21 13:43 ` Michal Hocko
2011-09-21 13:43 ` Michal Hocko
2011-09-21 15:15 ` Michal Hocko
2011-09-21 15:15 ` Michal Hocko
2011-09-12 10:57 ` [patch 10/11] mm: make per-memcg LRU lists exclusive Johannes Weiner
2011-09-12 10:57 ` Johannes Weiner
2011-09-13 10:47 ` KAMEZAWA Hiroyuki
2011-09-13 10:47 ` KAMEZAWA Hiroyuki
2011-09-21 15:24 ` Michal Hocko
2011-09-21 15:24 ` Michal Hocko
2011-09-21 15:47 ` Johannes Weiner
2011-09-21 15:47 ` Johannes Weiner
2011-09-21 16:05 ` Michal Hocko
2011-09-21 16:05 ` Michal Hocko
2011-09-12 10:57 ` [patch 11/11] mm: memcg: remove unused node/section info from pc->flags Johannes Weiner
2011-09-12 10:57 ` Johannes Weiner
2011-09-13 10:50 ` KAMEZAWA Hiroyuki
2011-09-13 10:50 ` KAMEZAWA Hiroyuki
2011-09-21 15:32 ` Michal Hocko
2011-09-21 15:32 ` Michal Hocko
2011-09-13 20:35 ` [patch 0/11] mm: memcg naturalization -rc3 Kirill A. Shutemov
2011-09-13 20:35 ` Kirill A. Shutemov
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=20110929075554.GA6050@redhat.com \
--to=jweiner@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=bsingharora@gmail.com \
--cc=gthelen@google.com \
--cc=hch@infradead.org \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.cz \
--cc=minchan.kim@gmail.com \
--cc=nishimura@mxp.nes.nec.co.jp \
--cc=riel@redhat.com \
--cc=walken@google.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.