From patchwork Wed Feb 26 02:41:25 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: zhongjinji X-Patchwork-Id: 13991412 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 7D19BC021BE for ; Wed, 26 Feb 2025 02:41:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 13EA828000A; Tue, 25 Feb 2025 21:41:41 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 0C807280008; Tue, 25 Feb 2025 21:41:41 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EAA0028000A; Tue, 25 Feb 2025 21:41:40 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id C8CC2280008 for ; Tue, 25 Feb 2025 21:41:40 -0500 (EST) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 76D2C1607A5 for ; Wed, 26 Feb 2025 02:41:40 +0000 (UTC) X-FDA: 83160545160.22.A1AC9E8 Received: from mta21.hihonor.com (mta21.hihonor.com [81.70.160.142]) by imf05.hostedemail.com (Postfix) with ESMTP id C6F73100004 for ; Wed, 26 Feb 2025 02:41:37 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=honor.com; spf=pass (imf05.hostedemail.com: domain of zhongjinji@honor.com designates 81.70.160.142 as permitted sender) smtp.mailfrom=zhongjinji@honor.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740537698; a=rsa-sha256; cv=none; b=bt/FmWopnwpQ6/atgo5VbtLb3FRg4SJs+aRd+VE2XzJskV5SGQCAStF8vGfKrOJZYm7a4G KVMIHdnEZj805W7IKZ376VG1zNpx2xC/O8KzwMrkdZnkrIZ1VXhOrXDaRvQA4wyuZad4km 8bx19MpPz7h0vzGTWrfUhUpcj596TLU= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=honor.com; spf=pass (imf05.hostedemail.com: domain of zhongjinji@honor.com designates 81.70.160.142 as permitted sender) smtp.mailfrom=zhongjinji@honor.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740537698; 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:in-reply-to: references; bh=QczVaZLgLq+Dah1wxb/5T3ptkuYQChEmLD2hROnqFqc=; b=JvFhaL5eXkePwBCFJyLRXJLMLipXm2+2Vuh59W2lRncv+kPIKu8f5fq4fjARO7+aWMomy2 KnUkIcT9sY2PCfY74cE6FxaP0afrk6dOw8D0WXAJ+McHNPE/2SpBkuDwD5C/406gOcr5sq WBPYlBURCjCksRdK51McSAMJr7FhEvs= Received: from w012.hihonor.com (unknown [10.68.27.189]) by mta21.hihonor.com (SkyGuard) with ESMTPS id 4Z2dxb2qzKzYlxGh; Wed, 26 Feb 2025 10:40:35 +0800 (CST) Received: from a018.hihonor.com (10.68.17.250) by w012.hihonor.com (10.68.27.189) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Wed, 26 Feb 2025 10:41:32 +0800 Received: from localhost.localdomain (10.144.20.219) by a018.hihonor.com (10.68.17.250) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Wed, 26 Feb 2025 10:41:32 +0800 From: To: CC: , , , , , , , , Subject: [PATCH] mm/page_alloc: make the maximum number of highatomic pageblocks resizable Date: Wed, 26 Feb 2025 10:41:25 +0800 Message-ID: <20250226024126.3718-1-zhongjinji@honor.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 X-Originating-IP: [10.144.20.219] X-ClientProxiedBy: w002.hihonor.com (10.68.28.120) To a018.hihonor.com (10.68.17.250) X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: C6F73100004 X-Stat-Signature: 45rhje5ca9gecpf7ng7xaxyhqq1ipxs9 X-Rspam-User: X-HE-Tag: 1740537697-547645 X-HE-Meta: U2FsdGVkX1+ziuidW3oXnbzKsOCrfsSaemorSqt6yzNYZ0+cly4cLgX0XI4s0F5R/jMWRWJp4dh3wJzmlpicQFpZyKBpdjIePxhNKOJMjK4Fc7Mq1s8NPGMgbEdZCMAUfCZYiIl9o/ioamQgueGZ2MyXw3yq7INZ1XWeP7ehJx5ixRGC29MjZTz4Sa9fyCoteyHeNBtOcTNDo0+3nIWUPKZx0b4KtCMcGikMvL7dDGvK9+dBusH2gB5TH3rpxjVq3wOiwFPEnA9f0tcgGxhMWXnTcNamNWd3OkfANUyHm/j53k87WqRIZxOvqnff1busEYNwqb4wcjFOJDiRbetAXERANMVCCd9Q4jhuI3gYnrBa0fe8OlezNdDhLSBfd6Bb07glE0Xa5v1QE+vTpRsNdNdBHBUp6kuvjEsgfSUXQbx2/H4ZVRoeyKWWw8trfLKvQLQgpULjaMLUHYaQ9SEKh7GMjbVs2HFAJEsSkgCYA+jTJ5ZlZoMos6ENNynQY2kmx5LBtepZ4kl1p5e28ya8DB35ZUEzSjjCKH56o62/uX3m1Nl3Ljd/SdUzh7CpCgyIhv19R4ySqocKsVKrvpcQ0qf4ztwOxMAwK3BvP4gpMbZLyCXqWGR3JsGmkc1ZV+PcvO4om7oY0ph3CW3sfJVPWHSeqQ1jsPhrg4E0ilP7VPibl6BHmzMrp/c4kU3b5JC3pdEUG98t+wfTGl5cEOk5bwECxbJd2e1mVnclwxPWvFZvA8vyZ+op6JwSBPrWV2wOliQpVENgoSnnmsplHg9/TOOE1/5lRrp6rIfivJg9s0/johgZuGVcB9gmTBxmHPGcUvhuFUYtSdbpK9LYJEXBt4MJNCRqwEK3TFA8F+knmu6TOz3cRmo/1Yq2YV8q95TqF1cam4JC87a4rQeQB9kPnKUH05MlWJ8OZ1ESj4+W+XM/1stg1lJASRqZCMI6L1hzF1So5DLjHDtU7ifYI2C /Duwe5kl wUxOeIpJbk4pUBqJ/nX07s8xybA/mPEpge4zJ/CZF7ezqgaR3QLN8T52NOkawbZGX/fKXM5Ttffe+8D67BgVoA97rW6I22ypIyKEvNF6Xv1OFt0n+n/G+D6kJwh9AaLxhX8aVuQprfW20b7yqx/hk91+xmjy3k8htrGDE5eXiwdzFjp8DFGhVHpavMTw9cbfzWUZloSagxLBCyTxDOYVXXm9mjQ== 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: List-Subscribe: List-Unsubscribe: From: zhongjinji In the past, nr_reserved_highatomic was considered to be part of unusable_free when there was no ALLOC_RESERVES flag. To prevent unusable_free from being too large, it is reasonable to set a fixed maximum highatomic value. Even if the maximum number of highatomic pageblocks is set to be larger, unusable_free may not increase, since Yu Zhao provided the modification about nr_free_highatomic in https://lore.kernel.org/all/20241028182653.3420139-1-yuzhao@google.com/T/#u More highatomic pageblocks are beneficial for the successful allocation of high-order page, which is helpful in some devices. Therefore, use highatomic_reserve_ratio to adjust the maximum number of highatomic pageblocks. Signed-off-by: zhongjinji --- mm/page_alloc.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 579789600a3c..dbdce6a0f694 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -273,6 +273,7 @@ int min_free_kbytes = 1024; int user_min_free_kbytes = -1; static int watermark_boost_factor __read_mostly = 15000; static int watermark_scale_factor = 10; +static int highatomic_reserve_ratio = 10; /* movable_zone is the "real" zone pages in ZONE_MOVABLE are taken from */ int movable_zone; @@ -2046,7 +2047,8 @@ static void reserve_highatomic_pageblock(struct page *page, int order, */ if ((zone_managed_pages(zone) / 100) < pageblock_nr_pages) return; - max_managed = ALIGN((zone_managed_pages(zone) / 100), pageblock_nr_pages); + max_managed = ALIGN((zone_managed_pages(zone) * highatomic_reserve_ratio / 1000), + pageblock_nr_pages); if (zone->nr_reserved_highatomic >= max_managed) return; @@ -6199,6 +6201,13 @@ static const struct ctl_table page_alloc_sysctl_table[] = { .mode = 0644, .proc_handler = percpu_pagelist_high_fraction_sysctl_handler, .extra1 = SYSCTL_ZERO, + }, + .procname = "highatomic_reserve_ratio", + .data = &highatomic_reserve_ratio, + .maxlen = sizeof(highatomic_reserve_ratio), + .mode = 0644, + .proc_handler = proc_dointvec_minmax, + .extra1 = SYSCTL_ZERO, }, { .procname = "lowmem_reserve_ratio",