From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Morton Subject: Re: [PATCH v2] memcg: reduce the size of struct memcg 244-fold. Date: Thu, 24 Jan 2013 15:51:05 -0800 Message-ID: <20130124155105.85dae9d9.akpm@linux-foundation.org> References: <1359009996-5350-1-git-send-email-glommer@parallels.com> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: Sender: cgroups-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-ID: Content-Type: text/plain; charset="us-ascii" To: Greg Thelen Cc: Glauber Costa , linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org, cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Michal Hocko , Kamezawa Hiroyuki , Johannes Weiner , Hugh Dickins , Ying Han , Mel Gorman , Rik van Riel On Wed, 23 Jan 2013 23:50:31 -0800 Greg Thelen wrote: > > --- a/mm/memcontrol.c > > +++ b/mm/memcontrol.c > > @@ -172,7 +172,7 @@ struct mem_cgroup_per_node { > > }; > > > > struct mem_cgroup_lru_info { > > - struct mem_cgroup_per_node *nodeinfo[MAX_NUMNODES]; > > + struct mem_cgroup_per_node *nodeinfo[0]; > > It seems like a VM_BUG_ON() in mem_cgroup_zoneinfo() asserting that the > nid index is less than nr_node_ids would be good at catching illegal > indexes. I don't see any illegal indexes in your patch, but I fear that > someday a MAX_NUMNODES based for() loop might sneak in. Can't hurt ;) > Tangential question: why use inline here? I figure that modern > compilers are good at making inlining decisions. And that'll save some disk space. This? --- a/mm/memcontrol.c~memcg-reduce-the-size-of-struct-memcg-244-fold-fix +++ a/mm/memcontrol.c @@ -381,7 +381,7 @@ enum { ((1 << KMEM_ACCOUNTED_ACTIVE) | (1 << KMEM_ACCOUNTED_ACTIVATED)) #ifdef CONFIG_MEMCG_KMEM -static inline void memcg_kmem_set_active(struct mem_cgroup *memcg) +static void memcg_kmem_set_active(struct mem_cgroup *memcg) { set_bit(KMEM_ACCOUNTED_ACTIVE, &memcg->kmem_account_flags); } @@ -645,6 +645,7 @@ static void drain_all_stock_async(struct static struct mem_cgroup_per_zone * mem_cgroup_zoneinfo(struct mem_cgroup *memcg, int nid, int zid) { + VM_BUG_ON((unsigned)nid >= nr_node_ids); return &memcg->info.nodeinfo[nid]->zoneinfo[zid]; } _ Glauber, could you please cc me on patches more often? It's a bit of a pita having to go back to the mailing list to see if there has been more dicussion and I may end up missing late review comments and acks.