From nobody Sat Feb 7 17:55:20 2026 Received: from mail-yw1-f196.google.com (mail-yw1-f196.google.com [209.85.128.196]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 40A6D171C9 for ; Fri, 23 Jan 2026 04:57:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.196 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769144268; cv=none; b=lGpapTvuwuvNAB7txnx+3lpXUMYCxBsnsVc1zagyi4ehhevKuRfFOhNXeBj2V7qyPhNcVBW142f1DO5q8PuvS5qCku8ug8GUH3mzgMvsQt3kLnYLXLhblqjS+3Wjq3YOhJXPGBGux2OXfTVkejsKL+lPdHbyhoPdfXpBQyX5wls= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769144268; c=relaxed/simple; bh=gNJCsIARzmkXf+EBb/WlklHpeUg8wMqbpfoVNXrZwnU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DSt7iYyesKREOca8mNlocb+4fItGLJT4JVqM806FA+1vyVVmE7kDLK4y+5GdwWntm6ASFAIw0c5do9pnl/1bOXAlvHwyw3zPL+RkSN4pHyAWCfiV2bAeiV42fFmvEzU3N26mZnXpg0FHx8axqK7KM9POb2vNO9cfptb1QMYfWaQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=UAfnPcxf; arc=none smtp.client-ip=209.85.128.196 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="UAfnPcxf" Received: by mail-yw1-f196.google.com with SMTP id 00721157ae682-790884840baso17898417b3.0 for ; Thu, 22 Jan 2026 20:57:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769144262; x=1769749062; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=zUE9K2FZw5Ls36EWUpBYNIoEjPdLY+PpGcwmuAyPWmY=; b=UAfnPcxfvfE60Fb0LZgoT4W5QtwBlFogKyGXfpdqO3NbpKanIdIkK+Zbl4mzYXbKn8 j/toS1Ca5SSR02gcjQH45Q+jtRfGPTVZx6QPCX6m/X2t6p9CHVrQfl+NEslzH+un772V XnTHc9dbHopkzi2FBLQcp5CdPeSLFBGv1hrU+ro3shhMrVcpeDgaHw0tN1/8R0MseNPn ySqC2qCFdT3WKZX4gxmUHMxYuqdmsYpUS0/rpt6WrexFs/c28VOjJTCnEWqMSFphrmtU 9M//u8+Jrj1SLLIzwkAsUANIVls6H5aF9JzR7VvEUDoPloj2bXI8vv9BZSTpXZV0pP18 202g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769144262; x=1769749062; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=zUE9K2FZw5Ls36EWUpBYNIoEjPdLY+PpGcwmuAyPWmY=; b=AqybcnmPoa5GHoRjVJGeLr/YnCx19uot2lcwLMJd83YV0c6F1RXg20QidOwC9f7G// WMnMZpI/kZp5HIObhhDmqXEEJGeHCMJ8L+uSWopjvbch+Xq/tLRiL2ymwvs15jWndhAk OxnkuBrgFvTR3W/ik3fKPdhiWjOU9xKdEMXwrIJ7P7r4O6f8YdQB+9w8Jl9Aix3SSkBS s7MA2svsggRZ2k7PvlchQl3KAmP5Aah6tOwdoafNQR50fIfF2wze9pNsetbRYUmW33nv FlPjmKt9caI3vuZWMVoyuZ6s19y7WUC7jifq9BvWs8+/uup8+nWDWscl0qci15OP3PzJ UtXA== X-Forwarded-Encrypted: i=1; AJvYcCVp5mttpWFFxeSjj1SKMsJ/k8nZohmh4QsSS5QAqiNWU8XBtQxjV9J9qzvm13lJWAgJ7COsndTmsKs9qr0=@vger.kernel.org X-Gm-Message-State: AOJu0Yz07NARiyjAg7yRV6wX2vLcrU3VyBBqiJnbcO4Xm0dhXdtqHDJb 6UVnBVfHnuvzFzJecoD2pTB/mw5sX28P0/uAYif5bzOpN/xPKs0DphI= X-Gm-Gg: AZuq6aLxaqGmGTlgJ4OPDO/Vl9N6dy3oN7W1mokpIToGCccclyN3jm87yuAsyo3+foE ITgvyUvPJg/Lr9G3DS4FZvYsw94XKX28YwFLq4PCdVT8JPgAlBIIdQCVqs9Ef3pucAIY9VpJsqf LS8Uh9/FHpU+L5j/ZxRU3Q2NBcyMu+LEajnGmB+tw88s2vPyNWXZFnKpILn3JMMo5Z9xF7T+rc8 UhzShIFDHpPe+wX+DguAoZyVjicWd1819LDWLt31Gtj0sZ7cWBYxgHSHLnXmV+YKIkia/J30F2t 15I2G+YeBv0v1O0+deLD+2LWpcWjIGny2qs52VpX5Cdb6YdeD384GIjkiALZqs8YVjXZIVhUdeF fzmUV2JVN975EewWBGLTTGAFg1jjS1SpxS50q/YlSEgaoAB0CoH8QFjkpHOIHH2Pb/8i/UBsj6c DAWsuoHOlF1Rfc71WMhkHLRjor2W6wx2u4GjODa7kGRkJ8ohg9zbBsqnqDfUkGsQ== X-Received: by 2002:a05:690c:39c:b0:794:4c3:65ec with SMTP id 00721157ae682-7943992fbf6mr17105327b3.22.1769144262401; Thu, 22 Jan 2026 20:57:42 -0800 (PST) Received: from localhost (23-116-43-216.lightspeed.sntcca.sbcglobal.net. [23.116.43.216]) by smtp.gmail.com with ESMTPSA id 00721157ae682-7943b2b9bfcsm6436687b3.38.2026.01.22.20.57.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 Jan 2026 20:57:42 -0800 (PST) From: Ravi Jonnalagadda To: damon@lists.linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org Cc: sj@kernel.org, akpm@linux-foundation.org, corbet@lwn.net, bijan311@gmail.com, ajayjoshi@micron.com, Ravi Jonnalagadda Subject: [RFC PATCH 1/5] mm/damon/core: add DAMOS_QUOTA_NODE_SYS_BP metric Date: Thu, 22 Jan 2026 20:57:24 -0800 Message-ID: <20260123045733.6954-2-ravis.opensrc@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260123045733.6954-1-ravis.opensrc@gmail.com> References: <20260123045733.6954-1-ravis.opensrc@gmail.com> 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" Add a node-scoped "system bp" goal metric for PA-based migration control. This metric represents basis points (bp, 1/10,000) for (scheme-eligible bytes on node nid) / (system total bytes) Signed-off-by: Ravi Jonnalagadda --- include/linux/damon.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/linux/damon.h b/include/linux/damon.h index 3813373a9200..ec5ed1a217fc 100644 --- a/include/linux/damon.h +++ b/include/linux/damon.h @@ -155,6 +155,7 @@ enum damos_action { * @DAMOS_QUOTA_NODE_MEM_FREE_BP: MemFree ratio of a node. * @DAMOS_QUOTA_NODE_MEMCG_USED_BP: MemUsed ratio of a node for a cgroup. * @DAMOS_QUOTA_NODE_MEMCG_FREE_BP: MemFree ratio of a node for a cgroup. + * @DAMOS_QUOTA_NODE_SYS_BP: Scheme-eligible bytes ratio of a node. * @NR_DAMOS_QUOTA_GOAL_METRICS: Number of DAMOS quota goal metrics. * * Metrics equal to larger than @NR_DAMOS_QUOTA_GOAL_METRICS are unsupport= ed. @@ -166,6 +167,7 @@ enum damos_quota_goal_metric { DAMOS_QUOTA_NODE_MEM_FREE_BP, DAMOS_QUOTA_NODE_MEMCG_USED_BP, DAMOS_QUOTA_NODE_MEMCG_FREE_BP, + DAMOS_QUOTA_NODE_SYS_BP, NR_DAMOS_QUOTA_GOAL_METRICS, }; =20 --=20 2.43.0 From nobody Sat Feb 7 17:55:20 2026 Received: from mail-yw1-f193.google.com (mail-yw1-f193.google.com [209.85.128.193]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B31B9395DA9 for ; Fri, 23 Jan 2026 04:57:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.193 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769144272; cv=none; b=E1Hhh7MqWasVtEqaIfMLrSwWK+AOJ7bfnZPuyDTxeSdAU+GZ1LS29SBq43nVYL+BVNJQb2MThKE1jd5rCQwF+LyeIgx51TDTuXw/DT9zEp9sDE7PJfNYZ6DG+/UqBMVs/64xO4nUkACBvtj624KyW6Nqch4f1Jp5BiRhvyVutXQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769144272; c=relaxed/simple; bh=LPrYTrwnUWZ7ytHBL5nCDH6LuVnTbfijgy57EHaTEFE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=G5I5Q0cJQbGod/C7WesZ6BYVjX3Pf1Ky+7RKSAUyD15lp5yoSvAB+yQvm9OLS0IR99/UViyFbDv1gd1oLM1yAG6LT43Lp6rnyKXjah2xS1l8FPxUJH5f+k0iDVEgFm9U3prOiDOKiv9/W8wNqa9KXhwJNtnLhukVn3FGzrHgObA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=J687YmJ6; arc=none smtp.client-ip=209.85.128.193 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="J687YmJ6" Received: by mail-yw1-f193.google.com with SMTP id 00721157ae682-79427f739b0so19106517b3.3 for ; Thu, 22 Jan 2026 20:57:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769144264; x=1769749064; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=K0i7a7403YgQyMlpi7E1tGdpNbWRUN7COl/lkLxdLS4=; b=J687YmJ6+mAWFyfu1hh12msny+kJzcEuUoiKoWfs8fOmOhmFjKnlEd7iWfGsDW5GMq yzZTuNF1bmp7nQ3wFaFLwewEjwYLhla+3zqbpkUU6DDenZ6mJV7CD5y+/YDySHpzs5Qu ghOoq6WgTA0RllUzPJsjgqfANAj+aBvue3JfaCRsilIHbnEf2tP/HvhSrNJ4kqdHzKnM 6TQiSzuVCy33rOwXOUQGIuEmjWsW2upi5rPyXM2Vqod1OOFyxf+B2BGgioy3db8+xB/v Y+dZWkOnMgiCyrvzuuEQuczgMfyQHWao6To2XEK7bpLjMPONB2Gg76ULKEBf4tjYlnrp QFzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769144264; x=1769749064; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=K0i7a7403YgQyMlpi7E1tGdpNbWRUN7COl/lkLxdLS4=; b=Ruc7Axa7rS0DviW7zYWetlT1dD0PiwS++nK0BnDJTk4jOn6/B22cZ9wyxGL49TJGxN SPJODMz+o58aH1NDrbDfQ/a/zmDGcMbvQjOEIbwAWko18SMbjgOJlnYFbYGYf9h7ZT+6 lBTkESTKF43q2Eu05zRQxd8m30fpJEDv6O2l41y8eHjBUIAweJBTedhjgEqLjf0y3s8j b1kCxym2AwGzdpsE/CJNMB0zzGwPGuHsTS2i4QCW1cxuws5xOyh91Mgdi/zvcVnTROeg zd5vbrr7fBNoHRTqqUiFeArghvMB6RdTDa1ttYWmaPbRdJYXAiASUk/cpUKr7rwr3bOZ rLbw== X-Forwarded-Encrypted: i=1; AJvYcCVMVNUEvfP2Fpvd8GopSQNzHDlMbmLEcqTxDVgE95w3oLEh1GZRX5OJQ9Ftk7Hdiw0zhCbzJxVrJixnlE4=@vger.kernel.org X-Gm-Message-State: AOJu0YzVzXVO7o1EXCbzS6JvmaD3SSjRFmqwCyzd1D7OUTTwnqtnNu3Y 8RKCuaO6sEFjJVT7La0V5+syAZ2Mhxee2BJTmDsbR1ZZ7yrGQHfHUaexjToAJO0= X-Gm-Gg: AZuq6aJ3WwfO4XXBxYURcAeloEEinDnDvgntRF+fPErJhcBlBjVoeRJkt3CKCiZeo3S VyLrRmAVSdxZnMaLnnuHHVHLoGpNrShtbkWWczcDhzSDq7CTfCzjBlEuIENRRDJ89tGhibNp130 2aZxYUXrWDFCPHBVwPabwKt8lerAINkKSNgeP7/8WapnLl9USAwU/J4QmXBpN3zKvYX+2tezRkt DFexm0DNhYLz+39GJO8CJ6DLJanPC0sSZ5wA63DwvJKjD4yZltOHoQEWbpAJSR6cnT8xI+yYRwQ 8vFbSLzSh3mudXF2yR7374b0yhb2gslcXJ9rPj72PR7W/RZbGelkosWdN78N7A1/986Qk/9IJbK KP9EHNl6fnJmkg6Rd0AyDGMOjoUnbGW5a4P+QGAnO4Tua8h2hjcAe8lQBCBR2HQLOqPYSzbfS9i aZcaBonhHZIWCrlCJLgj6zWh2YzAjpDbpM1mxlw+cICeXSSCraVpD0c0iBs7LRlQ== X-Received: by 2002:a05:690c:ed6:b0:787:b5ac:68e4 with SMTP id 00721157ae682-79440b4d2cbmr136867b3.48.1769144264173; Thu, 22 Jan 2026 20:57:44 -0800 (PST) Received: from localhost (23-116-43-216.lightspeed.sntcca.sbcglobal.net. [23.116.43.216]) by smtp.gmail.com with ESMTPSA id 00721157ae682-7943af14163sm6332217b3.7.2026.01.22.20.57.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 Jan 2026 20:57:43 -0800 (PST) From: Ravi Jonnalagadda To: damon@lists.linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org Cc: sj@kernel.org, akpm@linux-foundation.org, corbet@lwn.net, bijan311@gmail.com, ajayjoshi@micron.com, Ravi Jonnalagadda Subject: [RFC PATCH 2/5] mm/damon: add get_goal_metric() op and PA provider Date: Thu, 22 Jan 2026 20:57:25 -0800 Message-ID: <20260123045733.6954-3-ravis.opensrc@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260123045733.6954-1-ravis.opensrc@gmail.com> References: <20260123045733.6954-1-ravis.opensrc@gmail.com> 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" Introduce an optional damon_operations callback `get_goal_metric()` that lets ops providers compute goal metrics requiring address-space knowledge. Provide a PA implementation that handles DAMOS_QUOTA_NODE_SYS_BP by iterating the monitored PFN regions and attributing bytes to the goal's nid. Core remains generic and asks ops only when needed. Signed-off-by: Ravi Jonnalagadda --- include/linux/damon.h | 3 +++ mm/damon/paddr.c | 58 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) diff --git a/include/linux/damon.h b/include/linux/damon.h index ec5ed1a217fc..67233898c27c 100644 --- a/include/linux/damon.h +++ b/include/linux/damon.h @@ -649,6 +649,9 @@ struct damon_operations { bool (*target_valid)(struct damon_target *t); void (*cleanup_target)(struct damon_target *t); void (*cleanup)(struct damon_ctx *context); + unsigned long (*get_goal_metric)(struct damon_ctx *ctx, + struct damos *scheme, + const struct damos_quota_goal *goal); }; =20 /* diff --git a/mm/damon/paddr.c b/mm/damon/paddr.c index 07a8aead439e..30e4e5663dcb 100644 --- a/mm/damon/paddr.c +++ b/mm/damon/paddr.c @@ -14,6 +14,8 @@ #include #include #include +#include +#include =20 #include "../internal.h" #include "ops-common.h" @@ -148,6 +150,48 @@ static bool damon_pa_invalid_damos_folio(struct folio = *folio, struct damos *s) return false; } =20 +/* System total RAM in bytes (denominator for bp computation) */ +static unsigned long damon_pa_totalram_bytes(void) +{ + return (unsigned long)totalram_pages() << PAGE_SHIFT; +} + +/* + * Compute node-scoped system bp for PA contexts: + * bp =3D (bytes attributed to goal->nid across monitored PA regions) / + * (system total bytes) * 10000 + */ +static unsigned long damon_pa_get_node_sys_bp(struct damon_ctx *ctx, + struct damos *scheme, + const struct damos_quota_goal *goal) +{ + int nid =3D goal ? goal->nid : -1; + unsigned long node_bytes =3D 0; + unsigned long total_bytes =3D damon_pa_totalram_bytes(); + struct damon_target *t; + struct damon_region *r; + + if (nid < 0 || !total_bytes) + return 0; + + damon_for_each_target(t, ctx) { + damon_for_each_region(r, t) { + unsigned long start_pfn =3D r->ar.start >> PAGE_SHIFT; + unsigned long end_pfn =3D r->ar.end >> PAGE_SHIFT; + unsigned long pfn; + + for (pfn =3D start_pfn; pfn < end_pfn; pfn++) { + if (!pfn_valid(pfn)) + continue; + if (page_to_nid(pfn_to_page(pfn)) =3D=3D nid) + node_bytes +=3D PAGE_SIZE; + } + } + } + + return div64_u64((u64)node_bytes * 10000ULL, total_bytes); +} + static unsigned long damon_pa_pageout(struct damon_region *r, unsigned long addr_unit, struct damos *s, unsigned long *sz_filter_passed) @@ -344,6 +388,19 @@ static unsigned long damon_pa_apply_scheme(struct damo= n_ctx *ctx, return 0; } =20 +/* Generic goal-metric provider for PA */ +static unsigned long damon_pa_get_goal_metric(struct damon_ctx *ctx, + struct damos *scheme, + const struct damos_quota_goal *goal) +{ + switch (goal ? goal->metric : -1) { + case DAMOS_QUOTA_NODE_SYS_BP: + return damon_pa_get_node_sys_bp(ctx, scheme, goal); + default: + return 0; + } +} + static int damon_pa_scheme_score(struct damon_ctx *context, struct damon_target *t, struct damon_region *r, struct damos *scheme) @@ -378,6 +435,7 @@ static int __init damon_pa_initcall(void) .cleanup =3D NULL, .apply_scheme =3D damon_pa_apply_scheme, .get_scheme_score =3D damon_pa_scheme_score, + .get_goal_metric =3D damon_pa_get_goal_metric, }; =20 return damon_register_ops(&ops); --=20 2.43.0 From nobody Sat Feb 7 17:55:20 2026 Received: from mail-yw1-f193.google.com (mail-yw1-f193.google.com [209.85.128.193]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AA44F314D23 for ; Fri, 23 Jan 2026 04:57:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.193 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769144273; cv=none; b=MdhNljRPI81TorjVHaQgmMbgagy3Mz8IVKg0Q2VMi4//APIycNKSKHytYPdzo6N4Bn5xxxUJlcfl+JHO7pqotaU0Y2gcXOgonwjqm/EMPwTfDH0NY/S0JaTMzo5jPmkviY7lX2m5tuwRKWdjCsGWRYXxbCGOAvmPx87cadatzWU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769144273; c=relaxed/simple; bh=+AOWSwl3iOQaWr6u6EF8dNnZr3QA8X8HEruWVBZRH4w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hpdZ+gzsE/xycVAl4bjvGjG1wwcnes3Y46MbxprB1p3B6C/5pjdB9YIrCZXeit4/GALymtAMhaYrHdGJZGfrRBC3Bdz4Y37JQss684Bdh/I7EF4LJR61hQ1HXXDlPXwAFBJPz1RvrfwByQ2HyUPuZk9w3WZGBxu1IRtMTh3jz7M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=COIiW0g7; arc=none smtp.client-ip=209.85.128.193 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="COIiW0g7" Received: by mail-yw1-f193.google.com with SMTP id 00721157ae682-79407df9391so19297647b3.1 for ; Thu, 22 Jan 2026 20:57:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769144266; x=1769749066; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=1D+wUgUp3AIJjrSF87TlviSGACs4vs0t8FpLdk/Qkks=; b=COIiW0g7pGS9dNwXAzI+Oq2ApeTYthU2XpwZvvQk8zQxm6hIgrdmjgh6mdL6EQ0bqR No7LPCSxxlvUobxqfIxx5XLQh2LF9L29E9cqRiiNI7iQYHOvb56UUkYq6p7aKWAXrFCE CMkCL813Ku8v0Lyn9AI92QW+FNNgiUb3b+KOAv2a5JTQKxSGNdBBdyZZvuG+EKWUk7EN dTLOR1PtDOpLCbSUVjeltLWLdHjY1TK8Uvpay+pMwaTTViylDS8VCmw3TUcCwEDUGTTx 5iCe8yqSjEvlzP5qZ/ppdSAN7XvgmoC1gvawEGNwaCjhNfZrgjaknk22aFAB7vbRn+/U MTmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769144266; x=1769749066; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=1D+wUgUp3AIJjrSF87TlviSGACs4vs0t8FpLdk/Qkks=; b=wSxHLXHEGjqKjWMglLcrFbcdHj/N6I0c7sg97PPzGVPxtN1KfWanltSKfQG7rWOLhQ tFprNmsTCkJ+D6BT0QVraQsaSI6uhVVv5t1Ls21gA2Bg70fQoi3Q5KQR++iL5CZTeEcr PPtd8eVadjrp6qcKmD1hv4ZUGT8dQvLBaGLfGrpDBawE05lwdCKFENycc8WIcXeM9Iyu lzRfw7Ix3bmtuuRN5xdcdlz9eGxjy4tpYCI2nAuEWD995HVwLXVwgd+HRvVGBhmnnSrL m4/Q/SF+FNuVQCak4H6al/uNAk2j+AfCsez+sdU5hpstCJ7hIdzJ65VZ09NTmCXajvgz oMcg== X-Forwarded-Encrypted: i=1; AJvYcCUlfGc9UkqSROBRE5DHi4i+NeGukgiGc9H5EksKkNRvEHJHqHOPL8Y9zbKgjcMUX0UoB398GczpY/RiF1w=@vger.kernel.org X-Gm-Message-State: AOJu0Yy0P9ExsQfl3lIWuPZV5G6pg7xeegU+VZVIlB8FtpsrY9uE2mPj lMIkTWwbvxWZ9LrWjAFs5ETXOMbxSAF1aeIbyHtu30LkfzKCQizY6XU= X-Gm-Gg: AZuq6aKVWdl2TL8muLPoc3n/9wsaBljMLxTBd5HCfmjmRDkG/Ic3/Ok8tGSvS/xksMG 2hrks4Oz16Z0JrdgXLDNK5QDI47rxR8Dcr7+8xsz2Iulgxhu4liGyIHS6mEb/K2JCb6U9A/wgN1 aZ9VvwxoS4iIp8Y5N0AoxF9zd9I9Y0naKI1ArOfg99/nTY7c9n+qi/cWUjJZZ+ysumPFnG39YcY O4C+gXpbAL4JwotmeSOiqWNovePYlM2w+1NVnqVabAB+72Wz5EFgow9AtlXyDWc9E17TuJ4hLkr Fda9rEmIN1wbG4ES383EDXi9EwhS9yk8NbV4Y+iHoGdnMdRJIxx0jgEhHhtcg1Vr+7gALx9sqbU JckGSN08F43ofEQ8AiDfMsRKUpfR9fM+Sy0NNZ7LNuFR7Uy8FsI8D2LPkpMIcyuHE6H6KAmBEyr HTxG7YbwA9ovtjCrbv5RSGHDEKO80sczmWcV8vfGSyE/Y/MykLrpWnL6F9hGaK4w== X-Received: by 2002:a05:690c:630a:b0:793:c850:9e05 with SMTP id 00721157ae682-79439900187mr15750197b3.28.1769144265778; Thu, 22 Jan 2026 20:57:45 -0800 (PST) Received: from localhost (23-116-43-216.lightspeed.sntcca.sbcglobal.net. [23.116.43.216]) by smtp.gmail.com with ESMTPSA id 00721157ae682-7943b2d060esm6104507b3.56.2026.01.22.20.57.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 Jan 2026 20:57:45 -0800 (PST) From: Ravi Jonnalagadda To: damon@lists.linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org Cc: sj@kernel.org, akpm@linux-foundation.org, corbet@lwn.net, bijan311@gmail.com, ajayjoshi@micron.com, Ravi Jonnalagadda Subject: [RFC PATCH 3/5] mm/damon/core: add new ops-specific goal metric Date: Thu, 22 Jan 2026 20:57:26 -0800 Message-ID: <20260123045733.6954-4-ravis.opensrc@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260123045733.6954-1-ravis.opensrc@gmail.com> References: <20260123045733.6954-1-ravis.opensrc@gmail.com> 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" Convert static functions in core.c to pass damon_ctx* and damos* down to `damos_set_quota_goal_current_value()`. This keeps all goal metrics (PSI, node_mem*, node_memcg*, and the new node_sys_bp) computed in one place, while core remains generic and ops-specific computation is delegated via ctx->ops.get_goal_metric(). Only static functions in this file are touched; no external ABI changes. Signed-off-by: Ravi Jonnalagadda --- mm/damon/core.c | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/mm/damon/core.c b/mm/damon/core.c index 84f80a20f233..d898bfcbef72 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -2119,8 +2119,20 @@ static unsigned long damos_get_node_memcg_used_bp( } #endif =20 +static unsigned long +damos_get_goal_metric_from_ops(struct damon_ctx *ctx, struct damos *scheme, + const struct damos_quota_goal *goal) +{ + if (!ctx || !goal) + return 0; + if (!ctx->ops.get_goal_metric) + return 0; + return ctx->ops.get_goal_metric(ctx, scheme, goal); +} =20 -static void damos_set_quota_goal_current_value(struct damos_quota_goal *go= al) +static void damos_set_quota_goal_current_value(struct damon_ctx *ctx, + struct damos *scheme, + struct damos_quota_goal *goal) { u64 now_psi_total; =20 @@ -2141,19 +2153,25 @@ static void damos_set_quota_goal_current_value(stru= ct damos_quota_goal *goal) case DAMOS_QUOTA_NODE_MEMCG_FREE_BP: goal->current_value =3D damos_get_node_memcg_used_bp(goal); break; + case DAMOS_QUOTA_NODE_SYS_BP: + goal->current_value =3D damos_get_goal_metric_from_ops(ctx, + scheme, goal); + break; default: break; } } =20 /* Return the highest score since it makes schemes least aggressive */ -static unsigned long damos_quota_score(struct damos_quota *quota) +static unsigned long damos_quota_score(struct damon_ctx *ctx, + struct damos *scheme, + struct damos_quota *quota) { struct damos_quota_goal *goal; unsigned long highest_score =3D 0; =20 damos_for_each_quota_goal(goal, quota) { - damos_set_quota_goal_current_value(goal); + damos_set_quota_goal_current_value(ctx, scheme, goal); highest_score =3D max(highest_score, goal->current_value * 10000 / goal->target_value); @@ -2165,7 +2183,9 @@ static unsigned long damos_quota_score(struct damos_q= uota *quota) /* * Called only if quota->ms, or quota->sz are set, or quota->goals is not = empty */ -static void damos_set_effective_quota(struct damos_quota *quota) +static void damos_set_effective_quota(struct damon_ctx *ctx, + struct damos *scheme, + struct damos_quota *quota) { unsigned long throughput; unsigned long esz =3D ULONG_MAX; @@ -2176,7 +2196,7 @@ static void damos_set_effective_quota(struct damos_qu= ota *quota) } =20 if (!list_empty("a->goals)) { - unsigned long score =3D damos_quota_score(quota); + unsigned long score =3D damos_quota_score(ctx, scheme, quota); =20 quota->esz_bp =3D damon_feed_loop_next_input( max(quota->esz_bp, 10000UL), @@ -2227,7 +2247,7 @@ static void damos_adjust_quota(struct damon_ctx *c, s= truct damos *s) /* First charge window */ if (!quota->total_charged_sz && !quota->charged_from) { quota->charged_from =3D jiffies; - damos_set_effective_quota(quota); + damos_set_effective_quota(c, s, quota); } =20 /* New charge window starts */ @@ -2240,7 +2260,7 @@ static void damos_adjust_quota(struct damon_ctx *c, s= truct damos *s) quota->charged_sz =3D 0; if (trace_damos_esz_enabled()) cached_esz =3D quota->esz; - damos_set_effective_quota(quota); + damos_set_effective_quota(c, s, quota); if (trace_damos_esz_enabled() && quota->esz !=3D cached_esz) damos_trace_esz(c, s, quota); } --=20 2.43.0 From nobody Sat Feb 7 17:55:20 2026 Received: from mail-yw1-f193.google.com (mail-yw1-f193.google.com [209.85.128.193]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0C25C38B7AD for ; Fri, 23 Jan 2026 04:57:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.193 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769144276; cv=none; b=Rz3bsqflnVOuOR0rnVzNssCLjGhwU4nSlSJyI20vbovnxWnhjWfo+vrtqh/x1r2fyQlPFr8to3x+A/h+Aeub2/a/z5iYUnFc0vZN9HUiLsQvOa/+vabeEY5h5NjcNWtwMi7KRaOm6H/OXQdnxBzXDRSg7XkMjx4bR/YtZGH4x38= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769144276; c=relaxed/simple; bh=REwnbFI5Ih419YIeGbeMhAV79Y8hP0BScdx6C3Cv9Aw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PLdVP/rWZBaMbgeA8d77z2GxrJHV8EZDdBrlPgFxIreWk3x/+P8fJ4xxH5cljV6CoLwWxR9jnpPdnHupRzWsq+naVzmim2tMml6b6xsj0nWqnfBfbUMm5ZqsKyXH13NMbmAuEQeuJTFUFzSeMYhw/RFBeXmhiInWRJ4CecV2Cys= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=K11H9JBe; arc=none smtp.client-ip=209.85.128.193 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="K11H9JBe" Received: by mail-yw1-f193.google.com with SMTP id 00721157ae682-7927b1620ddso26722167b3.0 for ; Thu, 22 Jan 2026 20:57:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769144267; x=1769749067; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=W2Hj3YMXyp6jb16WaA5iRCtpYS8eji7c2VCvrHXWtMA=; b=K11H9JBeVojbyntf6oi0fQt29BeZMje0EkD0VBnlE8yz+ZAwRXCdYrrXxbyi3itefJ 5BRrQKFuvK6dtXEzYaDw3fGvvh/4cgptfHiiLM/604rXywivNDHwDQLhaIH8V1Wqi/9t eDg+qng07YeYfkerfVImV4KqNefkoQNa12/4zanX1jvTajKkS2En6GPMLlnbXkmNb7gl WhRQf2meFqXK+Mw3q2LU7XxksjK4hQgpgu5UDIC1aI07ORxrwFBOlLnLRuqQ24JS2WZo VsY5hQ7rpbiBaVFMu+kP1TTHyjN4bWtoE898VTeQI5sAE1yuO0ZmOjZttbBjwDknCPzW Uk5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769144267; x=1769749067; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=W2Hj3YMXyp6jb16WaA5iRCtpYS8eji7c2VCvrHXWtMA=; b=lqsIfjb0rh8JPiWBWZdlQkyPWZTD5/AJ6qPcUGa/Ws45KxzFBv+Rhl0+hoH9B0sq21 u1T3E1trR52GUtURkmQdAigMc+8LbxjydrMj2jHzdi+GyTnTa/wD5DH/eygOUkuYp/7h JBdbvQayIi54yVOm38ok3xrIOxB5vGrbxyzcXMhxayJxaAzVkrHi3L9eikuEs/xPs6Qz Tmqv3sR76zGZocnOFJ7nJsKhysBJ3rpAcsbbMlT5rrKtx96otNC2PMJ/jWGye+oGRrAk y3ouu4u/8FIedV3oIhQOfe6hleau7R2oSjMS9Z0ILU6rsl18eAKt/x0OEFct3DFWisdA 7lkA== X-Forwarded-Encrypted: i=1; AJvYcCWMRZOSuUSvXz54EjDLA0peAr++N0ux1iuZWlAm5Q/IF75yTIQ8bYQwW2ZIpRaH0bLGHdX0WG9psxQwILY=@vger.kernel.org X-Gm-Message-State: AOJu0YxNC9ojQOFsr0oPPs8eraTQIenhRPTb9XSGCiqVgY8HQwQSBd9F htkYuN0fF0yyb+FYm+rD5LGHOch5MzJVSDpswNBVIWVOhwtaeaHwO/XQnCDg3N8= X-Gm-Gg: AZuq6aJxgLaqw1JEpzzNbD6BwkZmQEi8m+PZLkBh+6ZXEfJBB9YsqRuXuxRsNjBueDC sUxs/eGtaic9HIuKJS6OG40fmULPhT+g1xjPHXkFHcjyzKzeU9vD2oakal0tOTXaCTJkqtwNty1 TSah/DoO/dpcDvQ5xlFjWKkU4gc4xKTCK9krAK6U0JHA73GlV+g+bx84ZwsO69SKnl2ML8pzR8N qqJuReNEZbGke7VLryUCcChh++EAxIJf16WW08yt3QylIVJ8QRA3DZk6e3BQ56XHZWG87L0s6X3 GRP60xjw+1xFPBA9XcBEnAy+YaC6f6JK16ntYNNV68swrJ9DTe7wde6ZNJO1nT93I46UQBumdcd xdVdrEaS2fv90kXC6wlUzgWDWRnymUZXi/52bANWcsu4Iaa8uUV8ruitvUJU8B8xlYJv74XRqvQ XQrOwhcRpQnGqUOOhDqPtetLGvFZ8XLhrH3bSZVgafxRCKTe/VrmvivhVB0O+p+Q== X-Received: by 2002:a05:690c:688f:b0:794:1f46:79eb with SMTP id 00721157ae682-7942a70b7dcmr45404977b3.5.1769144267450; Thu, 22 Jan 2026 20:57:47 -0800 (PST) Received: from localhost (23-116-43-216.lightspeed.sntcca.sbcglobal.net. [23.116.43.216]) by smtp.gmail.com with ESMTPSA id 00721157ae682-7943af14432sm6354717b3.8.2026.01.22.20.57.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 Jan 2026 20:57:47 -0800 (PST) From: Ravi Jonnalagadda To: damon@lists.linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org Cc: sj@kernel.org, akpm@linux-foundation.org, corbet@lwn.net, bijan311@gmail.com, ajayjoshi@micron.com, Ravi Jonnalagadda Subject: [RFC PATCH 4/5] mm/damon/paddr: capacity clamp and directional early-exit for node_sys_bp Date: Thu, 22 Jan 2026 20:57:27 -0800 Message-ID: <20260123045733.6954-5-ravis.opensrc@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260123045733.6954-1-ravis.opensrc@gmail.com> References: <20260123045733.6954-1-ravis.opensrc@gmail.com> 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" Clamp effective target to node capacity (bp) and skip in-migration if the node already meets/exceeds it. This avoids oscillation and unnecessary work in two-context DRAM/CXL setups when quota goals (e.g., node_sys_bp) are met. Signed-off-by: Ravi Jonnalagadda --- mm/damon/paddr.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/mm/damon/paddr.c b/mm/damon/paddr.c index 30e4e5663dcb..64dbdd2196a5 100644 --- a/mm/damon/paddr.c +++ b/mm/damon/paddr.c @@ -300,10 +300,54 @@ static unsigned long damon_pa_deactivate_pages(struct= damon_region *r, sz_filter_passed); } =20 +static unsigned long damon_pa_node_capacity_bp(int nid) +{ + struct pglist_data *pgdat; + unsigned long sys_total =3D damon_pa_totalram_bytes(); + unsigned long node_pages, node_total; + + if (nid < 0 || !sys_total) + return 0; + pgdat =3D NODE_DATA(nid); + if (!pgdat) + return 0; + node_pages =3D pgdat->node_spanned_pages; + node_total =3D node_pages << PAGE_SHIFT; + return div64_u64((u64)node_total * 10000ULL, sys_total); +} + static unsigned long damon_pa_migrate(struct damon_region *r, unsigned long addr_unit, struct damos *s, unsigned long *sz_filter_passed) { + /* + * Capacity clamp + directional early-exit for node_sys_bp goals: + * If we are migrating INTO g->nid and the current bp for that node is + * already >=3D min(target_bp, capacity_bp), skip work this interval. + */ + { + struct damos_quota_goal *g; + + list_for_each_entry(g, &s->quota.goals, list) { + unsigned long cap_bp, effective_target_bp; + + if (g->metric !=3D DAMOS_QUOTA_NODE_SYS_BP) + continue; + if (g->nid < 0) + continue; + + cap_bp =3D damon_pa_node_capacity_bp(g->nid); + if (!cap_bp) + break; + + effective_target_bp =3D min(g->target_value, cap_bp); + if (s->target_nid =3D=3D g->nid && + g->current_value >=3D effective_target_bp) + return 0; + break; + } + } + phys_addr_t addr, applied; LIST_HEAD(folio_list); struct folio *folio; --=20 2.43.0 From nobody Sat Feb 7 17:55:20 2026 Received: from mail-yx1-f65.google.com (mail-yx1-f65.google.com [74.125.224.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1E4DE396B65 for ; Fri, 23 Jan 2026 04:57:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.224.65 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769144280; cv=none; b=qrW4r3lngSZzJIre81AcKprauanc6bHtcyd9Y+AqTEEVmeZGEw98lZPJ12oSnwnPeSt0qOcycj2Sx27t6cOVzJ6J1d52jpchmLXzRv0KshzqIOws9TRdU60n6Eu+Bhi5GPMm0g8G8qLX/zzpoAhGrfdoNNGYwoJtguVpAKBXocw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769144280; c=relaxed/simple; bh=uSGUjxT6vDYwFOxXkjkFU0pbIbdjzCnzKu1CcO3NxY8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=gjS2FeWABd+eTwUW1fOnhaq+OyU56uWTuBblCF7SZCRUkGmnwb8Pnm5rK3kR5/7aIpaRY7RTI5KTRFFzBAEsxLzdoUF88FR0KEQfBuzoGdqbYd1UVxC65yzC7IDZENRmq4H37WvRpPCYVAQhNOoHXZ6YMK97yjgFZhpt1m/jqKM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=BNTgL1uh; arc=none smtp.client-ip=74.125.224.65 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="BNTgL1uh" Received: by mail-yx1-f65.google.com with SMTP id 956f58d0204a3-64959e30705so845750d50.1 for ; Thu, 22 Jan 2026 20:57:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769144269; x=1769749069; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XZ4usUMGfNo7J4lew0QKMfQ7VuYcLUlFI2hm5aH3MjE=; b=BNTgL1uhqs9fS1ndy7tQ3nmiEKi2tKgOfFqHt2s4LOH+ik3tZe1Rm6hHEIxoybTc9i gJjBgP9F8H0sfziS/qD2lQA5tzY+x6jfVaUVsdsq4/+FlAQkCUWuhkUAfX7LlTbcl8Fd VGc+wWvJGGYyeQFzFBferqubsv7WbU9Eu5AiXoHA3JURMXR9KrCzmDjCsz8VCwbZgrds dqcCxAd/qSGz9TSAt/Jxz8jXC/D2KdrUG/LC8CM80QiipngwTOtetd6rDKsm+5Rp5teo LL7g2P35w/whNi0+tL2KrEjSY2aJcnrkUvVRmotlDQ7n8e7ILc0BHFpVRP31qu4263CM kjSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769144269; x=1769749069; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=XZ4usUMGfNo7J4lew0QKMfQ7VuYcLUlFI2hm5aH3MjE=; b=l+VNcLHpQ978VevFb0Swg3lIVqW5a+6zTyC86Z85Xv4+4u7JP5Kk3KlnVpibUeCyZj 2UQT9lxqQNknVuIRDCVYNgIJRl4XB1eSxix7N5nLQZiXhXyyHoHAmePk0EuqPF6xkS/N cZV2zAYBqjLWgYSUWl6NAKy4eeAahwYb30igLUAs3+X29Vqyi0uvXCHDYloUQKewCupD cZTSfHZldqmyTjIOb8jlejglGydlpK0Ezi/Me3iIJ89L6/SDa3mFucbFZ+Viwzh30V6c CawsFoSbrHZiBRi8V/CrmDPgdRrOR+Mt69bP7/mSPJGLjsZZiNUmAaDSPzTJDfP+3WIt 8pfQ== X-Forwarded-Encrypted: i=1; AJvYcCV/uZ1eJS6OnhdglGfHwXX2LCLo4MsY7DRP5uQLr0FqRJaXhe8snASBCi4ppVVSx/PZ8ho/AugTSGAv13g=@vger.kernel.org X-Gm-Message-State: AOJu0YzDTG+pqwXPVEnc4pkU7d+biAsGNWv+K9ZN5wV2AVSu+xmQ7djm iKGpq2yDouxqLQxsSGR/hookofstfw6fB2pL+vX4fzGJ93xscAwwGfU= X-Gm-Gg: AZuq6aJw//SYmNEcaeCAwSpTIYixmhvLyQYjsLLSKGXJHj7G1dznDWiw1CXM04OS+xD IRoNMgCMENKecNwSJVAheVmYeFexfvPk8ssk7w6D7WBrDJMBIn339CyWMIEMj8gBOTVgx9biFtX Cv+2VK6nNEc/9BwvL9I0f88GgLxQMvkdEmNKIH4whcdxkRJveqeHPxpXS5h5VN+7ck29WKIi7QK rKoFhQ+ePj8ioNK6rsiDDAMVqNwLMQ8Ojs62es8mWPx/PsIyMltA0rf9WNoe9Uv4bF1ua9fkkke KPsS1eUqjhORrPiaWiLo9hJ5JuslPNJ2fHfI+R7zdD+GgCg1GcXWjRDAEU2f0Mk9dDyhbAcrpvM +LU3qbflEvg2FNeR2AZYtAFt5O3Zb1VWuIIRuc0GtCnkovX8O8g+4jK4iG8kZ6kJLBWvW1EsYpP PVmHtip+jhKuVPox5MCY3jNKVYB3qM4oGhkKmh0q+mdtPDgwZCBi+dtqUnRjqx4A== X-Received: by 2002:a05:690c:9693:b0:786:5afa:375c with SMTP id 00721157ae682-79439a09235mr29912047b3.67.1769144269171; Thu, 22 Jan 2026 20:57:49 -0800 (PST) Received: from localhost (23-116-43-216.lightspeed.sntcca.sbcglobal.net. [23.116.43.216]) by smtp.gmail.com with ESMTPSA id 00721157ae682-7943af14427sm6466517b3.12.2026.01.22.20.57.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 Jan 2026 20:57:48 -0800 (PST) From: Ravi Jonnalagadda To: damon@lists.linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org Cc: sj@kernel.org, akpm@linux-foundation.org, corbet@lwn.net, bijan311@gmail.com, ajayjoshi@micron.com, Ravi Jonnalagadda Subject: [RFC PATCH 5/5] mm/damon/sysfs-schemes: accept "node_sys_bp" in goal's target_metric Date: Thu, 22 Jan 2026 20:57:28 -0800 Message-ID: <20260123045733.6954-6-ravis.opensrc@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260123045733.6954-1-ravis.opensrc@gmail.com> References: <20260123045733.6954-1-ravis.opensrc@gmail.com> 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" Allow userspace to select the new goal metric "node_sys_bp" by writing it to goals//target_metric. Also set goal->nid for this metric when committing goals from sysfs to the running schemes. Signed-off-by: Ravi Jonnalagadda --- mm/damon/sysfs-schemes.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mm/damon/sysfs-schemes.c b/mm/damon/sysfs-schemes.c index 3a699dcd5a7f..37cd5d715821 100644 --- a/mm/damon/sysfs-schemes.c +++ b/mm/damon/sysfs-schemes.c @@ -1038,6 +1038,10 @@ struct damos_sysfs_qgoal_metric_name damos_sysfs_qgo= al_metric_names[] =3D { .metric =3D DAMOS_QUOTA_NODE_MEMCG_FREE_BP, .name =3D "node_memcg_free_bp", }, + { + .metric =3D DAMOS_QUOTA_NODE_SYS_BP, + .name =3D "node_sys_bp", + }, }; =20 static ssize_t target_metric_show(struct kobject *kobj, @@ -2566,6 +2570,9 @@ static int damos_sysfs_add_quota_score( } goal->nid =3D sysfs_goal->nid; break; + case DAMOS_QUOTA_NODE_SYS_BP: + goal->nid =3D sysfs_goal->nid; + break; default: break; } --=20 2.43.0