From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753385AbbDAMsU (ORCPT ); Wed, 1 Apr 2015 08:48:20 -0400 Received: from mail-lb0-f180.google.com ([209.85.217.180]:36669 "EHLO mail-lb0-f180.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752083AbbDAMsR (ORCPT ); Wed, 1 Apr 2015 08:48:17 -0400 From: Rasmus Villemoes To: Sasha Levin Cc: linux-kernel@vger.kernel.org, mhocko@suse.cz, Andrew Morton , Mel Gorman , Vlastimil Babka , Johannes Weiner , David Rientjes , Joonsoo Kim , linux-mm@kvack.org (open list:MEMORY MANAGEMENT) Subject: Re: [PATCH 2/2] mm: __free_pages batch up 0-order pages for freeing Organization: D03 References: <1427839895-16434-1-git-send-email-sasha.levin@oracle.com> <1427839895-16434-2-git-send-email-sasha.levin@oracle.com> X-Hashcash: 1:20:150401:mgorman@suse.de::24Gb8wHK6O7rB8Xq:001Wp0 X-Hashcash: 1:20:150401:hannes@cmpxchg.org::Wtohv85bYyiwSAzS:00000000000000000000000000000000000000000001vm9 X-Hashcash: 1:20:150401:mhocko@suse.cz::qfh0/cBt8ZR+vxYd:0002/BS X-Hashcash: 1:20:150401:iamjoonsoo.kim@lge.com::KXzQudzKXep5yosV:0000000000000000000000000000000000000003qCn X-Hashcash: 1:20:150401:rientjes@google.com::GVHGGq3rNr4/QfTu:0000000000000000000000000000000000000000003UJz X-Hashcash: 1:20:150401:linux-kernel@vger.kernel.org::nktSi3cbYql5hbWY:0000000000000000000000000000000004S7o X-Hashcash: 1:20:150401:akpm@linux-foundation.org::fqkwbEGUJF0rNM4v:0000000000000000000000000000000000005gFc X-Hashcash: 1:20:150401:sasha.levin@oracle.com::ztm9h25TCbv37ulQ:0000000000000000000000000000000000000006ji8 X-Hashcash: 1:20:150401:vbabka@suse.cz::GeHB3rlm6Sy5wDt2:000Folr X-Hashcash: 1:20:150401:linux-mm@kvack.org::JOfTJCKs2QdP3OiR:0000000000000000000000000000000000000000000H+Td Date: Wed, 01 Apr 2015 14:48:13 +0200 In-Reply-To: <1427839895-16434-2-git-send-email-sasha.levin@oracle.com> (Sasha Levin's message of "Tue, 31 Mar 2015 18:11:33 -0400") Message-ID: <87wq1w10c2.fsf@rasmusvillemoes.dk> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Apr 01 2015, Sasha Levin wrote: > Rather than calling free_hot_cold_page() for every page, batch them up in a > list and pass them on to free_hot_cold_page_list(). This will let us defer > them to a workqueue. > > Signed-off-by: Sasha Levin > --- > mm/page_alloc.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index 812ca75..e58e795 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -2997,12 +2997,16 @@ EXPORT_SYMBOL(get_zeroed_page); > > void __free_pages(struct page *page, unsigned int order) > { > + LIST_HEAD(hot_cold_pages); > + > if (put_page_testzero(page)) { > if (order == 0) > - free_hot_cold_page(page, false); > + list_add(&page->lru, &hot_cold_pages); > else > __free_pages_ok(page, order); > } > + > + free_hot_cold_page_list(&hot_cold_pages, false); Is there a reason to do this function call when the list is empty? In other words, why can't this just be done inside the if (order == 0)? Rasmus