From nobody Sat Sep 26 14:37:53 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E868C368D7F; Mon, 31 Aug 2026 14:47:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788187663; cv=none; b=FMQFnNSglfSbUy8d7S4K1kQRi1NGqoJBt97bXSL43QPnZrAj4TXVm0rF4iPbz2nGndsROQX32VEfSJxLgqi5gFhuy14xWQzOYfbuCntkaUFrjhdvlCQgQQi6GaTFBimABH2XNOMECCQ/in4Gf5e8gQYGpRQpA9VEAE8z08R18UY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788187663; c=relaxed/simple; bh=kEAyNHXTwDod8NgXdlV0AcwVMl/JMrysTsxpbtY9aCw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=thzlgH3BmkVnQMSfG7hkFUwkUHBjU0jhaQRijp8s/99GV9oFQmr8YhKd9++/ZQ7XLKOI1sM/7LG5YzHBFfed1s56lr2Tgu3cvFJB1H5eZ66bu3aRFVN8HC2w6JYI5QOZDtDMBw7vpKqRf2FWImpsgDX7ZXuA2IO36X5o1+16rek= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ayKS20LB; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ayKS20LB" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9BCA11F00A3D; Mon, 31 Aug 2026 14:47:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1788187661; bh=y7QxbQi+gC20oHgrgxjKQCFyg8T7bvReTsftzDUfUgA=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=ayKS20LBXIFl8eNB8eN8Ldo+Xx6A76IS7z/PhNTKyHRafXBFPrVQRCb5g/RSPghgQ HRUqWyhztebBCMmmrxbWjs4B+ZNnQuNdtkVGFWkSv2RTJ23zJC8/v66iHXb436s7Ft FttTfy6Y/XFrVrznJBcvlpNj6xkSe9uaCmabeVB6FSYSQ+BmeGRcYbJe28X6yk6gWB oRHEJ5iSDX11osGi+YUCxlNtKx4/VVJvHORmAd1IDkXjw9Wlm3gejpibC8c/2ZGzmf 71RfK4ZigJQvcPRq2NqCD2njbNgCxxI0FgKE+HMCzmigvQnE2JkExguDLrQ4Cdting lRWNHznwyaOFQ== From: SJ Park To: Andrew Morton Cc: Asier Gutierrez , SJ Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH v4 1/3] mm/damon: Introduce DAMOS_QUOTA_HUGEPAGE auto tuning Date: Mon, 31 Aug 2026 07:47:28 -0700 Message-ID: <20260831144732.80910-2-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260831144732.80910-1-sj@kernel.org> References: <20260831144732.80910-1-sj@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Asier Gutierrez Introduce DAMOS_QUOTA_HUGEPAGE_MEM_BP auto tuning. Add a new DAMOS quota goal metric to measure the amount of huge page consumption to total memory consumption ratio. Vmstat may lag, which in some cases may lead to NR_FREE_PAGES being greater than or equal to the amount of RAM in the system. A guard is added to avoid the extremely unlikely case [1]. In the case, return 100% (10000 bp). [1] https://lore.kernel.org/all/20260715151615.99767-1-sj@kernel.org/ Signed-off-by: Asier Gutierrez Reviewed-by: SJ Park Signed-off-by: SJ Park Reviewed-by: Lian Wang --- include/linux/damon.h | 2 ++ mm/damon/core.c | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/include/linux/damon.h b/include/linux/damon.h index 5607f98ec6306..310509455db13 100644 --- a/include/linux/damon.h +++ b/include/linux/damon.h @@ -153,6 +153,7 @@ enum damos_action { * @DAMOS_QUOTA_INACTIVE_MEM_BP: Inactive to total LRU memory ratio. * @DAMOS_QUOTA_NODE_ELIGIBLE_MEM_BP: Scheme-eligible memory ratio of a * node in basis points (0-10000). + * @DAMOS_QUOTA_HUGEPAGE_MEM_BP: Huge page to total used memory ratio. * @NR_DAMOS_QUOTA_GOAL_METRICS: Number of DAMOS quota goal metrics. * * Metrics equal to larger than @NR_DAMOS_QUOTA_GOAL_METRICS are unsupport= ed. @@ -167,6 +168,7 @@ enum damos_quota_goal_metric { DAMOS_QUOTA_ACTIVE_MEM_BP, DAMOS_QUOTA_INACTIVE_MEM_BP, DAMOS_QUOTA_NODE_ELIGIBLE_MEM_BP, + DAMOS_QUOTA_HUGEPAGE_MEM_BP, NR_DAMOS_QUOTA_GOAL_METRICS, }; =20 diff --git a/mm/damon/core.c b/mm/damon/core.c index a5ea3e61e7f41..3fa1b096c8330 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -3038,6 +3038,22 @@ static unsigned int damos_get_in_active_mem_bp(bool = active_ratio) return mult_frac(inactive, 10000, total); } =20 +static unsigned int damos_hugepage_mem_bp(void) +{ + unsigned long thp, total_pages, free_pages; + + total_pages =3D totalram_pages(); + free_pages =3D global_zone_page_state(NR_FREE_PAGES); + + if (total_pages <=3D free_pages) + return 10000; + + thp =3D global_node_page_state(NR_ANON_THPS) + + global_node_page_state(NR_SHMEM_THPS) + + global_node_page_state(NR_FILE_THPS); + return mult_frac(thp, 10000, total_pages - free_pages); +} + static void damos_set_quota_goal_current_value(struct damon_ctx *c, struct damos *s, struct damos_quota_goal *goal) { @@ -3074,6 +3090,9 @@ static void damos_set_quota_goal_current_value(struct= damon_ctx *c, goal->current_value =3D damos_get_node_eligible_mem_bp(c, s, goal->nid); break; + case DAMOS_QUOTA_HUGEPAGE_MEM_BP: + goal->current_value =3D damos_hugepage_mem_bp(); + break; default: break; } --=20 2.47.3 From nobody Sat Sep 26 14:37:53 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8F98B368291; Mon, 31 Aug 2026 14:47:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788187663; cv=none; b=eXNuZq1VN/LlM5hGTsa1j/+fgXe+uKofMxgtV0clrIGHNt7ncXnf+XBpvHyxz32rs62yNSox9ViDTfqTtMU7WnGoeCpdm3rVJf8tHK3QyJ0Z2YcKuNoaA5vgwpKJl2oCDpaM/Yvmm+7sNUMQFCblatvSxl5fVZt0HtnVrrsDedQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788187663; c=relaxed/simple; bh=tT8+7JHX4Z5CQNZSU6CIJUR4PBtRpLSLW0mkDQ5Q72M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=q63fWXPx4819ltFN2NbGcG30NqvAPg0KM6PkRbA9x7eycOBE6YIzQAWc7/pCp1KOJjXRIuM0L6TRP7e76zxUZQizmaBf3rlNNLQqDphuksdXzWr2mhFU4pzoQwbnGib3H+H2NSy0mf5AAc7ZzQU2t7UfgpigiWvPJXQcWHR13ow= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=SdsBr8V8; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="SdsBr8V8" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 020C41F00A3F; Mon, 31 Aug 2026 14:47:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1788187662; bh=jRlTOiEIY3tiJAO3FSkFxauqKn7UWt45qGOpOASV3nk=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=SdsBr8V8Wz3lqkMNdh5QCy+1X8yc/Nvwitq8jvgztKAbCU58EZKIJwLdIs/Ox5nLq VHcBEsCeDDQTjjiH9neNf14ngxKWXuy4QQQfr5rL7UqCiN6DbOJtmTXIWgbafyUgGo ijRAOEffpePeH+TVg5H0eOMz/IGChahtEprI4adZszGk4OGKx0P3qWFf7wij14SFpv LA35NY33vziyekYX0s8BICIkmTzF3Zi6vjx548fS2TNkXFuZHgicQxfckNwOdeznss iHtS6Xr1ZjOqMFHvzQ/b+p5MqoqgrR67lD8Wy6Mzi+GNHPyarAmjHxfOGU25nt4Hdk 0qOHWqPnAe81g== From: SJ Park To: Andrew Morton Cc: Asier Gutierrez , SJ Park , damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH v4 2/3] mm/damon/sysfs: support hugepage_mem_bp quota goal metric Date: Mon, 31 Aug 2026 07:47:29 -0700 Message-ID: <20260831144732.80910-3-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260831144732.80910-1-sj@kernel.org> References: <20260831144732.80910-1-sj@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Asier Gutierrez DAMOS has a new autotune policy metric: DAMOS_QUOTA_HUGEPAGE_MEM_BP. This patch exposes DAMOS_QUOTA_HUGEPAGE_MEM_BP through sysfs. Add the "hugepage_mem_bp" to the sysfs-schemes interface. Signed-off-by: Asier Gutierrez Reviewed-by: SJ Park Signed-off-by: SJ Park --- mm/damon/sysfs-schemes.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mm/damon/sysfs-schemes.c b/mm/damon/sysfs-schemes.c index 32f495a96b17a..d9b81d7b5910e 100644 --- a/mm/damon/sysfs-schemes.c +++ b/mm/damon/sysfs-schemes.c @@ -1269,6 +1269,10 @@ struct damos_sysfs_qgoal_metric_name damos_sysfs_qgo= al_metric_names[] =3D { .metric =3D DAMOS_QUOTA_NODE_ELIGIBLE_MEM_BP, .name =3D "node_eligible_mem_bp", }, + { + .metric =3D DAMOS_QUOTA_HUGEPAGE_MEM_BP, + .name =3D "hugepage_mem_bp", + }, }; =20 static ssize_t target_metric_show(struct kobject *kobj, --=20 2.47.3 From nobody Sat Sep 26 14:37:53 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0C70D369219; Mon, 31 Aug 2026 14:47:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788187664; cv=none; b=LY7/RVQgheJkDARuTQg8gFu3ZbgylhGhr9woQr/Yjgodxc2HQWrhYz4SjrX1BVtpPbNVDTRAkZj7Az9fP0Zq6JoHxvoYCbHWGl8UqR7WM1YfcwggOWh3eEzb1fYmHhdlFA4Oj6KuZ6sZ1NaJDNUcfm5h85YleGnmARBN9OGjr/g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788187664; c=relaxed/simple; bh=DDAM8kLS6YFUm07t0FP+1YwHfuBY8U7Ht/eFKbSjt4Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KJ4y5ng0VZPsf1i41iN0QXZ+mLdXeRQcajn0EbaejfmFwZQlvDzRDjjnqkltshPLFzdQiqwnpdY5soYM47QQNKwOJOP9BYUkxmQ5Nrp/Bcx28bQSJmkFqsvu475iki9FAI5VHuPJq5lTUG3dVXndnadOqg56tNaTChUD0pluLe4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=TtR08xk3; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="TtR08xk3" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5CD291F00ACA; Mon, 31 Aug 2026 14:47:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1788187662; bh=ZJ2cDi7p2lGLgMdSGSLvUGByJ6pdyguDUdt1C3jVMEY=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=TtR08xk34nMJJUbAO9GFJQWzH6EBM0rs1JV8zJGXVoBJ7JlWOPOPDO+D7DFfrcJsj Qwgo01bhJEofWm0Vp2J2P8X3bFTo+h9ELtdcZDVtNCiteD2K5tq8q8Bl3Va2BAXDoc H+XHOqfhDZ4j0Cn8HErbg8II7h0R6/DaUGDy/x9fgNZq5EloVHyf2BDaD8zxoUCQPw M5bD3ScFXTawCiWXVFJhjFxaUwBW5ed1MWycPCfOr1M/evZPGdwiVyMXaMMPpvj/sD Of+R2tWn2YPmF+2VVgCCe3eKKylQf04gSioaHVVx9auUDPFs5Wv+r/RiSOC41141qv TplFkYOjSEIEA== From: SJ Park To: Andrew Morton Cc: Asier Gutierrez , "Liam R. Howlett" , David Hildenbrand , Jonathan Corbet , Lorenzo Stoakes , Michal Hocko , Mike Rapoport , Randy Dunlap , SJ Park , Shuah Khan , Suren Baghdasaryan , Vlastimil Babka , damon@lists.linux.dev, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH v4 3/3] Docs/mm/damon/design: Document hugepage_mem_bp target metric Date: Mon, 31 Aug 2026 07:47:30 -0700 Message-ID: <20260831144732.80910-4-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260831144732.80910-1-sj@kernel.org> References: <20260831144732.80910-1-sj@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Asier Gutierrez Document hugepage_mem_bp metric exposed by sysfs. Signed-off-by: Asier Gutierrez Reviewed-by: SJ Park Signed-off-by: SJ Park --- Documentation/mm/damon/design.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/mm/damon/design.rst b/Documentation/mm/damon/des= ign.rst index aed6cb1cf4831..a8c163475ef2b 100644 --- a/Documentation/mm/damon/design.rst +++ b/Documentation/mm/damon/design.rst @@ -713,6 +713,8 @@ mechanism tries to make ``current_value`` of ``target_m= etric`` be same to bp (1/10,000). - ``node_eligible_mem_bp``: Scheme target access pattern-eligible memory r= atio of a node in bp (1/10,000). +- ``hugepage_mem_bp``: Total huge page to total used memory ratio in bp + (1/10,000). =20 ``nid`` is optionally required for ``node_mem_used_bp``, ``node_mem_free_b= p``, ``node_memcg_used_bp``, ``node_memcg_free_bp`` and ``node_eligible_mem_bp`= ` to --=20 2.47.3