From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1763339AbZEAOcn (ORCPT ); Fri, 1 May 2009 10:32:43 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1759218AbZEAOca (ORCPT ); Fri, 1 May 2009 10:32:30 -0400 Received: from smtp.ultrahosting.com ([74.213.174.254]:60412 "EHLO smtp.ultrahosting.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758300AbZEAOc3 (ORCPT ); Fri, 1 May 2009 10:32:29 -0400 Date: Fri, 1 May 2009 09:59:35 -0400 (EDT) From: Christoph Lameter X-X-Sender: cl@qirst.com To: Mel Gorman cc: Hugh Dickins , Andrew Morton , Andi Kleen , David Miller , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH mmotm] mm: alloc_large_system_hash check order In-Reply-To: <20090501140015.GA27831@csn.ul.ie> Message-ID: References: <20090430132544.GB21997@csn.ul.ie> <20090501140015.GA27831@csn.ul.ie> User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 1 May 2009, Mel Gorman wrote: > > Andrew noticed another oddity: that if it goes the hashdist __vmalloc() > > way, it won't be limited by MAX_ORDER. Makes one wonder whether it > > ought to fall back to __vmalloc() if the alloc_pages_exact() fails. > > I don't believe so. __vmalloc() is only used when hashdist= is used or on IA-64 > (according to the documentation). It is used in the case that the caller is > willing to deal with the vmalloc() overhead (e.g. using base page PTEs) in > exchange for the pages being interleaved on different nodes so that access > to the hash table has average performance[*] > > If we automatically fell back to vmalloc(), I bet 2c we'd eventually get > a mysterious performance regression report for a workload that depended on > the hash tables performance but that there was enough memory for the hash > table to be allocated with vmalloc() instead of alloc_pages_exact(). Can we fall back to a huge page mapped vmalloc? Like what the vmemmap code does? Then we also would not have MAX_ORDER limitations.