Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755364AbYCUHCm (ORCPT ); Fri, 21 Mar 2008 03:02:42 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753514AbYCUHCb (ORCPT ); Fri, 21 Mar 2008 03:02:31 -0400 Received: from neuf-infra-smtp-out-sp604003av.neufgp.fr ([84.96.92.124]:58656 "EHLO neuf-infra-smtp-out-sp604003av.neufgp.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753507AbYCUHCa (ORCPT ); Fri, 21 Mar 2008 03:02:30 -0400 Message-ID: <47E35D73.6060703@cosmosbay.com> Date: Fri, 21 Mar 2008 08:02:11 +0100 From: Eric Dumazet User-Agent: Thunderbird 2.0.0.12 (Windows/20080213) MIME-Version: 1.0 To: Christoph Lameter CC: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Linux Netdev List Subject: Re: [14/14] vcompound: Avoid vmalloc for ehash_locks References: <20080321061703.921169367@sgi.com> <20080321061727.491610308@sgi.com> In-Reply-To: <20080321061727.491610308@sgi.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1900 Lines: 53 Christoph Lameter a ?crit : > Avoid the use of vmalloc for the ehash locks. > > Signed-off-by: Christoph Lameter > > --- > include/net/inet_hashtables.h | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > Index: linux-2.6.25-rc5-mm1/include/net/inet_hashtables.h > =================================================================== > --- linux-2.6.25-rc5-mm1.orig/include/net/inet_hashtables.h 2008-03-20 22:21:02.680501729 -0700 > +++ linux-2.6.25-rc5-mm1/include/net/inet_hashtables.h 2008-03-20 22:22:15.416565317 -0700 > @@ -164,7 +164,8 @@ static inline int inet_ehash_locks_alloc > if (sizeof(rwlock_t) != 0) { > #ifdef CONFIG_NUMA > if (size * sizeof(rwlock_t) > PAGE_SIZE) > - hashinfo->ehash_locks = vmalloc(size * sizeof(rwlock_t)); > + hashinfo->ehash_locks = __alloc_vcompound(GFP_KERNEL, > + get_order(size * sizeof(rwlock_t))); > else > #endif > hashinfo->ehash_locks = kmalloc(size * sizeof(rwlock_t), > @@ -185,7 +186,7 @@ static inline void inet_ehash_locks_free > unsigned int size = (hashinfo->ehash_locks_mask + 1) * > sizeof(rwlock_t); > if (size > PAGE_SIZE) > - vfree(hashinfo->ehash_locks); > + __free_vcompound(hashinfo->ehash_locks); > else > #endif > kfree(hashinfo->ehash_locks); > But, isnt it defeating the purpose of this *particular* vmalloc() use ? CONFIG_NUMA and vmalloc() at boot time means : Try to distribute the pages on several nodes. Memory pressure on ehash_locks[] is so high we definitly want to spread it. (for similar uses of vmalloc(), see also hashdist=1 ) Also, please CC netdev for network patches :) Thank you -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/