From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755912AbZDUJHh (ORCPT ); Tue, 21 Apr 2009 05:07:37 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752270AbZDUJH2 (ORCPT ); Tue, 21 Apr 2009 05:07:28 -0400 Received: from fgwmail6.fujitsu.co.jp ([192.51.44.36]:44307 "EHLO fgwmail6.fujitsu.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751559AbZDUJH1 (ORCPT ); Tue, 21 Apr 2009 05:07:27 -0400 From: KOSAKI Motohiro To: Mel Gorman Subject: Re: [PATCH 11/25] Calculate the cold parameter for allocation only once Cc: kosaki.motohiro@jp.fujitsu.com, Linux Memory Management List , Christoph Lameter , Nick Piggin , Linux Kernel Mailing List , Lin Ming , Zhang Yanmin , Peter Zijlstra , Pekka Enberg , Andrew Morton In-Reply-To: <1240266011-11140-12-git-send-email-mel@csn.ul.ie> References: <1240266011-11140-1-git-send-email-mel@csn.ul.ie> <1240266011-11140-12-git-send-email-mel@csn.ul.ie> Message-Id: <20090421180551.F142.A69D9226@jp.fujitsu.com> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Mailer: Becky! ver. 2.50 [ja] Date: Tue, 21 Apr 2009 18:07:24 +0900 (JST) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > GFP mask is checked for __GFP_COLD has been specified when deciding which > end of the PCP lists to use. However, it is happening multiple times per > allocation, at least once per zone traversed. Calculate it once. > > Signed-off-by: Mel Gorman > --- > mm/page_alloc.c | 35 ++++++++++++++++++----------------- > 1 files changed, 18 insertions(+), 17 deletions(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index 1506cd5..51e1ded 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -1066,11 +1066,10 @@ void split_page(struct page *page, unsigned int order) > */ > static struct page *buffered_rmqueue(struct zone *preferred_zone, > struct zone *zone, int order, gfp_t gfp_flags, > - int migratetype) > + int migratetype, int cold) > { > unsigned long flags; > struct page *page; > - int cold = !!(gfp_flags & __GFP_COLD); > int cpu; Honestly, I don't like this ;-) It seems benefit is too small. It don't win against code ugliness, I think.