From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752612Ab0CSOom (ORCPT ); Fri, 19 Mar 2010 10:44:42 -0400 Received: from e5.ny.us.ibm.com ([32.97.182.145]:54096 "EHLO e5.ny.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751532Ab0CSOok (ORCPT ); Fri, 19 Mar 2010 10:44:40 -0400 Date: Fri, 19 Mar 2010 07:44:34 -0700 From: "Paul E. McKenney" To: Christoph Lameter Cc: Lai Jiangshan , Mathieu Desnoyers , mingo@elte.hu, akpm@linux-foundation.org, dipankar@in.ibm.com, josh@joshtriplett.org, dvhltc@us.ibm.com, niv@us.ibm.com, tglx@linutronix.de, peterz@infradead.org, rostedt@goodmis.org, Valdis.Kletnieks@vt.edu, dhowells@redhat.com, eric.dumazet@gmail.com, Alexey Dobriyan , Peter Zijlstra , linux-kernel@vger.kernel.org, Pekka Enberg Subject: Re: [PATCH] tree/tiny rcu: Add debug RCU head option (v2) Message-ID: <20100319144434.GA2520@linux.vnet.ibm.com> Reply-To: paulmck@linux.vnet.ibm.com References: <20100319013024.GA28456@Krystal> <4BA2FA01.30102@cn.fujitsu.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Mar 19, 2010 at 07:34:07AM -0500, Christoph Lameter wrote: > On Fri, 19 Mar 2010, Lai Jiangshan wrote: > > > but SLUB opposed me, so I did not post it. > > > > @ slub.c > > static void free_slab(struct kmem_cache *s, struct page *page) > > { > > if (unlikely(s->flags & SLAB_DESTROY_BY_RCU)) { > > /* > > * RCU free overloads the RCU head over the LRU > > */ > > struct rcu_head *head = (void *)&page->lru; > > > > call_rcu(head, rcu_free_slab); > > } else > > __free_slab(s, page); > > } > > > > I think it is not your patch's fault, but the above code has > > already existed. > > > > In your patch, struct rcu_head::debug will share the same memory of > > the other field of struct page, (especially share the struct page::flags > > which I encountered) > > Right. I like the smallness of the RCU structure but if you must > increase its size then we could: > > A) put the rcu structure at the end of each page like SLOB > but that will take away memory that could be used by objects. > > B) Move the rcu object up by a word so that it overloads the index field > in the page struct. That would give another exact fit but will cause > trouble again if you bloat the structure some more. The size increase is strictly under a debug option -- the non-debug size remains the same as always. And I expect that in the longer term, we will be able to shrink the size back down even with this debug option available. One question: do any of the other allocators care about the size of the struct rcu_head? If not, a temporary work-around would be to simply prohibit use of this debug option when running with SLUB. Thanx, Paul