From: Sha Zhengju <handai.szj-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> To: Michal Hocko <mhocko-AlSwsSmVLrQ@public.gmane.org> Cc: linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, "linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org" <linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org>, Cgroups <cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>, Greg Thelen <gthelen-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>, KAMEZAWA Hiroyuki <kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>, Andrew Morton <akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>, Wu Fengguang <fengguang.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>, Mel Gorman <mgorman-l3A5Bk7waGM@public.gmane.org>, Sha Zhengju <handai.szj-3b8fjiQLQpfQT0dZR+AlfA@public.gmane.org> Subject: Re: [PATCH V4 4/6] memcg: add per cgroup writeback pages accounting Date: Fri, 12 Jul 2013 00:56:31 +0800 [thread overview] Message-ID: <CAFj3OHXSFWW2oXRu2t+oiKWo2Nw8eLyxsPi0MprrEzJSMcefaQ@mail.gmail.com> (raw) In-Reply-To: <20130711144003.GJ21667-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org> On Thu, Jul 11, 2013 at 10:40 PM, Michal Hocko <mhocko-AlSwsSmVLrQ@public.gmane.org> wrote: > On Sat 06-07-13 01:32:57, Sha Zhengju wrote: >> From: Sha Zhengju <handai.szj-3b8fjiQLQpfQT0dZR+AlfA@public.gmane.org> >> >> Similar to dirty page, we add per cgroup writeback pages accounting. The lock >> rule still is: >> mem_cgroup_begin_update_page_stat() >> modify page WRITEBACK stat >> mem_cgroup_update_page_stat() >> mem_cgroup_end_update_page_stat() >> >> There're two writeback interfaces to modify: test_{clear/set}_page_writeback(). >> >> Signed-off-by: Sha Zhengju <handai.szj-3b8fjiQLQpfQT0dZR+AlfA@public.gmane.org> >> Acked-by: Michal Hocko <mhocko-AlSwsSmVLrQ@public.gmane.org> >> Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org> >> cc: Greg Thelen <gthelen-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> >> cc: Andrew Morton <akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org> >> cc: Fengguang Wu <fengguang.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> >> cc: Mel Gorman <mgorman-l3A5Bk7waGM@public.gmane.org> >> --- >> include/linux/memcontrol.h | 1 + >> mm/memcontrol.c | 5 +++++ >> mm/page-writeback.c | 15 +++++++++++++++ >> 3 files changed, 21 insertions(+) >> >> diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h >> index f952be6..ccd35d8 100644 >> --- a/include/linux/memcontrol.h >> +++ b/include/linux/memcontrol.h >> @@ -43,6 +43,7 @@ enum mem_cgroup_stat_index { >> MEM_CGROUP_STAT_RSS_HUGE, /* # of pages charged as anon huge */ >> MEM_CGROUP_STAT_FILE_MAPPED, /* # of pages charged as file rss */ >> MEM_CGROUP_STAT_FILE_DIRTY, /* # of dirty pages in page cache */ >> + MEM_CGROUP_STAT_WRITEBACK, /* # of pages under writeback */ >> MEM_CGROUP_STAT_SWAP, /* # of pages, swapped out */ >> MEM_CGROUP_STAT_NSTATS, >> }; >> diff --git a/mm/memcontrol.c b/mm/memcontrol.c >> index 1d31851..9126abc 100644 >> --- a/mm/memcontrol.c >> +++ b/mm/memcontrol.c >> @@ -92,6 +92,7 @@ static const char * const mem_cgroup_stat_names[] = { >> "mapped_file", >> "swap", >> "dirty", >> + "writeback", > > Ordering issue again (see mem_cgroup_stat_index) Yes, you're right. > >> }; >> >> enum mem_cgroup_events_index { > [...] >> diff --git a/mm/page-writeback.c b/mm/page-writeback.c >> index 3900e62..85de9a0 100644 >> --- a/mm/page-writeback.c >> +++ b/mm/page-writeback.c >> @@ -2008,11 +2008,17 @@ EXPORT_SYMBOL(account_page_dirtied); >> >> /* >> * Helper function for set_page_writeback family. >> + * >> + * The caller must hold mem_cgroup_begin/end_update_page_stat() lock >> + * while modifying struct page state and accounting writeback pages. > > I guess "while calling this function" would be sufficient Thanks for the advice. > >> + * See test_set_page_writeback for example. >> + * >> * NOTE: Unlike account_page_dirtied this does not rely on being atomic >> * wrt interrupts. >> */ >> void account_page_writeback(struct page *page) >> { >> + mem_cgroup_inc_page_stat(page, MEM_CGROUP_STAT_WRITEBACK); >> inc_zone_page_state(page, NR_WRITEBACK); >> } >> EXPORT_SYMBOL(account_page_writeback); > [...] > -- > Michal Hocko > SUSE Labs -- Thanks, Sha
WARNING: multiple messages have this Message-ID (diff)
From: Sha Zhengju <handai.szj@gmail.com> To: Michal Hocko <mhocko@suse.cz> Cc: linux-fsdevel@vger.kernel.org, "linux-mm@kvack.org" <linux-mm@kvack.org>, Cgroups <cgroups@vger.kernel.org>, Greg Thelen <gthelen@google.com>, KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>, Andrew Morton <akpm@linux-foundation.org>, Wu Fengguang <fengguang.wu@intel.com>, Mel Gorman <mgorman@suse.de>, Sha Zhengju <handai.szj@taobao.com> Subject: Re: [PATCH V4 4/6] memcg: add per cgroup writeback pages accounting Date: Fri, 12 Jul 2013 00:56:31 +0800 [thread overview] Message-ID: <CAFj3OHXSFWW2oXRu2t+oiKWo2Nw8eLyxsPi0MprrEzJSMcefaQ@mail.gmail.com> (raw) In-Reply-To: <20130711144003.GJ21667@dhcp22.suse.cz> On Thu, Jul 11, 2013 at 10:40 PM, Michal Hocko <mhocko@suse.cz> wrote: > On Sat 06-07-13 01:32:57, Sha Zhengju wrote: >> From: Sha Zhengju <handai.szj@taobao.com> >> >> Similar to dirty page, we add per cgroup writeback pages accounting. The lock >> rule still is: >> mem_cgroup_begin_update_page_stat() >> modify page WRITEBACK stat >> mem_cgroup_update_page_stat() >> mem_cgroup_end_update_page_stat() >> >> There're two writeback interfaces to modify: test_{clear/set}_page_writeback(). >> >> Signed-off-by: Sha Zhengju <handai.szj@taobao.com> >> Acked-by: Michal Hocko <mhocko@suse.cz> >> Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> >> cc: Greg Thelen <gthelen@google.com> >> cc: Andrew Morton <akpm@linux-foundation.org> >> cc: Fengguang Wu <fengguang.wu@intel.com> >> cc: Mel Gorman <mgorman@suse.de> >> --- >> include/linux/memcontrol.h | 1 + >> mm/memcontrol.c | 5 +++++ >> mm/page-writeback.c | 15 +++++++++++++++ >> 3 files changed, 21 insertions(+) >> >> diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h >> index f952be6..ccd35d8 100644 >> --- a/include/linux/memcontrol.h >> +++ b/include/linux/memcontrol.h >> @@ -43,6 +43,7 @@ enum mem_cgroup_stat_index { >> MEM_CGROUP_STAT_RSS_HUGE, /* # of pages charged as anon huge */ >> MEM_CGROUP_STAT_FILE_MAPPED, /* # of pages charged as file rss */ >> MEM_CGROUP_STAT_FILE_DIRTY, /* # of dirty pages in page cache */ >> + MEM_CGROUP_STAT_WRITEBACK, /* # of pages under writeback */ >> MEM_CGROUP_STAT_SWAP, /* # of pages, swapped out */ >> MEM_CGROUP_STAT_NSTATS, >> }; >> diff --git a/mm/memcontrol.c b/mm/memcontrol.c >> index 1d31851..9126abc 100644 >> --- a/mm/memcontrol.c >> +++ b/mm/memcontrol.c >> @@ -92,6 +92,7 @@ static const char * const mem_cgroup_stat_names[] = { >> "mapped_file", >> "swap", >> "dirty", >> + "writeback", > > Ordering issue again (see mem_cgroup_stat_index) Yes, you're right. > >> }; >> >> enum mem_cgroup_events_index { > [...] >> diff --git a/mm/page-writeback.c b/mm/page-writeback.c >> index 3900e62..85de9a0 100644 >> --- a/mm/page-writeback.c >> +++ b/mm/page-writeback.c >> @@ -2008,11 +2008,17 @@ EXPORT_SYMBOL(account_page_dirtied); >> >> /* >> * Helper function for set_page_writeback family. >> + * >> + * The caller must hold mem_cgroup_begin/end_update_page_stat() lock >> + * while modifying struct page state and accounting writeback pages. > > I guess "while calling this function" would be sufficient Thanks for the advice. > >> + * See test_set_page_writeback for example. >> + * >> * NOTE: Unlike account_page_dirtied this does not rely on being atomic >> * wrt interrupts. >> */ >> void account_page_writeback(struct page *page) >> { >> + mem_cgroup_inc_page_stat(page, MEM_CGROUP_STAT_WRITEBACK); >> inc_zone_page_state(page, NR_WRITEBACK); >> } >> EXPORT_SYMBOL(account_page_writeback); > [...] > -- > Michal Hocko > SUSE Labs -- Thanks, Sha -- 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-07-11 16:56 UTC|newest] Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-07-05 17:18 [PATCH V4 0/6] Memcg dirty/writeback page accounting Sha Zhengju 2013-07-05 17:21 ` [PATCH V4 1/6] memcg: remove MEMCG_NR_FILE_MAPPED Sha Zhengju 2013-07-11 13:39 ` Michal Hocko 2013-07-11 15:53 ` Sha Zhengju 2013-07-05 17:26 ` [PATCH V4 2/6] fs/ceph: vfs __set_page_dirty_nobuffers interface instead of doing it inside filesystem Sha Zhengju [not found] ` <1373044710-27371-1-git-send-email-handai.szj-3b8fjiQLQpfQT0dZR+AlfA@public.gmane.org> 2013-07-05 17:30 ` [PATCH V4 3/6] memcg: add per cgroup dirty pages accounting Sha Zhengju 2013-07-05 17:30 ` Sha Zhengju 2013-07-11 14:31 ` Michal Hocko 2013-07-11 16:49 ` Sha Zhengju 2013-07-05 17:32 ` [PATCH V4 4/6] memcg: add per cgroup writeback " Sha Zhengju 2013-07-11 14:40 ` Michal Hocko 2013-07-11 14:40 ` Michal Hocko [not found] ` <20130711144003.GJ21667-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org> 2013-07-11 16:56 ` Sha Zhengju [this message] 2013-07-11 16:56 ` Sha Zhengju 2013-07-05 17:33 ` [PATCH V4 5/6] memcg: patch mem_cgroup_{begin,end}_update_page_stat() out if only root memcg exists Sha Zhengju 2013-07-11 14:56 ` Michal Hocko 2013-07-12 12:59 ` Sha Zhengju 2013-07-12 13:13 ` Sha Zhengju 2013-07-15 6:32 ` Glauber Costa 2013-07-15 6:32 ` Glauber Costa 2013-07-12 13:25 ` Michal Hocko 2013-07-12 13:25 ` Michal Hocko 2013-07-13 4:15 ` Sha Zhengju 2013-07-15 17:58 ` Greg Thelen 2013-07-16 4:26 ` Sha Zhengju 2013-07-05 17:34 ` [PATCH V4 6/6] memcg: Document cgroup dirty/writeback memory statistics Sha Zhengju
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=CAFj3OHXSFWW2oXRu2t+oiKWo2Nw8eLyxsPi0MprrEzJSMcefaQ@mail.gmail.com \ --to=handai.szj-re5jqeeqqe8avxtiumwx3w@public.gmane.org \ --cc=akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \ --cc=cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=fengguang.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \ --cc=gthelen-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \ --cc=handai.szj-3b8fjiQLQpfQT0dZR+AlfA@public.gmane.org \ --cc=kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org \ --cc=linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org \ --cc=mgorman-l3A5Bk7waGM@public.gmane.org \ --cc=mhocko-AlSwsSmVLrQ@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: linkBe 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.