linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Ying Han <yinghan@google.com>
To: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	Minchan Kim <minchan.kim@gmail.com>,
	Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>,
	Balbir Singh <balbir@linux.vnet.ibm.com>,
	Pavel Emelyanov <xemul@openvz.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Li Zefan <lizf@cn.fujitsu.com>, Mel Gorman <mel@csn.ul.ie>,
	Christoph Lameter <cl@linux.com>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Rik van Riel <riel@redhat.com>, Hugh Dickins <hughd@google.com>,
	Michal Hocko <mhocko@suse.cz>,
	Dave Hansen <dave@linux.vnet.ibm.com>,
	Zhu Yanhai <zhu.yanhai@gmail.com>,
	linux-mm@kvack.org
Subject: Re: [PATCH V4 01/10] Add kswapd descriptor
Date: Fri, 15 Apr 2011 14:46:59 -0700	[thread overview]
Message-ID: <BANLkTikRTuqvSaf9=KYndtBV8VBSd4e6SA@mail.gmail.com> (raw)
In-Reply-To: <20110415131617.91b0485c.kamezawa.hiroyu@jp.fujitsu.com>

[-- Attachment #1: Type: text/plain, Size: 3818 bytes --]

On Thu, Apr 14, 2011 at 9:16 PM, KAMEZAWA Hiroyuki <
kamezawa.hiroyu@jp.fujitsu.com> wrote:

> On Thu, 14 Apr 2011 20:35:00 -0700
> Ying Han <yinghan@google.com> wrote:
>
> > On Thu, Apr 14, 2011 at 5:04 PM, KAMEZAWA Hiroyuki <
> > kamezawa.hiroyu@jp.fujitsu.com> wrote:
> >
> > > On Thu, 14 Apr 2011 15:54:20 -0700
> > > Ying Han <yinghan@google.com> wrote:
> > >
> > > > There is a kswapd kernel thread for each numa node. We will add a
> > > different
> > > > kswapd for each memcg. The kswapd is sleeping in the wait queue
> headed at
> > > > kswapd_wait field of a kswapd descriptor. The kswapd descriptor
> stores
> > > > information of node or memcg and it allows the global and per-memcg
> > > background
> > > > reclaim to share common reclaim algorithms.
> > > >
> > > > This patch adds the kswapd descriptor and moves the per-node kswapd
> to
> > > use the
> > > > new structure.
> > > >
> > >
> > > No objections to your direction but some comments.
> > >
> > > > changelog v2..v1:
> > > > 1. dynamic allocate kswapd descriptor and initialize the
> wait_queue_head
> > > of pgdat
> > > > at kswapd_run.
> > > > 2. add helper macro is_node_kswapd to distinguish per-node/per-cgroup
> > > kswapd
> > > > descriptor.
> > > >
> > > > changelog v3..v2:
> > > > 1. move the struct mem_cgroup *kswapd_mem in kswapd sruct to later
> patch.
> > > > 2. rename thr in kswapd_run to something else.
> > > >
> > > > Signed-off-by: Ying Han <yinghan@google.com>
> > > > ---
> > > >  include/linux/mmzone.h |    3 +-
> > > >  include/linux/swap.h   |    7 ++++
> > > >  mm/page_alloc.c        |    1 -
> > > >  mm/vmscan.c            |   95
> > > ++++++++++++++++++++++++++++++++++++------------
> > > >  4 files changed, 80 insertions(+), 26 deletions(-)
> > > >
> > > > diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
> > > > index 628f07b..6cba7d2 100644
> > > > --- a/include/linux/mmzone.h
> > > > +++ b/include/linux/mmzone.h
> > > > @@ -640,8 +640,7 @@ typedef struct pglist_data {
> > > >       unsigned long node_spanned_pages; /* total size of physical
> page
> > > >                                            range, including holes */
> > > >       int node_id;
> > > > -     wait_queue_head_t kswapd_wait;
> > > > -     struct task_struct *kswapd;
> > > > +     wait_queue_head_t *kswapd_wait;
> > > >       int kswapd_max_order;
> > > >       enum zone_type classzone_idx;
> > >
> > > I think pg_data_t should include struct kswapd in it, as
> > >
> > >        struct pglist_data {
> > >        .....
> > >                struct kswapd   kswapd;
> > >        };
> > > and you can add a macro as
> > >
> > > #define kswapd_waitqueue(kswapd)        (&(kswapd)->kswapd_wait)
> > > if it looks better.
> > >
> > > Why I recommend this is I think it's better to have 'struct kswapd'
> > > on the same page of pg_data_t or struct memcg.
> > > Do you have benefits to kmalloc() struct kswapd on damand ?
> > >
> >
> > So we don't end of have kswapd struct on memcgs' which doesn't have
> > per-memcg kswapd enabled. I don't see one is strongly better than the
> other
> > for the two approaches. If ok, I would like to keep as it is for this
> > verion. Hope this is ok for now.
> >
>
> My intension is to remove kswapd_spinlock. Can we remove it with
> dynamic allocation ? IOW, static allocation still requires spinlock ?
>

Thank you for pointing that out which made me thinking a little harder on
this. I don't think we need the spinlock
in this patch.

This is something I inherited from another kswapd patch we did where we
allow one kswapd to reclaim from multiple pgdat. We need the spinlock there
since we need to protect the pgdat list per kswapd. However, we have
one-to-one
mapping here and we can get rid of the lock. I will remove it on the next
post.

--Ying

>
> Thanks,
> -Kame
>
>
>

[-- Attachment #2: Type: text/html, Size: 5361 bytes --]

  reply	other threads:[~2011-04-15 21:47 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-14 22:54 [PATCH V4 00/10] memcg: per cgroup background reclaim Ying Han
2011-04-14 22:54 ` [PATCH V4 01/10] Add kswapd descriptor Ying Han
2011-04-15  0:04   ` KAMEZAWA Hiroyuki
2011-04-15  3:35     ` Ying Han
2011-04-15  4:16       ` KAMEZAWA Hiroyuki
2011-04-15 21:46         ` Ying Han [this message]
2011-04-14 22:54 ` [PATCH V4 02/10] Add per memcg reclaim watermarks Ying Han
2011-04-15  0:16   ` KAMEZAWA Hiroyuki
2011-04-15  3:45     ` Ying Han
2011-04-14 22:54 ` [PATCH V4 03/10] New APIs to adjust per-memcg wmarks Ying Han
2011-04-15  0:25   ` KAMEZAWA Hiroyuki
2011-04-15  4:00     ` Ying Han
2011-04-14 22:54 ` [PATCH V4 04/10] Infrastructure to support per-memcg reclaim Ying Han
2011-04-15  0:34   ` KAMEZAWA Hiroyuki
2011-04-15  4:04     ` Ying Han
2011-04-14 22:54 ` [PATCH V4 05/10] Implement the select_victim_node within memcg Ying Han
2011-04-15  0:40   ` KAMEZAWA Hiroyuki
2011-04-15  4:36     ` Ying Han
2011-04-14 22:54 ` [PATCH V4 06/10] Per-memcg background reclaim Ying Han
2011-04-15  1:11   ` KAMEZAWA Hiroyuki
2011-04-15  6:08     ` Ying Han
2011-04-15  8:14       ` KAMEZAWA Hiroyuki
2011-04-15 18:00         ` Ying Han
2011-04-15  6:26     ` Ying Han
2011-04-14 22:54 ` [PATCH V4 07/10] Add per-memcg zone "unreclaimable" Ying Han
2011-04-15  1:32   ` KAMEZAWA Hiroyuki
2012-03-19  8:27     ` Zhu Yanhai
2012-03-20  5:45       ` Ying Han
2012-03-22  1:13         ` Zhu Yanhai
2011-04-14 22:54 ` [PATCH V4 08/10] Enable per-memcg background reclaim Ying Han
2011-04-15  1:34   ` KAMEZAWA Hiroyuki
2011-04-14 22:54 ` [PATCH V4 09/10] Add API to export per-memcg kswapd pid Ying Han
2011-04-15  1:40   ` KAMEZAWA Hiroyuki
2011-04-15  4:47     ` Ying Han
2011-04-14 22:54 ` [PATCH V4 10/10] Add some per-memcg stats Ying Han
2011-04-15  9:40 ` [PATCH V4 00/10] memcg: per cgroup background reclaim Michal Hocko
2011-04-15 16:40   ` Ying Han
2011-04-18  9:13     ` Michal Hocko
2011-04-18 17:01       ` Ying Han
2011-04-18 18:42         ` Michal Hocko
2011-04-18 22:27           ` Ying Han
2011-04-19  2:48             ` Zhu Yanhai
2011-04-19  3:46               ` Ying Han

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='BANLkTikRTuqvSaf9=KYndtBV8VBSd4e6SA@mail.gmail.com' \
    --to=yinghan@google.com \
    --cc=akpm@linux-foundation.org \
    --cc=balbir@linux.vnet.ibm.com \
    --cc=cl@linux.com \
    --cc=dave@linux.vnet.ibm.com \
    --cc=hannes@cmpxchg.org \
    --cc=hughd@google.com \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=linux-mm@kvack.org \
    --cc=lizf@cn.fujitsu.com \
    --cc=mel@csn.ul.ie \
    --cc=mhocko@suse.cz \
    --cc=minchan.kim@gmail.com \
    --cc=nishimura@mxp.nes.nec.co.jp \
    --cc=riel@redhat.com \
    --cc=xemul@openvz.org \
    --cc=zhu.yanhai@gmail.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;
as well as URLs for NNTP newsgroup(s).