Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753616Ab1DNF0I (ORCPT ); Thu, 14 Apr 2011 01:26:08 -0400 Received: from smtp1.linux-foundation.org ([140.211.169.13]:40338 "EHLO smtp1.linux-foundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753324Ab1DNF0H (ORCPT ); Thu, 14 Apr 2011 01:26:07 -0400 Date: Wed, 13 Apr 2011 22:28:03 -0700 From: Andrew Morton To: Eric Dumazet Cc: Changli Gao , =?ISO-8859-1?Q?Am=E9rico?= Wang , Jiri Slaby , azurIt , linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, Jiri Slaby , Mel Gorman Subject: Re: Regression from 2.6.36 Message-Id: <20110413222803.38e42baf.akpm@linux-foundation.org> In-Reply-To: <1302747058.3549.7.camel@edumazet-laptop> References: <20110315132527.130FB80018F1@mail1005.cent> <20110317001519.GB18911@kroah.com> <20110407120112.E08DCA03@pobox.sk> <4D9D8FAA.9080405@suse.cz> <1302177428.3357.25.camel@edumazet-laptop> <1302178426.3357.34.camel@edumazet-laptop> <1302190586.3357.45.camel@edumazet-laptop> <20110412154906.70829d60.akpm@linux-foundation.org> <20110412183132.a854bffc.akpm@linux-foundation.org> <1302662256.2811.27.camel@edumazet-laptop> <20110413141600.28793661.akpm@linux-foundation.org> <1302747058.3549.7.camel@edumazet-laptop> X-Mailer: Sylpheed 2.7.1 (GTK+ 2.18.9; 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 Content-Length: 1468 Lines: 49 On Thu, 14 Apr 2011 04:10:58 +0200 Eric Dumazet wrote: > > --- a/fs/file.c~a > > +++ a/fs/file.c > > @@ -39,14 +39,17 @@ int sysctl_nr_open_max = 1024 * 1024; /* > > */ > > static DEFINE_PER_CPU(struct fdtable_defer, fdtable_defer_list); > > > > -static inline void *alloc_fdmem(unsigned int size) > > +static void *alloc_fdmem(unsigned int size) > > { > > - void *data; > > - > > - data = kmalloc(size, GFP_KERNEL|__GFP_NOWARN); > > - if (data != NULL) > > - return data; > > - > > + /* > > + * Very large allocations can stress page reclaim, so fall back to > > + * vmalloc() if the allocation size will be considered "large" by the VM. > > + */ > > + if (size <= (PAGE_SIZE << PAGE_ALLOC_COSTLY_ORDER) { > > + void *data = kmalloc(size, GFP_KERNEL|__GFP_NOWARN); > > + if (data != NULL) > > + return data; > > + } > > return vmalloc(size); > > } > > > > _ > > > > Acked-by: Eric Dumazet > > #define PAGE_ALLOC_COSTLY_ORDER 3 > > On x86_64, this means we try kmalloc() up to 4096 files in fdtable. Thanks. I added the cc:stable to the changelog. It'd be nice to get this tested if poss, to confrm that it actually fixes things. Also, Melpoke. -- 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/