On Thu, 14 Apr 2011 04:10:58 +0200 Eric Dumazet <eric.dumazet@xxxxxxxxx> 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 <eric.dumazet@xxxxxxxxx> > > #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, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>