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 <vbabka@xxxxxxx> 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 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>