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 035FFEE49A0 for ; Tue, 22 Aug 2023 01:58:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 62D5E280009; Mon, 21 Aug 2023 21:58:09 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5DCF8940025; Mon, 21 Aug 2023 21:58:09 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 47D86280009; Mon, 21 Aug 2023 21:58:09 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 34F41940025 for ; Mon, 21 Aug 2023 21:58:09 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 999C3140193 for ; Tue, 22 Aug 2023 01:58:08 +0000 (UTC) X-FDA: 81150080256.30.E790F46 Received: from dggsgout11.his.huawei.com (unknown [45.249.212.51]) by imf28.hostedemail.com (Postfix) with ESMTP id BE177C0007 for ; Tue, 22 Aug 2023 01:58:04 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=none; spf=none (imf28.hostedemail.com: domain of shikemeng@huaweicloud.com has no SPF policy when checking 45.249.212.51) smtp.mailfrom=shikemeng@huaweicloud.com; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1692669485; a=rsa-sha256; cv=none; b=tMStdrRVI1EKmi6sij8Dj4w/7PRVMfBLae5ejv2EbK+43SmM3ZAqCOpdIz31bNhSY6geJN zcx/sDCGMXJAnGBZ8JbTBR90Ebfgyocc1Zo9Te1nf2B7c4DsAIo6awcrVisqckWnRVvKiT rz7Tv1nEfXlIfd9e6deOeYnNzy+C7v0= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=none; spf=none (imf28.hostedemail.com: domain of shikemeng@huaweicloud.com has no SPF policy when checking 45.249.212.51) smtp.mailfrom=shikemeng@huaweicloud.com; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1692669485; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pSeMKiKNwU+z6/lqf9kuOWRy9fYuqTtM1daYT3611Ug=; b=xPyP94hpl1aO+w1Pf3r7gjW22PY0z/ijXXAyBoxFhBY84DAH7zZX3HnY4vH1ImQC+2FWX8 u4qoUq79XSxCJjfs+yUdgRDfL6jSDA3gG9cslWiCuGOHfxNHThJVYAf3NUEy7DlgfWjNYU zlE1wvNGerjXj0nnUavS8YNTvKA8GAA= Received: from mail02.huawei.com (unknown [172.30.67.169]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4RVCD65m6tz4f3lCt for ; Tue, 22 Aug 2023 09:57:58 +0800 (CST) Received: from [10.174.178.129] (unknown [10.174.178.129]) by APP4 (Coremail) with SMTP id gCh0CgDnvaAnFuRkPEMkBQ--.36670S2; Tue, 22 Aug 2023 09:58:00 +0800 (CST) Subject: Re: [PATCH 7/9] mm/compaction: factor out code to test if we should run compaction for target order To: Baolin Wang , linux-mm@kvack.org, linux-kernel@vger.kernel.org, akpm@linux-foundation.org, mgorman@techsingularity.net, david@redhat.com References: <20230805110711.2975149-1-shikemeng@huaweicloud.com> <20230805110711.2975149-8-shikemeng@huaweicloud.com> <7b337eca-1c45-c802-0aea-50d8d149efb4@linux.alibaba.com> <631d62de-c9b5-3c5f-e0b3-df0109627a27@huaweicloud.com> <3aefc27b-f7b8-6832-964d-77a55ea304fc@linux.alibaba.com> From: Kemeng Shi Message-ID: Date: Tue, 22 Aug 2023 09:57:59 +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: <3aefc27b-f7b8-6832-964d-77a55ea304fc@linux.alibaba.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-CM-TRANSID:gCh0CgDnvaAnFuRkPEMkBQ--.36670S2 X-Coremail-Antispam: 1UD129KBjvJXoWxAw1ftr4rXr4rKw13Cr4kJFb_yoWrZrW7pF 18JFWUG3yrXr1fGr1xt3WUJFy3tw48J3WDXrn2qF17Jw4ayr1qgr1qqryq9r1UXr48Jr1U XF1UJF9rZF15AaDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUk0b4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4 vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_tr0E3s1l84ACjcxK6xIIjxv20xvEc7Cj xVAFwI0_Gr1j6F4UJwA2z4x0Y4vEx4A2jsIE14v26rxl6s0DM28EF7xvwVC2z280aVCY1x 0267AKxVW0oVCq3wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG 6I80ewAv7VC0I7IYx2IY67AKxVWUGVWUXwAv7VC2z280aVAFwI0_Jr0_Gr1lOx8S6xCaFV Cjc4AY6r1j6r4UM4x0Y48IcVAKI48JMxk0xIA0c2IEe2xFo4CEbIxvr21l42xK82IYc2Ij 64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4xG67AKxVWUJVWUGwC20s026x 8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r126r1DMIIYrxkI7VAKI48JMIIF0xvE 2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I0E14v26r4j6F4UMIIF0xvE42 xK8VAvwI8IcIk0rVWrJr0_WFyUJwCI42IY6I8E87Iv67AKxVWUJVW8JwCI42IY6I8E87Iv 6xkF7I0E14v26r4j6r4UJbIYCTnIWIevJa73UjIFyTuYvjxUrNtxDUUUU X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ X-CFilter-Loop: Reflected X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: BE177C0007 X-Stat-Signature: gwa1x64d6z8sg11o8hsmruqhubfqiegm X-HE-Tag: 1692669484-598364 X-HE-Meta: U2FsdGVkX1+uPeAtRhK7iNMBwi0G4jvWEZfQcj/M2v/sr3XOZhCSrIMFKgwDIig6WzlbkX8PRFfcezM2r88BGSGcTuxRZbkHIXmxBNw/4y+GSQJ4y3a1gRDY1OQuPj73+JhwtMfsppOpNIcWUQn+2D+MoUxtOXwQu3kojLmKQ1okYu7S4X90khHRY+KSW7N14bYM8bwgivvHfp33W+XmpvRZ8co896+g7tLF1LFwUiSE7UwncQUTUNGC2GEbyydsdC0oVLDIFKrvFmICoJ8bri7ivAYwSbcYNbacR0nwGR8Noxx0gamT5mDc7oA2RwpWTbg5Wfvrz1KM07xtgdBbr7xBu/gplPCK1moU77sK5ApLCldLM7joMrIYB+2X1nrTnfXdwiEvQntPGMgsXCNijoR87WkUQ2pS1sHpTWVof1b/I81ijRzM6Gxj8csink65LQfgj0liCJftENoIU34ZE7xc0ORz7/Q+P9MOuVr4EBgi/5CjxYf5cUAXuGDwnSupUT7s9N9idpwKHALqVTy4TP6KqsY+aRwDHWkKa0zo8XIi7IP8CIEW9LAF7+tCzK4Y6Whp67PidbtHPY2rNdhMfJ5EZNHbg6aFKWTEww1ejCkxfbzaqqwkgwoXU7vLYpA1+Rbu0MT2HHclv3MaV/knrjHwOjOJfcu80F5wj8Gtan1v+XaMxc3rwH2OJdeMt44fJm5Jll81W4t8GbV8JNcZ6xOG9GR961QWXenyuoJrdzSDbnLRlitgvuP350orTH4p3/XothTzswq8N+3gup8yE6VA+Rjx+diKyBwWWSLhwc0PuuEU0YGcbV+4r1vCKk346VpnN56PiAi1k+2m75u+pzHrQpizsy7Npf/zdV8mcl+kckhyc4iMLl7urQoqQK5DX+c+aSP5Y30libR/Y4730p89sN7pQv6CDA5TFJ6OKhYrmk7IpBpHqFmRIwspBmr457p6KfNpeHRDAnpR1RJ RatFJwne ePZ/lh5vn2RVopx0NlzfJOKuLhTu2Q5uo1WGhb3YHkci9UsOLzPGDXt2tRjFlt4fM3j61DjYINGxJg69gHYentUzGly8UTWSHUqi+Xx009ntfiSrU9J+dL3wbeY8XeTyz8ge73nL21vAz16QAOyQRc4yNnSYvGsJ2T2fQ1lMPAwLFOko+H5VMfNe94IQCFEPEGmU2tMUDqsRP+VbYrz1usM6mQcN7aYhjqChZzF1GSEr1pe/TgDeBtBGHTmgGcCErX7ZH7Aer9C5ibg36IZOaN8XVdCbslK1vZCSHcXMRVrhfOdXSHm4qu+2tLQ== 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/19/2023 8:27 PM, Baolin Wang wrote: > > > On 8/15/2023 8:10 PM, Kemeng Shi wrote: >> >> >> on 8/15/2023 4:53 PM, Baolin Wang wrote: >>> >>> >>> On 8/5/2023 7:07 PM, Kemeng Shi wrote: >>>> We always do zone_watermark_ok check and compaction_suitable check >>>> together to test if compaction for target order should be runned. >>>> Factor these code out for preparation to remove repeat code. >>>> >>>> Signed-off-by: Kemeng Shi >>>> --- >>>>    mm/compaction.c | 42 +++++++++++++++++++++++++++++------------- >>>>    1 file changed, 29 insertions(+), 13 deletions(-) >>>> >>>> diff --git a/mm/compaction.c b/mm/compaction.c >>>> index b5a699ed526b..26787ebb0297 100644 >>>> --- a/mm/compaction.c >>>> +++ b/mm/compaction.c >>>> @@ -2365,6 +2365,30 @@ bool compaction_zonelist_suitable(struct alloc_context *ac, int order, >>>>        return false; >>>>    } >>>>    +/* >>>> + * Should we do compaction for target allocation order. >>>> + * Return COMPACT_SUCCESS if allocation for target order can be already >>>> + * satisfied >>>> + * Return COMPACT_SKIPPED if compaction for target order is likely to fail >>>> + * Return COMPACT_CONTINUE if compaction for target order should be runned >>>> + */ >>>> +static inline enum compact_result >>>> +compaction_suit_allocation_order(struct zone *zone, unsigned int order, >>>> +                 int highest_zoneidx, unsigned int alloc_flags) >>>> +{ >>>> +    unsigned long watermark; >>>> + >>>> +    watermark = wmark_pages(zone, alloc_flags & ALLOC_WMARK_MASK); >>> >>> IIUC, the watermark used in patch 8 and patch 9 is different, right? Have you measured the impact of modifying this watermark? >>> >> Actually, there is no functional change intended. Consider wmark_pages with >> alloc_flags = 0 is equivalent to min_wmark_pages, patch 8 and patch 9 still >> use original watermark. > > Can you use ALLOC_WMARK_MIN macro to make it more clear? Sorry, I can't quite follow this. The watermark should differ with different alloc_flags instead of WMARK_MIN hard-coded. Patch 8 and patch 9 use watermark with WMARK_MIN as they get alloc_flags = 0. > > And I think patch 8 and patch 9 should be squashed into patch 7 to convert all at once. Sure, i could do this in next version. > >>>> +    if (zone_watermark_ok(zone, order, watermark, highest_zoneidx, >>>> +                  alloc_flags)) >>>> +        return COMPACT_SUCCESS; >>>> + >>>> +    if (!compaction_suitable(zone, order, highest_zoneidx)) >>>> +        return COMPACT_SKIPPED; >>>> + >>>> +    return COMPACT_CONTINUE; >>>> +} >>>> + >>>>    static enum compact_result >>>>    compact_zone(struct compact_control *cc, struct capture_control *capc) >>>>    { >>>> @@ -2390,19 +2414,11 @@ compact_zone(struct compact_control *cc, struct capture_control *capc) >>>>        cc->migratetype = gfp_migratetype(cc->gfp_mask); >>>>          if (compaction_with_allocation_order(cc->order)) { >>>> -        unsigned long watermark; >>>> - >>>> -        /* Allocation can already succeed, nothing to do */ >>>> -        watermark = wmark_pages(cc->zone, >>>> -                    cc->alloc_flags & ALLOC_WMARK_MASK); >>>> -        if (zone_watermark_ok(cc->zone, cc->order, watermark, >>>> -                      cc->highest_zoneidx, cc->alloc_flags)) >>>> -            return COMPACT_SUCCESS; >>>> - >>>> -        /* Compaction is likely to fail */ >>>> -        if (!compaction_suitable(cc->zone, cc->order, >>>> -                     cc->highest_zoneidx)) >>>> -            return COMPACT_SKIPPED; >>>> +        ret = compaction_suit_allocation_order(cc->zone, cc->order, >>>> +                               cc->highest_zoneidx, >>>> +                               cc->alloc_flags); >>>> +        if (ret != COMPACT_CONTINUE) >>>> +            return ret; >>>>        } >>>>          /* >>> >>> > >