From: SeongJae Park <sj@kernel.org>
Cc: SeongJae Park <sj@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
damon@lists.linux.dev, kernel-team@meta.com,
linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: [RFC PATCH 09/11] mm/damon/core: implement DAMOS_QUOTA_NODE_MEMCG_FREE_BP
Date: Thu, 19 Jun 2025 15:00:21 -0700 [thread overview]
Message-ID: <20250619220023.24023-10-sj@kernel.org> (raw)
In-Reply-To: <20250619220023.24023-1-sj@kernel.org>
Implement the core part of DAMOS_QUOTA_NODE_MEMCG_FREE_BP to get the
real value. The value is implemented as the entire memory of the given
NUMA node, except the given cgroup's portion. So strictly speaking, it
is not free memory but memory that not used by the cgroup.
Signed-off-by: SeongJae Park <sj@kernel.org>
---
mm/damon/core.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/mm/damon/core.c b/mm/damon/core.c
index 1481b43f2710..ee3d6d4b3c9b 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -2028,7 +2028,7 @@ static unsigned long damos_get_node_memcg_used_bp(
{
struct mem_cgroup *memcg;
struct lruvec *lruvec;
- unsigned long used_pages;
+ unsigned long used_pages, numerator;
struct sysinfo i;
rcu_read_lock();
@@ -2042,7 +2042,11 @@ static unsigned long damos_get_node_memcg_used_bp(
rcu_read_unlock();
si_meminfo_node(&i, goal->nid);
- return used_pages * PAGE_SIZE * 10000 / i.totalram;
+ if (goal->metric == DAMOS_QUOTA_NODE_MEMCG_USED_BP)
+ numerator = used_pages * PAGE_SIZE;
+ else /* DAMOS_QUOTA_NODE_MEMCG_FREE_BP */
+ numerator = i.totalram - used_pages * PAGE_SIZE;
+ return numerator * 10000 / i.totalram;
}
#else
static __kernel_ulong_t damos_get_node_mem_bp(
@@ -2092,6 +2096,7 @@ static void damos_set_quota_goal_current_value(struct damos_quota_goal *goal)
goal->current_value = damos_get_node_mem_bp(goal);
break;
case DAMOS_QUOTA_NODE_MEMCG_USED_BP:
+ case DAMOS_QUOTA_NODE_MEMCG_FREE_BP:
goal->current_value = damos_get_node_memcg_used_bp(goal);
break;
case DAMOS_QUOTA_ACTIVE_MEM_BP:
--
2.39.5
next prev parent reply other threads:[~2025-06-19 22:01 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-19 22:00 [RFC PATCH 00/11] mm/damon: allow DAMOS auto-tuned for per-memcg per-node memory usage SeongJae Park
2025-06-19 22:00 ` [RFC PATCH 01/11] mm/damon: document damos_quota_goal->nid use case SeongJae Park
2025-06-19 22:00 ` [RFC PATCH 02/11] mm/damon: add a new DAMOS quota goal metric for cgroup on node memory usage SeongJae Park
2025-10-09 0:37 ` SeongJae Park
2025-06-19 22:00 ` [RFC PATCH 03/11] mm/damon/core: implement DAMOS_QUOTA_NODE_MEMCG_USED_BP SeongJae Park
2025-10-08 0:00 ` SeongJae Park
2025-06-19 22:00 ` [RFC PATCH 04/11] mm/damon/sysfs-schemes: implement path file under quota goal directory SeongJae Park
2025-06-19 22:00 ` [RFC PATCH 05/11] mm/damon/sysfs-schemes: connect quota goal path file to DAMON core SeongJae Park
2025-06-19 22:00 ` [RFC PATCH 06/11] Docs/mm/damon/design: document DAMOS_QUOTA_NODE_MEMCG_USED_BP SeongJae Park
2025-06-19 22:00 ` [RFC PATCH 07/11] Docs/admin-guide/mm/damon/usage: document DAMOS quota goal path file SeongJae Park
2025-06-19 22:00 ` [RFC PATCH 08/11] mm/damon: add DAMOS_QUOTA_NODE_MEMCG_FREE_BP quota tuning goal metric SeongJae Park
2025-06-19 22:00 ` SeongJae Park [this message]
2025-06-19 22:00 ` [RFC PATCH 10/11] mm/damon/sysfs-schemes: support DAMOS_QUOTA_NODE_MEMCG_FREE_BP SeongJae Park
2025-06-19 22:00 ` [RFC PATCH 11/11] Docs/mm/damon/design: document DAMOS_QUOTA_NODE_MEMCG_FREE_BP SeongJae Park
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250619220023.24023-10-sj@kernel.org \
--to=sj@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=damon@lists.linux.dev \
--cc=kernel-team@meta.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox