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 E9AB0C27C40 for ; Thu, 24 Aug 2023 02:25:18 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 39881280056; Wed, 23 Aug 2023 22:25:18 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 348C3280033; Wed, 23 Aug 2023 22:25:18 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 237EE280056; Wed, 23 Aug 2023 22:25:18 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 15DB9280033 for ; Wed, 23 Aug 2023 22:25:18 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id DF6EF1A019C for ; Thu, 24 Aug 2023 02:25:17 +0000 (UTC) X-FDA: 81157406274.26.A42F224 Received: from out30-111.freemail.mail.aliyun.com (out30-111.freemail.mail.aliyun.com [115.124.30.111]) by imf29.hostedemail.com (Postfix) with ESMTP id 56D16120016 for ; Thu, 24 Aug 2023 02:25:13 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=alibaba.com; spf=pass (imf29.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.111 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1692843916; a=rsa-sha256; cv=none; b=moHib+2Mj3wkB8St9IqN2Y0299/pLk1jn+zbfQfRt+g+TdQxc7QdxDuwFJZPdOHEYZ1Gei 45bw223/JhHKBE1EJiIKZt2z7qBdWXcIGlzSFSa/7p5SKG2VK2RRdj6KcRS8hH9uBWCnzt cRhUSUYWF+3RTZ7Z1tUw1+oWMKaepGg= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=alibaba.com; spf=pass (imf29.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.111 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1692843916; 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=xQZ65W5n1TzZtdaeTkbuwkJjGjZx5mXrbhiZHBnvdG4=; b=8mCOlcVENw84sctZcDkK0bpV4s9wHgIlvYfDfoBh4U8pLh+Qg+buU/PAq4NCbi0MgA9mJ6 BMyy1B1VC9aHl5WOF7b30qKWlAGSg9KuiJDMRnFrkANbqjT6bR5uWMT2hIv8YCRB1PikPk pj3BjxwK0qQE6wJNKFHXI0WVhEL07KM= X-Alimail-AntiSpam:AC=PASS;BC=-1|-1;BR=01201311R131e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018046060;MF=baolin.wang@linux.alibaba.com;NM=1;PH=DS;RN=6;SR=0;TI=SMTPD_---0VqS2MR7_1692843902; Received: from 30.97.48.68(mailfrom:baolin.wang@linux.alibaba.com fp:SMTPD_---0VqS2MR7_1692843902) by smtp.aliyun-inc.com; Thu, 24 Aug 2023 10:25:02 +0800 Message-ID: <7a309d46-4fbc-f86e-5f21-b77660e84ff5@linux.alibaba.com> Date: Thu, 24 Aug 2023 10:25:04 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.14.0 Subject: Re: [PATCH 7/9] mm/compaction: factor out code to test if we should run compaction for target order To: Kemeng Shi , 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: Baolin Wang In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 56D16120016 X-Stat-Signature: ssgrxpwyc59x8s6e384nq9p8o4ch1h1w X-Rspam-User: X-HE-Tag: 1692843913-938417 X-HE-Meta: U2FsdGVkX1+oS+VkX5iHltdxMs7mVzMUc9U7st3SFzVehPgI20bCBD1sU94bTgoeTkAMa8usI6yZtU+oSqmEnJlDH+ZKMHRuIdeVOz180aCUdf+H/oWeX1xEN/MUbJXzGCuBU5Q9CH6BgWFoKsOwReTG3bPJnPq2PENjEKmp4OVWu6igla7sG6IJvUZ/891jM/j19z41ACP+eRm7lW6n3mJ+zCnVh59W+74/gprOeo/JYxR0Wf01SB3ZvaRQ7WNQa4gBn1ipqDMoQd/aUfCF2bxyETF11kB8CnhVZnMdYCfpcH6rFjpmt4ucsIwz/QfIC8bFN+eKIV+3psocnxLxHgA44lplcB2s/zaPSIDy2SuMdogFWJB8eGL25n/hGbkZ68m+GTNLq88clSmn7qsQDJFYR+mxQjnmVF7wvOulKDWMCwdj6nuA91SjUeZQqt7t/UqxmhWDE9vLrkfnTN4hxKBId0pMkk5cmaTgxljFXNVHTSfE6azD+BGUW/cDBnXHcALpVWKZnP6leDfuPrAKN0gWWzv3Ycc/H+bioY3iXRWWkkD+th4ThRMJ01m/s2kOdTAZYbudg/uEBNK8EPa2+rhD/QvXMCc/o5DlG83IFFpzlrO+ZhkDkbozUH31LSd3KTW/03Ss+F/JWJq5buNy9OiVij/w4KGagFPuQOFmpcbl3/KXQNBAfTKu54PgsffjjAokvfMBzSuSqpPDFFliwbjNKksChcRYyrZ7n5VIWtlgzoqiZliPDuURtHHfzjGQAHvQ1OmKoxrHRfA0D0NkOTIf0dua3k+olKxyMTYsAn6Y6QE2MusDY6ZPFH0xrT3GbT/fMXXedL2E0yNp3mm7Yv+Ik7So+62+mX2uCgvpXshSU3OHYunJ8okzeSRdoF0lqvHc1ux9Nj2A1UT1xADT/Z98lWsMvpl/doXZCJLNyRwatwavYOMufnjxBKyADpe1QMLdX2lQDcHOrZYBNlL v9MiRvRc tUzj+7rP4jFwqfYjUX9rvPrPNkCtkcapLH/1IeamsYeWVISmz/K/lFspNMtBZjHGUmZZWRajljXTG2zcyyO0uMY2ybgNYx84F0KjQ66apvaBWPzB7G/joWxUNuN0onYrqD6YfC2M1a1gGPJPOLbAvPubSlcsG+s5t6WXrKfJrQxyU7Hg= 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/22/2023 9:57 AM, Kemeng Shi wrote: > > > 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. I mean you can pass 'alloc_flags=ALLOC_WMARK_MIN' instead of a magic number 0 when calling compaction_suit_allocation_order() in patch 8 and patch 9. >> 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; >>>>>        } >>>>>          /* >>>> >>>> >> >>