From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759633AbYAaJNm (ORCPT ); Thu, 31 Jan 2008 04:13:42 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752151AbYAaJN0 (ORCPT ); Thu, 31 Jan 2008 04:13:26 -0500 Received: from smtp2.linux-foundation.org ([207.189.120.14]:38969 "EHLO smtp2.linux-foundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751026AbYAaJNY (ORCPT ); Thu, 31 Jan 2008 04:13:24 -0500 Date: Thu, 31 Jan 2008 01:12:27 -0800 From: Andrew Morton To: Peter Zijlstra Cc: hugh@veritas.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, npiggin@suse.de, riel@redhat.com, mztabzr@0pointer.de, mpm@selenic.com Subject: Re: [PATCH] mm: MADV_WILLNEED implementation for anonymous memory Message-Id: <20080131011227.257b9437.akpm@linux-foundation.org> In-Reply-To: <1201769040.28547.245.camel@lappy> References: <1201714139.28547.237.camel@lappy> <20080130144049.73596898.akpm@linux-foundation.org> <1201769040.28547.245.camel@lappy> X-Mailer: Sylpheed 2.4.1 (GTK+ 2.8.17; x86_64-unknown-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 On Thu, 31 Jan 2008 09:44:00 +0100 Peter Zijlstra wrote: > > On Wed, 2008-01-30 at 14:40 -0800, Andrew Morton wrote: > > On Wed, 30 Jan 2008 18:28:59 +0100 > > Peter Zijlstra wrote: > > > > > Implement MADV_WILLNEED for anonymous pages by walking the page tables and > > > starting asynchonous swap cache reads for all encountered swap pages. > > > > Why cannot this use (a perhaps suitably-modified) make_pages_present()? > > Because make_pages_present() relies on page faults to bring data in and > will thus wait for all data to be present before returning. > > This solution is async; it will just issue a read for the requested > pages and moves on. > I of course realise that. I also realise that swapin_readahead() is _supposed_ to make the difference moot. There's something you guys aren't telling us. Several things, actually. Please don't do that. Implementation-wise: make_pages_present() _can_ be converted to do this. But it's a lot of patching, and the result will be a cleaner, faster and smaller core MM. Whereas your approach is easy, but adds more code and leaves the old stuff slow-and-dirty. Guess which approach is preferred? ;)