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 A021BC7115A for ; Thu, 19 Jun 2025 22:01:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 180C66B0092; Thu, 19 Jun 2025 18:00:35 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 132696B0093; Thu, 19 Jun 2025 18:00:35 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0471A6B0095; Thu, 19 Jun 2025 18:00:35 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id E82246B0092 for ; Thu, 19 Jun 2025 18:00:34 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id A2923C0C9F for ; Thu, 19 Jun 2025 22:00:34 +0000 (UTC) X-FDA: 83573519988.08.CBDD672 Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf04.hostedemail.com (Postfix) with ESMTP id 0E39B40016 for ; Thu, 19 Jun 2025 22:00:32 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="YfG/klgG"; spf=pass (imf04.hostedemail.com: domain of sj@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1750370433; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=3zzAdsN3/H+HA8zKTkg0qWObe4f4SnTzqxGoSp56RDE=; b=xMfs55pNc7lQQxIP/Vt7ksaZgN1IqOVJP+ItzZKy1FCtkOcXvCQIHZrV7DRTlLdd3DUPfB Q0qx4xnG84TVem0sqFTZpfeKXhMW939BRe4DIl3+uffCPTVQbm5ziIP6kCeGww1h6Pu0cg ytLWMgTNsHPV77dg9iNOpsxuOh3lklM= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1750370433; a=rsa-sha256; cv=none; b=BvoYfPj/2loLmi0TF90Jmo9GmOwvbJ4lM5rnYuNnrHWe5JDMoL/xal8hbgnlGms7bIlWMU ioy/JjV37bXG79W2rhhSP92/ARRKjtOJrjNrgfCdl+ABkJ75fGyZrhLzUSF7LGVuZLy/5E zKlW3mi+kjtD3obdXsq8XRM7UEzGOaI= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="YfG/klgG"; spf=pass (imf04.hostedemail.com: domain of sj@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 60931A523EF; Thu, 19 Jun 2025 22:00:32 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0497AC4CEEE; Thu, 19 Jun 2025 22:00:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1750370432; bh=ruhTjHTMSB8Frh5X86EoKCSKXfbBH40pNj+dni3HQq4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YfG/klgGxqXrLNWew9LBj2e/nPIoTPalafzZNhcp5HHVKp3iKRRBIKkCWni+DGv0N 0Qi4/5YUWVavIluMjGGfBilOoxFMa/oxaniOd/mFbpKwZL+xPcyDyr3S4JIwT8QUtG CWVpyijK7Kf71gE10l5V9dHg5zh8cD6WW5gY7bwsUA0WtxLspMBnFc7Oi7zxMyfldk 4ZsdXXNAxy5US69ahqQEwBf2dK47GeLKlOOkkaRHawCaUysqJaMfMtO34yVs/8jKML fSh8drtWw48On8wB2lHgXhOt74KwLRi3xEqtChhkszltN5kV1fRVJ/IAz3Sd5hkw1t ScbDALkDkkNSQ== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 03/11] mm/damon/core: implement DAMOS_QUOTA_NODE_MEMCG_USED_BP Date: Thu, 19 Jun 2025 15:00:15 -0700 Message-Id: <20250619220023.24023-4-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250619220023.24023-1-sj@kernel.org> References: <20250619220023.24023-1-sj@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 0E39B40016 X-Stat-Signature: aasm4hrrpfzbuhaszz5q3mpjpitxyp8q X-Rspam-User: X-HE-Tag: 1750370432-210111 X-HE-Meta: U2FsdGVkX18FtQ5PVQjTObMa1gUELFcImNkluvtNalGA02kE73/26rWlW0xvhKut96mHqdQBdavHtGyGpzIjoWXyv/bVlfRqet1GlarMhvj0/H8mkkpYHvHLxOyakq+6xu01/DuywTBzi5qwySGCzvR+GYAIbl1yjKorRMMR3dBB+Piw7k+MwvFNNyoWgFGq9R16YlEELuvB1wnowiXLn1DXr0T8/UVWPHOwfk3ymAr98Is5JrHHFQnrCdJxz1t8/yIFYmo6pWsCyUJap8ZvuFzxfI48V0ZdGSYjqbRe3kRBI9/FWj6GLexKHUETAzxeVXMpNuXfPMvuyy0js3Zamebcuif1KutDB0Q//ditfdHW/05XxuVopTYkTKzq9qV748Jxz4biOvJ6WAlvqoxYHyYoZQOEN+sIhqhilHvepYJ7ieDYAmELVXq+MfDQZ1bVtKrthv0/b+70lBXCYWJ+37NnXYEjKALSO1cwLfHZWXhJQNwySstXS09cBgZAuIvJXmRZab4WwUahqxsszs/aimXRETqcaY0GzhtiSvYrh3YLDSJz7viDjupRTN/xF2BbpV3hOkrphTwtKawrGoBnjNG/5juBgkdzkc5/l+UMlaJrFJoNwWMsZGQ5njuCw1ldc4EjTnR9OiCDVski6zUUtzkj8XSJcjpQ1ugvELcqUGakosd8IfkHzxg2ZIq2IXTS6hjj4FbMTs+i1yfC5dTGMeeRjk4b+0MEUxKa3LmtCiDO6d9IJGUExZ9hjhSmwbG+axTEOh4Vt8h8EX8NuvDuZWlQ4E0XRXl/Kh9uTpM9RDp1uqV87K7oBKRQsHwfhLfujLdxi+/+eKHgb5ZM1GaqyD3FT5SDlO1N0zaq1sUBGtDIK0t8XrwOyIQlgochl52BhHjFZ3tWDRwfSvRH4Xe42HFAMMUw0OiSmZRReRlWCAMGEEuTgMfu907n9n2SLM5QqA5SWNPjMHpx25is3G2 6IlzUzON j0L8HPRMF21SYOmQDih9KQHioWK3U5p+Gt25DZj8qzF19foi6rB5MjXL8r0HL6nzZFgujK+OhDRr3pZt9TZFfBu4IVp934A9MKEUQ1cuvAsAETVABXkIrr0CN8W4saV3u3jwmXOEhIb2yWz7XWYTXgOa4KR4YGaxrz+Y/aOtoJ2QCbvjBws89MDwlrtisFEHgTilc82YP6dVWf9xxmNwyfJcXzn6y+XkmIY7Jt7wwVsy8AzctP4z5hgWg7IRuPtkYzCkOTeTRds4dlQfS9RVF8X3P7Q+/a962rlyVwW/9M5M2rxlt2BS8W8f19g== 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: Implement the behavior of DAMOS_QUOTA_NODE_MEMCG_USED_BP. It uses sum of active/inactive anon/file pages of a given cgroup on a given NUMA node as the value of the metric. Signed-off-by: SeongJae Park --- mm/damon/core.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/mm/damon/core.c b/mm/damon/core.c index d675dd932a23..1481b43f2710 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -2021,12 +2022,40 @@ static __kernel_ulong_t damos_get_node_mem_bp( numerator = i.freeram; return numerator * 10000 / i.totalram; } + +static unsigned long damos_get_node_memcg_used_bp( + struct damos_quota_goal *goal) +{ + struct mem_cgroup *memcg; + struct lruvec *lruvec; + unsigned long used_pages; + struct sysinfo i; + + rcu_read_lock(); + memcg = mem_cgroup_from_id(goal->memcg_id); + mem_cgroup_flush_stats(memcg); + lruvec = mem_cgroup_lruvec(memcg, NODE_DATA(goal->nid)); + used_pages = lruvec_page_state(lruvec, NR_ACTIVE_ANON); + used_pages += lruvec_page_state(lruvec, NR_INACTIVE_ANON); + used_pages += lruvec_page_state(lruvec, NR_ACTIVE_FILE); + used_pages += lruvec_page_state(lruvec, NR_INACTIVE_FILE); + rcu_read_unlock(); + + si_meminfo_node(&i, goal->nid); + return used_pages * PAGE_SIZE * 10000 / i.totalram; +} #else static __kernel_ulong_t damos_get_node_mem_bp( struct damos_quota_goal *goal) { return 0; } + +static unsigned long damos_get_node_memcg_used_bp( + struct damos_quota_goal *goal) +{ + return 0; +} #endif /* @@ -2062,6 +2091,9 @@ static void damos_set_quota_goal_current_value(struct damos_quota_goal *goal) case DAMOS_QUOTA_NODE_MEM_FREE_BP: goal->current_value = damos_get_node_mem_bp(goal); break; + case DAMOS_QUOTA_NODE_MEMCG_USED_BP: + goal->current_value = damos_get_node_memcg_used_bp(goal); + break; case DAMOS_QUOTA_ACTIVE_MEM_BP: goal->current_value = damos_get_active_inactive_mem_bp(); break; -- 2.39.5