From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Morton Subject: Re: [RFC][-mm] [2/2] Simple stats for memory resource controller Date: Mon, 28 Apr 2008 09:40:26 -0700 Message-ID: <20080428094026.bc78ccc7.akpm@linux-foundation.org> References: <200804052340.02386.balajirrao@gmail.com> <48036CB4.5050700@linux.vnet.ibm.com> <200804282130.30188.balajirrao@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <200804282130.30188.balajirrao-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: containers-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org Errors-To: containers-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org To: Balaji Rao Cc: containers-qjLDD68F18O7TbgM5vRIOg@public.gmane.org, menage-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dhaval-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org List-Id: containers.vger.kernel.org On Mon, 28 Apr 2008 21:30:29 +0530 Balaji Rao wrote: > On Monday 14 April 2008 08:09:48 pm Balbir Singh wrote: > > Balaji Rao wrote: > > > This patch implements trivial statistics for the memory resource controller. > > > > > > Signed-off-by: Balaji Rao > > > CC: Balbir Singh > > > CC: Dhaval Giani > > > > > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > > > index a860765..ca98b21 100644 > > > --- a/mm/memcontrol.c > > > +++ b/mm/memcontrol.c > > > @@ -47,6 +47,8 @@ enum mem_cgroup_stat_index { > > > */ > > > MEM_CGROUP_STAT_CACHE, /* # of pages charged as cache */ > > > MEM_CGROUP_STAT_RSS, /* # of pages charged as rss */ > > > + MEM_CGROUP_STAT_PGPGIN_COUNT, /* # of pages paged in */ > > > + MEM_CGROUP_STAT_PGPGOUT_COUNT, /* # of pages paged out */ > > > > > > MEM_CGROUP_STAT_NSTATS, > > > }; > > > @@ -198,6 +200,13 @@ static void mem_cgroup_charge_statistics(struct mem_cgroup *mem, int flags, > > > __mem_cgroup_stat_add_safe(stat, MEM_CGROUP_STAT_CACHE, val); > > > else > > > __mem_cgroup_stat_add_safe(stat, MEM_CGROUP_STAT_RSS, val); > > > + > > > + if (charge) > > > + __mem_cgroup_stat_add_safe(stat, > > > + MEM_CGROUP_STAT_PGPGIN_COUNT, 1); > > > + else > > > + __mem_cgroup_stat_add_safe(stat, > > > + MEM_CGROUP_STAT_PGPGOUT_COUNT, 1); > > > } > > > > > > static struct mem_cgroup_per_zone * > > > @@ -897,6 +906,8 @@ static const struct mem_cgroup_stat_desc { > > > } mem_cgroup_stat_desc[] = { > > > [MEM_CGROUP_STAT_CACHE] = { "cache", PAGE_SIZE, }, > > > [MEM_CGROUP_STAT_RSS] = { "rss", PAGE_SIZE, }, > > > + [MEM_CGROUP_STAT_PGPGIN_COUNT] = {"pgpgin", 1, }, > > > + [MEM_CGROUP_STAT_PGPGOUT_COUNT] = {"pgpgout", 1, }, > > > }; > > > > > > static int mem_control_stat_show(struct cgroup *cont, struct cftype *cft, > > > > > > > Acked-by: Balbir Singh > > > > Hi, Andrew, > > > > Could you please include these statistics in -mm. > > > > Balbir > > > > > Hi Andrew, > > Now that Balbir Singh has ACKed it, could you please include it in -mm ? I guess we can add this one, sure. But [patch 1/2] needs work. - The local_irq_save()-around-for_each_possible_cpu() locking doesn't make sense. - indenting is busted in account_user_time() and account_system_time() - The use of for_each_possible_cpu() can be grossly inefficient. It would be preferred to use for_each_possible_cpu() and add a cpu-hotplug notifier. - The proposed newly-added userspace interfaces are undocumented - The changelogs don't explain why we might want this feature in Linux. - Generally: there are a heck of a lot of different ways of accounting for things in core kernel and it's really sad to see yet another one being added. Actually, [patch 2/2] adds new kerenl->user interfaces and doesn't document them. But afaict the existing memcgroup stats are secret too. From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S936348AbYD1Qrh (ORCPT ); Mon, 28 Apr 2008 12:47:37 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S964833AbYD1QrM (ORCPT ); Mon, 28 Apr 2008 12:47:12 -0400 Received: from smtp1.linux-foundation.org ([140.211.169.13]:36464 "EHLO smtp1.linux-foundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S936126AbYD1QrI (ORCPT ); Mon, 28 Apr 2008 12:47:08 -0400 Date: Mon, 28 Apr 2008 09:40:26 -0700 From: Andrew Morton To: Balaji Rao Cc: linux-kernel@vger.kernel.org, containers@lists.osdl.org, menage@google.com, balbir@in.ibm.com, dhaval@linux.vnet.ibm.com Subject: Re: [RFC][-mm] [2/2] Simple stats for memory resource controller Message-Id: <20080428094026.bc78ccc7.akpm@linux-foundation.org> In-Reply-To: <200804282130.30188.balajirrao@gmail.com> References: <200804052340.02386.balajirrao@gmail.com> <48036CB4.5050700@linux.vnet.ibm.com> <200804282130.30188.balajirrao@gmail.com> X-Mailer: Sylpheed 2.4.8 (GTK+ 2.12.5; x86_64-redhat-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 28 Apr 2008 21:30:29 +0530 Balaji Rao wrote: > On Monday 14 April 2008 08:09:48 pm Balbir Singh wrote: > > Balaji Rao wrote: > > > This patch implements trivial statistics for the memory resource controller. > > > > > > Signed-off-by: Balaji Rao > > > CC: Balbir Singh > > > CC: Dhaval Giani > > > > > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > > > index a860765..ca98b21 100644 > > > --- a/mm/memcontrol.c > > > +++ b/mm/memcontrol.c > > > @@ -47,6 +47,8 @@ enum mem_cgroup_stat_index { > > > */ > > > MEM_CGROUP_STAT_CACHE, /* # of pages charged as cache */ > > > MEM_CGROUP_STAT_RSS, /* # of pages charged as rss */ > > > + MEM_CGROUP_STAT_PGPGIN_COUNT, /* # of pages paged in */ > > > + MEM_CGROUP_STAT_PGPGOUT_COUNT, /* # of pages paged out */ > > > > > > MEM_CGROUP_STAT_NSTATS, > > > }; > > > @@ -198,6 +200,13 @@ static void mem_cgroup_charge_statistics(struct mem_cgroup *mem, int flags, > > > __mem_cgroup_stat_add_safe(stat, MEM_CGROUP_STAT_CACHE, val); > > > else > > > __mem_cgroup_stat_add_safe(stat, MEM_CGROUP_STAT_RSS, val); > > > + > > > + if (charge) > > > + __mem_cgroup_stat_add_safe(stat, > > > + MEM_CGROUP_STAT_PGPGIN_COUNT, 1); > > > + else > > > + __mem_cgroup_stat_add_safe(stat, > > > + MEM_CGROUP_STAT_PGPGOUT_COUNT, 1); > > > } > > > > > > static struct mem_cgroup_per_zone * > > > @@ -897,6 +906,8 @@ static const struct mem_cgroup_stat_desc { > > > } mem_cgroup_stat_desc[] = { > > > [MEM_CGROUP_STAT_CACHE] = { "cache", PAGE_SIZE, }, > > > [MEM_CGROUP_STAT_RSS] = { "rss", PAGE_SIZE, }, > > > + [MEM_CGROUP_STAT_PGPGIN_COUNT] = {"pgpgin", 1, }, > > > + [MEM_CGROUP_STAT_PGPGOUT_COUNT] = {"pgpgout", 1, }, > > > }; > > > > > > static int mem_control_stat_show(struct cgroup *cont, struct cftype *cft, > > > > > > > Acked-by: Balbir Singh > > > > Hi, Andrew, > > > > Could you please include these statistics in -mm. > > > > Balbir > > > > > Hi Andrew, > > Now that Balbir Singh has ACKed it, could you please include it in -mm ? I guess we can add this one, sure. But [patch 1/2] needs work. - The local_irq_save()-around-for_each_possible_cpu() locking doesn't make sense. - indenting is busted in account_user_time() and account_system_time() - The use of for_each_possible_cpu() can be grossly inefficient. It would be preferred to use for_each_possible_cpu() and add a cpu-hotplug notifier. - The proposed newly-added userspace interfaces are undocumented - The changelogs don't explain why we might want this feature in Linux. - Generally: there are a heck of a lot of different ways of accounting for things in core kernel and it's really sad to see yet another one being added. Actually, [patch 2/2] adds new kerenl->user interfaces and doesn't document them. But afaict the existing memcgroup stats are secret too.