From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751599AbdBOQLo (ORCPT ); Wed, 15 Feb 2017 11:11:44 -0500 Received: from mx2.suse.de ([195.135.220.15]:35941 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751352AbdBOQLn (ORCPT ); Wed, 15 Feb 2017 11:11:43 -0500 Subject: Re: [PATCH v2 00/10] try to reduce fragmenting fallbacks To: Mel Gorman References: <20170210172343.30283-1-vbabka@suse.cz> <20170213110701.vb4e6zrwhwliwm7k@techsingularity.net> <37f46f4c-4006-a76a-bf0a-5a4e3b0d68e6@suse.cz> Cc: linux-mm@kvack.org, Johannes Weiner , Joonsoo Kim , David Rientjes , linux-kernel@vger.kernel.org, kernel-team@fb.com From: Vlastimil Babka Message-ID: Date: Wed, 15 Feb 2017 17:11:38 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: <37f46f4c-4006-a76a-bf0a-5a4e3b0d68e6@suse.cz> Content-Type: text/plain; charset=iso-8859-15 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 02/15/2017 03:29 PM, Vlastimil Babka wrote: > Results for patch 4 ("count movable pages when stealing from pageblock") > are really puzzling me, as it increases the number of fragmenting events > for reclaimable allocations, implicating "reclaimable placed with (i.e. > falling back to) unmovable" (which is not listed separately above, but > follows logically from "reclaimable placed with movable" not changing > that much). I really wonder why is that. The patch effectively only > changes the decision to change migratetype of a pageblock, it doesn't > affect the actual stealing decision (which is always true for > RECLAIMABLE anyway, see can_steal_fallback()). Moreover, since we can't > distinguish UNMOVABLE from RECLAIMABLE when counting, good_pages is 0 > and thus even the decision to change pageblock migratetype shouldn't be > changed by the patch for this case. I must recheck the implementation... Ah, there it is... not enough LISP - if (pages >= (1 << (pageblock_order-1)) || + /* Claim the whole block if over half of it is free or good type */ + if (free_pages + good_pages >= (1 << (pageblock_order-1)) ||