From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 271F6C001DF for ; Wed, 2 Aug 2023 06:02:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9F0FE28012B; Wed, 2 Aug 2023 02:02:01 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9799F280112; Wed, 2 Aug 2023 02:02:01 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8684128012B; Wed, 2 Aug 2023 02:02:01 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 7518B280112 for ; Wed, 2 Aug 2023 02:02:01 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 425541A06C4 for ; Wed, 2 Aug 2023 06:02:01 +0000 (UTC) X-FDA: 81078118842.26.1AB8953 Received: from dggsgout11.his.huawei.com (unknown [45.249.212.51]) by imf14.hostedemail.com (Postfix) with ESMTP id 1BC1A100005 for ; Wed, 2 Aug 2023 06:01:56 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=none; dmarc=none; spf=none (imf14.hostedemail.com: domain of shikemeng@huaweicloud.com has no SPF policy when checking 45.249.212.51) smtp.mailfrom=shikemeng@huaweicloud.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1690956118; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=XwA27gQQFuBSoYbwWNexg+OPM1rkP4hOgLkX0Xo6ZwM=; b=y1gPEYnlKK5NU91zT9HUlAkCKtGDaljRG45o0H/R8HEPqrEg24Y+xIpYhR47B6PNQeKlcO rTqF75ptSJ9SE6n9BEMbxZY+HpteWNPg6OoIzmFjaE1evm8HUgz3jd3yXoaeyy9DO9u02c 1Vxx5vIFE1hpeDL4m5GKILjKnevTk0M= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=none; dmarc=none; spf=none (imf14.hostedemail.com: domain of shikemeng@huaweicloud.com has no SPF policy when checking 45.249.212.51) smtp.mailfrom=shikemeng@huaweicloud.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690956118; a=rsa-sha256; cv=none; b=nR9X5NLCuMPAzRznisl0LWBqmIaJwwOA6Fn7dAbnAAkpqGkn2S8a7wWM+5y1uos3FsF/kA FL4SAjLqe0q3f8vPOuDKZ/6Z4NbEgg0E3mcg+qBB8+mrFKh0AXh7fZLE46LzquJQ11KI9h J+pyEltTr8M1b27IP3hb8Rkwg/LxtNU= Received: from mail02.huawei.com (unknown [172.30.67.153]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4RG1Zh3gFKz4f3nZw for ; Wed, 2 Aug 2023 14:01:48 +0800 (CST) Received: from [10.174.178.129] (unknown [10.174.178.129]) by APP1 (Coremail) with SMTP id cCh0CgAnuDJM8clkTZVLOg--.36803S2; Wed, 02 Aug 2023 14:01:49 +0800 (CST) Subject: Re: [PATCH 1/5] mm/compaction: allow blockpfn outside of pageblock for high order buddy page To: Baolin Wang , linux-mm@kvack.org, linux-kernel@vger.kernel.org, akpm@linux-foundation.org Cc: mgorman@techsingularity.net, willy@infradead.org, david@redhat.com References: <20230729174354.2239980-1-shikemeng@huaweicloud.com> <20230729174354.2239980-2-shikemeng@huaweicloud.com> From: Kemeng Shi Message-ID: Date: Wed, 2 Aug 2023 14:01:47 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.5.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-CM-TRANSID:cCh0CgAnuDJM8clkTZVLOg--.36803S2 X-Coremail-Antispam: 1UD129KBjvJXoWxAryDWw48ur4kGry3Zw18Zrb_yoW5ZrWkpa 4ktFy7GryDCa9YqF17Jr4kZFyUJw4kJ3WUJr4rtFyUZF90qF12gr12vr1q9ryjqr4xAryq qr4qgF97uFsrZaDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUyEb4IE77IF4wAFF20E14v26r4j6ryUM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4 vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Xr0_Ar1l84ACjcxK6xIIjxv20xvEc7Cj xVAFwI0_Cr0_Gr1UM28EF7xvwVC2z280aVAFwI0_GcCE3s1l84ACjcxK6I8E87Iv6xkF7I 0E14v26rxl6s0DM2AIxVAIcxkEcVAq07x20xvEncxIr21l5I8CrVACY4xI64kE6c02F40E x7xfMcIj6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv67AKxVWUJVW8JwAm72CE4IkC6x 0Yz7v_Jr0_Gr1lF7xvr2IY64vIr41lc7I2V7IY0VAS07AlzVAYIcxG8wCF04k20xvY0x0E wIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E74 80Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_JF0_Jw1lIxkGc2Ij64vIr41lIxAIcVC0 I7IYx2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Jr0_Gr1lIxAIcVCF04 k26cxKx2IYs7xG6rW3Jr0E3s1lIxAIcVC2z280aVAFwI0_Gr0_Cr1lIxAIcVC2z280aVCY 1x0267AKxVW8JVW8JrUvcSsGvfC2KfnxnUUI43ZEXa7IU1zuWJUUUUU== X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ X-CFilter-Loop: Reflected X-Rspamd-Queue-Id: 1BC1A100005 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: c1yq9nkrtj6gowekfchzwg9m5ggrpo35 X-HE-Tag: 1690956116-373505 X-HE-Meta: U2FsdGVkX18k7ySI06wlV9N3g3i7ABxnJn7e+h80s8uRKtkLss/cmrn/wOxDeVYFBHXbVIvY+Vf6mVU4RSQMegaeDofCqJz9xuvCYm2SkGLN4h6x3ZxZhAP6wwCn1V2bNaBpERPFvXlfzxIoqNkBYZKT4FOsaRbAWgXjnRdB3DUcb7teeI88pNnJohHcPP55G4g6WYa05ApBGCWb9YwNS3m9IDdNXoxMl/aU6Sr/NJHgRIvQ71YCbAtb0V/20J0ly0uRQaVvJ7f3MNNZYAs4GnJlXP3Xd2F4dKABndzWWMfZUakkixO6BE9+Ptw1u+q8o3ETOgiSGrhK2yZqryhFAm1DLuQ4M7eZVwJluXNBEEQyjJfPkLoCAVmo9ZdFBzQxB8Lvh6lVrLd6yKQ3/wgud1aQxfQRm5qgtI9Vlo4yzshEFBeFU1yP94yb1K8FvTQ04eDlrKbFyG3vFWkVugMFqKvKKPH6Ek8IfrSBFTOgWqoGAJ37q5t91A1jWaPNrFisL/kGG6VSYXAJfDUD2lIPsrttZtHEPAPVfZTyvDqo2U27FNe+OquoyxGmTaYYkH3Jr4qEPx2MMdgFGcIjP7PfQO9FcqDNcg0vcJHCklNIjbUGx+k9OuZR/4hX12K+Oje73Z+yHCZwNP3pNQiW8pGs0h19Ho2wT/LkCVe7GVoHZ6x3pqBkQ2+JlEcn1+X35x3FiN56eRTNL4QzUMbSj17KvcU3sNSKSlAf0FWkdp1pgUmBYq/NohVgXvLmEvAlYAMPFLe25Pd/Na+gyeWJyJW3QHRNJiblJVWcUhPkgKmq80OPcus2ABT5Pc/x5WVS5+RUmCtdQ8k8kgkPdyHpm0CDE/JJCTgX/6j0alyjB+ht+6JYBlYBJKjy0VuR0+Vz67NokQilbADaRtbNvTEzZbzAzqouOqMt2kca64FqcZO8Ph9YA8t4N3/E/IWG9jX3XjGVE4rMUZZwIWrQHc4rtFO jpvS/E1O uazyF/BClsVPu8SMEHM3Q3D9AlxEyluwplCD1azxblUkBnwsGLl36WYBOkplXJ1dVaUmCgrO4QMx268QIicAXCCDraqRAgMyUSOUgsYwnH59npWXAbphNhU9cvh/to42LKKtlnmPDwidyURgtfaJA6Hm6i2x/jPHFVOZyAFfE12KsQx6hErHlwz8NRFERGwR12vxQWNmsJsrrcwnob2Q8k1TOfn+PZy45hcxCzhWzn3RrODNR0XHXey/0SA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: on 8/2/2023 9:57 AM, Baolin Wang wrote: > > > On 7/30/2023 1:43 AM, Kemeng Shi wrote: >> Commit 9fcd6d2e052ee ("mm, compaction: skip compound pages by order in >> free scanner") skiped compound pages to save iterations and limit blockpfn >> to reach outside of page block in case of bogus compound_order. While this >> also limit pfnblock outside page block in case a buddy page with order >> higher than page block is found. After this, isolate_freepages_range will >> fail unexpectedly as it will fail to isolate the page block which was >> isolated successfully by high order buddy page in previous page block >> and abort the free page isolation. > > Not sure I uderstand the problem, why the isolate_freepages_range() will fail? In isolate_freepages_range(), it did not use the 'blockpfn' cursor to try next candidate pfn, instead using the 'isolated' to calculate next cursor. Or I missed something else? > Ah, my bad. I will drop this in next version. >> Fix this by allow blockpfn outside of pageblock in case of high order >> buddy page. >> >> Fixes: 9fcd6d2e052ee ("mm, compaction: skip compound pages by order in free scanner") >> Signed-off-by: Kemeng Shi >> --- >>   mm/compaction.c | 8 +++++--- >>   1 file changed, 5 insertions(+), 3 deletions(-) >> >> diff --git a/mm/compaction.c b/mm/compaction.c >> index 6841c0496223..d1d28d57e5bd 100644 >> --- a/mm/compaction.c >> +++ b/mm/compaction.c >> @@ -681,8 +681,10 @@ static unsigned long isolate_freepages_block(struct compact_control *cc, >>       /* >>        * There is a tiny chance that we have read bogus compound_order(), >>        * so be careful to not go outside of the pageblock. >> +     * Allow blockpfn outside pageblock in normal case that we isolate >> +     * buddy page with order more than pageblock order. >>        */ >> -    if (unlikely(blockpfn > end_pfn)) >> +    if (unlikely(blockpfn > end_pfn) && total_isolated <= pageblock_nr_pages) >>           blockpfn = end_pfn; >>         trace_mm_compaction_isolate_freepages(*start_pfn, blockpfn, >> @@ -1418,7 +1420,7 @@ fast_isolate_around(struct compact_control *cc, unsigned long pfn) >>       isolate_freepages_block(cc, &start_pfn, end_pfn, &cc->freepages, 1, false); >>         /* Skip this pageblock in the future as it's full or nearly full */ >> -    if (start_pfn == end_pfn && !cc->no_set_skip_hint) >> +    if (start_pfn >= end_pfn && !cc->no_set_skip_hint) >>           set_pageblock_skip(page); >>   } >>   @@ -1687,7 +1689,7 @@ static void isolate_freepages(struct compact_control *cc) >>                       block_end_pfn, freelist, stride, false); >>             /* Update the skip hint if the full pageblock was scanned */ >> -        if (isolate_start_pfn == block_end_pfn) >> +        if (isolate_start_pfn >= block_end_pfn) >>               update_pageblock_skip(cc, page, block_start_pfn); >>             /* Are enough freepages isolated? */ >