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 5EE0BEE49A5 for ; Sat, 19 Aug 2023 12:28:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A2FBB900007; Sat, 19 Aug 2023 08:28:03 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9BA6D900004; Sat, 19 Aug 2023 08:28:03 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 82CAE900007; Sat, 19 Aug 2023 08:28:03 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 6E25D900004 for ; Sat, 19 Aug 2023 08:28:03 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 429BB1C94E5 for ; Sat, 19 Aug 2023 12:28:03 +0000 (UTC) X-FDA: 81140781246.19.0CD4758 Received: from out30-118.freemail.mail.aliyun.com (out30-118.freemail.mail.aliyun.com [115.124.30.118]) by imf11.hostedemail.com (Postfix) with ESMTP id CE74E4000F for ; Sat, 19 Aug 2023 12:27:59 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=alibaba.com; spf=pass (imf11.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.118 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=1692448081; 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=24GYaU9KyqVb6AlbZW+AxCPpEjfF8ugToz8fT9KhKKI=; b=fq794j7+c7HP6DYS7Pks8AwrW+Sz73pQd1qOuKMn0TGVihqAp2hmgOF9tx37V4z25f7TNF 20zJu6p2eNOFnuMWC+7exA2HCHz2vo/fMRc+iW5V56rvz6JX2JMH6/xu1a4++j7dKmKEfL MyNVvFU4tx+VJVTWmSTYciM4B3TQoas= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=alibaba.com; spf=pass (imf11.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.118 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1692448081; a=rsa-sha256; cv=none; b=VJ7CWycDwzkgJB4ejvzm6VbfC2Qg5QYdIHIvYRdHQARXnM45bzi5qJqWSH8iV/waV9Xomi tBif4b23nwRTZSfLyroLWstpeXPtEZ3B7QgUBXXjVX4Q3x80X/FjFCOttCvzd/boxofLnm 6q4n5Kla8WqxJDTUQFRASxtUj1EuoI0= X-Alimail-AntiSpam:AC=PASS;BC=-1|-1;BR=01201311R881e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018046059;MF=baolin.wang@linux.alibaba.com;NM=1;PH=DS;RN=6;SR=0;TI=SMTPD_---0Vq5KVnt_1692448074; Received: from 30.97.48.38(mailfrom:baolin.wang@linux.alibaba.com fp:SMTPD_---0Vq5KVnt_1692448074) by smtp.aliyun-inc.com; Sat, 19 Aug 2023 20:27:55 +0800 Message-ID: <3aefc27b-f7b8-6832-964d-77a55ea304fc@linux.alibaba.com> Date: Sat, 19 Aug 2023 20:27:54 +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> From: Baolin Wang In-Reply-To: <631d62de-c9b5-3c5f-e0b3-df0109627a27@huaweicloud.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: CE74E4000F X-Stat-Signature: cyjcx76nrsc6dro4azbryteuu9rm5yp4 X-HE-Tag: 1692448079-858980 X-HE-Meta: U2FsdGVkX1/qd+sx5YYHwgn0gcCIM7CMhGYy6qDJEo3gW9UANxV8iFDTYNUeSmp11+ws6FmwBTGaE/5PLyIRLOQfwG5aaRui5owTzz3a8TruLXbBTG8MjLC0FaKgUAFTJ+9f4eSN8F12StjAswgG1gKLrCWYyl3G8Meu3yOsXsWLMYzL+IVJyqty8kqJU5X+f9ChfWR24AQDgpcnwsVDgM3ZbOvUe4bYvI8TGwwxQ0pL/pRAKe/IB+wraIWT6mdSBshJ0+xDosbc508oDNeUCjW6kkjEj6l536tJRnWUJZkgXHPgENe9bujBdXrmABn/AcaxmPpOD9vNVbUowFqQSop4blzPP9yEO3n4+KF0tddc/YtGAh+Y4HsDiiGt7rgU99vCDHdIMyCVz7SaOakHPXj15HbHIhZ6/dW93iSJXCx/gDvC4i3U9xHPEidLEIniQKudKwf1NhK3tlDRzPIddqNU7+C0ro1LJdqA2U7RBFYcfgaPjsmiY7Trirw2me3bzhl4y1+wz6xbyehSOI3N/ePlQpMYXZkvpmJAX6j3RAiawNhbKPJEUKinYbwMb98lCj9Vy7j00Tp1WWlxc3RKiCBwSbo9xjbkUe7Dp4ZXjVHsKecuLqHuruwgU2p6SdYP+mnwFDHfvxjMvkVtsHrJhWJl/Rp9WGdJRSoIBoiM8aASly8AJL0huesMpQvghAsMJKdAkyQgdTCfqLkj01EjfkY61pUvLrVF6j6fnKiNDoKBumCklPyXk/yJPZuY+YLRPKiDmKeyBcIQuvWTpo4UVk54JbgaaiXwZCwMMMrtHyyvDnLXfyc7pDkRiX6A1k/C1z8x3meV7VgK0iUebU69QjsDW4sE1XWDLjq0FZwTCVS3bc9sS1cH+O5b1BQMaeQHHYWOCkYw5JqvX/cIZxiAtH6lYeUoc2ARRLVrLzdYjq82BozEFRuC+k15/WUKWVCkr/4xRQFL67eX0nvd2wd cxvDVzy/ VfOPA6PfE9lA+hT23ioyanPZxTPOsW6AWmQ2M3FzKLnjaNKqDEOD3nftlN3CYmqELldUY92czTzAUb33WHqpYpuTpzUgtCV8jBZjqjzg77NWgV5eM1S3tTbXsiCJq9dxla3JhRICc9CvdRLKUMCQNpsPCRqPGk7ys0IQfcCEhQJcnxWY= 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/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? And I think patch 8 and patch 9 should be squashed into patch 7 to convert all at once. >>> +    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; >>>       } >>>         /* >> >>