From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754641AbdCJHaF (ORCPT ); Fri, 10 Mar 2017 02:30:05 -0500 Received: from mx2.suse.de ([195.135.220.15]:48074 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750927AbdCJHaE (ORCPT ); Fri, 10 Mar 2017 02:30:04 -0500 Subject: Re: [RFC] mm/compaction: ignore block suitable after check large free page To: Yisheng Xie , akpm@linux-foundation.org, mhocko@suse.com, mgorman@techsingularity.net, iamjoonsoo.kim@lge.com, rientjes@google.com, minchan@kernel.org References: <1489119648-59583-1-git-send-email-xieyisheng1@huawei.com> Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, guohanjun@huawei.com, qiuxishi@huawei.com, liubo95@huawei.com From: Vlastimil Babka Message-ID: Date: Fri, 10 Mar 2017 08:30:00 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.1 MIME-Version: 1.0 In-Reply-To: <1489119648-59583-1-git-send-email-xieyisheng1@huawei.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 03/10/2017 05:20 AM, Yisheng Xie wrote: > If the migrate target is a large free page and we ignore suitable, > it may not good for defrag. So move the ignore block suitable after > check large free page. Right. But in practice I expect close to no impact, because direct compaction shouldn't have to be called if there's a >=pageblock_order page already available. > Signed-off-by: Yisheng Xie > --- > mm/compaction.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/mm/compaction.c b/mm/compaction.c > index 0fdfde0..4bf2a5d 100644 > --- a/mm/compaction.c > +++ b/mm/compaction.c > @@ -991,9 +991,6 @@ static bool too_many_isolated(struct zone *zone) > static bool suitable_migration_target(struct compact_control *cc, > struct page *page) > { > - if (cc->ignore_block_suitable) > - return true; > - > /* If the page is a large free page, then disallow migration */ > if (PageBuddy(page)) { > /* > @@ -1005,6 +1002,9 @@ static bool suitable_migration_target(struct compact_control *cc, > return false; > } > > + if (cc->ignore_block_suitable) > + return true; > + > /* If the block is MIGRATE_MOVABLE or MIGRATE_CMA, allow migration */ > if (migrate_async_suitable(get_pageblock_migratetype(page))) > return true; >