From: Johannes Weiner <hannes@cmpxchg.org>
To: Greg Thelen <gthelen@google.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Balbir Singh <balbir@linux.vnet.ibm.com>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>,
Wu Fengguang <fengguang.wu@intel.com>,
Minchan Kim <minchan.kim@gmail.com>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 4/6] memcg: simplify mem_cgroup_page_stat()
Date: Fri, 19 Nov 2010 12:22:16 +0100 [thread overview]
Message-ID: <20101119112216.GC24635@cmpxchg.org> (raw)
In-Reply-To: <xr93pquaxoll.fsf@ninji.mtv.corp.google.com>
On Fri, Nov 12, 2010 at 12:40:22PM -0800, Greg Thelen wrote:
> Johannes Weiner <hannes@cmpxchg.org> writes:
>
> > On Tue, Nov 09, 2010 at 01:24:29AM -0800, Greg Thelen wrote:
> >> The cgroup given to mem_cgroup_page_stat() is no allowed to be
> >> NULL or the root cgroup. So there is no need to complicate the code
> >> handling those cases.
> >>
> >> Signed-off-by: Greg Thelen <gthelen@google.com>
> >> ---
> >> mm/memcontrol.c | 48 ++++++++++++++++++++++--------------------------
> >> 1 files changed, 22 insertions(+), 26 deletions(-)
> >>
> >> diff --git a/mm/memcontrol.c b/mm/memcontrol.c
> >> index eb621ee..f8df350 100644
> >> --- a/mm/memcontrol.c
> >> +++ b/mm/memcontrol.c
> >> @@ -1364,12 +1364,10 @@ memcg_hierarchical_free_pages(struct mem_cgroup *mem)
> >>
> >> /*
> >> * mem_cgroup_page_stat() - get memory cgroup file cache statistics
> >> - * @mem: optional memory cgroup to query. If NULL, use current task's
> >> - * cgroup.
> >> + * @mem: memory cgroup to query
> >> * @item: memory statistic item exported to the kernel
> >> *
> >> - * Return the accounted statistic value or negative value if current task is
> >> - * root cgroup.
> >> + * Return the accounted statistic value.
> >> */
> >> long mem_cgroup_page_stat(struct mem_cgroup *mem,
> >> enum mem_cgroup_nr_pages_item item)
> >> @@ -1377,29 +1375,27 @@ long mem_cgroup_page_stat(struct mem_cgroup *mem,
> >> struct mem_cgroup *iter;
> >> long value;
> >>
> >> + VM_BUG_ON(!mem);
> >> + VM_BUG_ON(mem_cgroup_is_root(mem));
> >> +
> >> get_online_cpus();
> >> - rcu_read_lock();
> >> - if (!mem)
> >> - mem = mem_cgroup_from_task(current);
> >> - if (__mem_cgroup_has_dirty_limit(mem)) {
> >
> > What about mem->use_hierarchy that is checked in
> > __mem_cgroup_has_dirty_limit()? Is it no longer needed?
>
> It is no longer needed because the callers of mem_cgroup_page_stat()
> call __mem_cgroup_has_dirty_limit(). In the current implementation, if
> use_hierarchy=1 then the cgroup does not have dirty limits, so calls
> into mem_cgroup_page_stat() are avoided. Specifically the callers of
> mem_cgroup_page_stat() are:
>
> 1. mem_cgroup_dirty_info() which calls __mem_cgroup_has_dirty_limit()
> and returns false if use_hierarchy=1.
>
> 2. throttle_vm_writeout() which calls mem_dirty_info() ->
> mem_cgroup_dirty_info() -> __mem_cgroup_has_dirty_limit() will fall
> back to global limits if use_hierarchy=1.
Thanks for the clarification.
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
WARNING: multiple messages have this Message-ID (diff)
From: Johannes Weiner <hannes@cmpxchg.org>
To: Greg Thelen <gthelen@google.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Balbir Singh <balbir@linux.vnet.ibm.com>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>,
Wu Fengguang <fengguang.wu@intel.com>,
Minchan Kim <minchan.kim@gmail.com>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 4/6] memcg: simplify mem_cgroup_page_stat()
Date: Fri, 19 Nov 2010 12:22:16 +0100 [thread overview]
Message-ID: <20101119112216.GC24635@cmpxchg.org> (raw)
In-Reply-To: <xr93pquaxoll.fsf@ninji.mtv.corp.google.com>
On Fri, Nov 12, 2010 at 12:40:22PM -0800, Greg Thelen wrote:
> Johannes Weiner <hannes@cmpxchg.org> writes:
>
> > On Tue, Nov 09, 2010 at 01:24:29AM -0800, Greg Thelen wrote:
> >> The cgroup given to mem_cgroup_page_stat() is no allowed to be
> >> NULL or the root cgroup. So there is no need to complicate the code
> >> handling those cases.
> >>
> >> Signed-off-by: Greg Thelen <gthelen@google.com>
> >> ---
> >> mm/memcontrol.c | 48 ++++++++++++++++++++++--------------------------
> >> 1 files changed, 22 insertions(+), 26 deletions(-)
> >>
> >> diff --git a/mm/memcontrol.c b/mm/memcontrol.c
> >> index eb621ee..f8df350 100644
> >> --- a/mm/memcontrol.c
> >> +++ b/mm/memcontrol.c
> >> @@ -1364,12 +1364,10 @@ memcg_hierarchical_free_pages(struct mem_cgroup *mem)
> >>
> >> /*
> >> * mem_cgroup_page_stat() - get memory cgroup file cache statistics
> >> - * @mem: optional memory cgroup to query. If NULL, use current task's
> >> - * cgroup.
> >> + * @mem: memory cgroup to query
> >> * @item: memory statistic item exported to the kernel
> >> *
> >> - * Return the accounted statistic value or negative value if current task is
> >> - * root cgroup.
> >> + * Return the accounted statistic value.
> >> */
> >> long mem_cgroup_page_stat(struct mem_cgroup *mem,
> >> enum mem_cgroup_nr_pages_item item)
> >> @@ -1377,29 +1375,27 @@ long mem_cgroup_page_stat(struct mem_cgroup *mem,
> >> struct mem_cgroup *iter;
> >> long value;
> >>
> >> + VM_BUG_ON(!mem);
> >> + VM_BUG_ON(mem_cgroup_is_root(mem));
> >> +
> >> get_online_cpus();
> >> - rcu_read_lock();
> >> - if (!mem)
> >> - mem = mem_cgroup_from_task(current);
> >> - if (__mem_cgroup_has_dirty_limit(mem)) {
> >
> > What about mem->use_hierarchy that is checked in
> > __mem_cgroup_has_dirty_limit()? Is it no longer needed?
>
> It is no longer needed because the callers of mem_cgroup_page_stat()
> call __mem_cgroup_has_dirty_limit(). In the current implementation, if
> use_hierarchy=1 then the cgroup does not have dirty limits, so calls
> into mem_cgroup_page_stat() are avoided. Specifically the callers of
> mem_cgroup_page_stat() are:
>
> 1. mem_cgroup_dirty_info() which calls __mem_cgroup_has_dirty_limit()
> and returns false if use_hierarchy=1.
>
> 2. throttle_vm_writeout() which calls mem_dirty_info() ->
> mem_cgroup_dirty_info() -> __mem_cgroup_has_dirty_limit() will fall
> back to global limits if use_hierarchy=1.
Thanks for the clarification.
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
--
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 policy in Canada: sign http://dissolvethecrtc.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2010-11-19 11:22 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-09 9:24 [PATCH 0/6] *** memcg: make throttle_vm_writeout() cgroup aware *** Greg Thelen
2010-11-09 9:24 ` Greg Thelen
2010-11-09 9:24 ` [PATCH 1/6] memcg: add mem_cgroup parameter to mem_cgroup_page_stat() Greg Thelen
2010-11-09 9:24 ` Greg Thelen
2010-11-09 22:53 ` Minchan Kim
2010-11-09 22:53 ` Minchan Kim
2010-11-10 0:51 ` Minchan Kim
2010-11-10 0:51 ` Minchan Kim
2010-11-16 3:50 ` KAMEZAWA Hiroyuki
2010-11-16 3:50 ` KAMEZAWA Hiroyuki
2010-11-22 6:40 ` Balbir Singh
2010-11-22 6:40 ` Balbir Singh
2010-11-09 9:24 ` [PATCH 2/6] memcg: pass mem_cgroup to mem_cgroup_dirty_info() Greg Thelen
2010-11-09 9:24 ` Greg Thelen
2010-11-09 23:09 ` Minchan Kim
2010-11-09 23:09 ` Minchan Kim
2010-11-16 3:51 ` KAMEZAWA Hiroyuki
2010-11-16 3:51 ` KAMEZAWA Hiroyuki
2010-11-22 6:41 ` Balbir Singh
2010-11-22 6:41 ` Balbir Singh
2010-11-09 9:24 ` [PATCH 3/6] memcg: make throttle_vm_writeout() memcg aware Greg Thelen
2010-11-09 9:24 ` Greg Thelen
2010-11-09 23:22 ` Minchan Kim
2010-11-09 23:22 ` Minchan Kim
2010-11-12 8:17 ` Johannes Weiner
2010-11-12 8:17 ` Johannes Weiner
2010-11-12 20:39 ` Greg Thelen
2010-11-12 20:39 ` Greg Thelen
2010-11-16 3:57 ` KAMEZAWA Hiroyuki
2010-11-16 3:57 ` KAMEZAWA Hiroyuki
2010-11-19 11:16 ` Johannes Weiner
2010-11-19 11:16 ` Johannes Weiner
2010-11-09 9:24 ` [PATCH 4/6] memcg: simplify mem_cgroup_page_stat() Greg Thelen
2010-11-09 9:24 ` Greg Thelen
2010-11-09 23:36 ` Minchan Kim
2010-11-09 23:36 ` Minchan Kim
2010-11-12 8:19 ` Johannes Weiner
2010-11-12 8:19 ` Johannes Weiner
2010-11-12 20:40 ` Greg Thelen
2010-11-12 20:40 ` Greg Thelen
2010-11-19 11:22 ` Johannes Weiner [this message]
2010-11-19 11:22 ` Johannes Weiner
2010-11-16 3:58 ` KAMEZAWA Hiroyuki
2010-11-16 3:58 ` KAMEZAWA Hiroyuki
2010-11-09 9:24 ` [PATCH 5/6] memcg: simplify mem_cgroup_dirty_info() Greg Thelen
2010-11-09 9:24 ` Greg Thelen
2010-11-10 1:01 ` Minchan Kim
2010-11-10 1:01 ` Minchan Kim
2010-11-12 8:21 ` Johannes Weiner
2010-11-12 8:21 ` Johannes Weiner
2010-11-12 20:40 ` Greg Thelen
2010-11-12 20:40 ` Greg Thelen
2010-11-09 9:24 ` [PATCH 6/6] memcg: make mem_cgroup_page_stat() return value unsigned Greg Thelen
2010-11-09 9:24 ` Greg Thelen
2010-11-09 12:15 ` Wu Fengguang
2010-11-09 12:15 ` Wu Fengguang
2010-11-10 1:04 ` Minchan Kim
2010-11-10 1:04 ` Minchan Kim
2010-11-12 8:29 ` Johannes Weiner
2010-11-12 8:29 ` Johannes Weiner
2010-11-12 20:41 ` Greg Thelen
2010-11-12 20:41 ` Greg Thelen
2010-11-19 11:39 ` Johannes Weiner
2010-11-19 11:39 ` Johannes Weiner
2010-11-16 4:00 ` KAMEZAWA Hiroyuki
2010-11-16 4:00 ` KAMEZAWA Hiroyuki
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=20101119112216.GC24635@cmpxchg.org \
--to=hannes@cmpxchg.org \
--cc=akpm@linux-foundation.org \
--cc=balbir@linux.vnet.ibm.com \
--cc=fengguang.wu@intel.com \
--cc=gthelen@google.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=minchan.kim@gmail.com \
--cc=nishimura@mxp.nes.nec.co.jp \
/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.