From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1762410AbdJRIGq (ORCPT ); Wed, 18 Oct 2017 04:06:46 -0400 Received: from outbound-smtp13.blacknight.com ([46.22.139.230]:44885 "EHLO outbound-smtp13.blacknight.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757619AbdJRIGg (ORCPT ); Wed, 18 Oct 2017 04:06:36 -0400 Date: Wed, 18 Oct 2017 09:06:31 +0100 From: Mel Gorman To: Vlastimil Babka Cc: Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Johannes Weiner , Michal Hocko Subject: Re: [PATCH] mm, page_alloc: simplify hot/cold page handling in rmqueue_bulk() Message-ID: <20171018080631.7ebimdlwek4inits@techsingularity.net> References: <20171018073528.30982-1-vbabka@suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline In-Reply-To: <20171018073528.30982-1-vbabka@suse.cz> User-Agent: NeoMutt/20170421 (1.8.2) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Oct 18, 2017 at 09:35:28AM +0200, Vlastimil Babka wrote: > The rmqueue_bulk() function fills an empty pcplist with pages from the free > list. It tries to preserve increasing order by pfn to the caller, because it > leads to better performance with some I/O controllers, as explained in > e084b2d95e48 ("page-allocator: preserve PFN ordering when __GFP_COLD is set"). > For callers requesting cold pages, which are obtained from the tail of > pcplists, it means the pcplist has to be filled in reverse order from the free > lists (the hot/cold property only applies when pages are recycled on the > pcplists, not when refilled from free lists). > > The related comment in rmqueue_bulk() wasn't clear to me without reading the > log of the commit mentioned above, so try to clarify it. > > The code for filling the pcplists in order determined by the cold flag also > seems unnecessarily hard to follow. It's sufficient to either use list_add() > or list_add_tail(), but the current code also updates the list head pointer > in each step to the last added page, which then counterintuitively requires > to switch the usage of list_add() and list_add_tail() to achieve the desired > order, with no apparent benefit. This patch simplifies the code. > > Signed-off-by: Vlastimil Babka The "cold" treatment is dubious because almost everything that frees considers the page "hot" which limits the usefulness of hot/cold in the allocator. While I do not see a problem with your patch as such, please take a look at "mm: Remove __GFP_COLD" in particular. The last 4 patches in that series make a number of observations on how "cold" is treated in the allocator. -- Mel Gorman SUSE Labs