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 549D3C7115B for ; Thu, 19 Jun 2025 22:01:17 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E7B4D6B009C; Thu, 19 Jun 2025 18:00:41 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E043C6B009D; Thu, 19 Jun 2025 18:00:41 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CF2E26B009F; Thu, 19 Jun 2025 18:00:41 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id BD8956B009C for ; Thu, 19 Jun 2025 18:00:41 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 8B274160C6A for ; Thu, 19 Jun 2025 22:00:41 +0000 (UTC) X-FDA: 83573520282.02.25C2CD2 Received: from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31]) by imf17.hostedemail.com (Postfix) with ESMTP id A99F240002 for ; Thu, 19 Jun 2025 22:00:39 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=D7i+0ApA; spf=pass (imf17.hostedemail.com: domain of sj@kernel.org designates 172.234.252.31 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=1750370439; 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=VOq3cDezocyTExmKN/ZunhhzFgq0WaObMiYqu+m8EU0=; b=w3BGV/vQKH0IfNRBF3CyIHjltA/IVR+xNrLuXkQDixUtL3bpN8jo5jcM/AFvoguhvrmbcz YQvb1yPYhvs4qOpVzEqVBpgiaukI6Ig099xTVD7zXChfbKoMEUulgOqNSUcJwAmn0EFony 5XYHqQniVv7D+DvGsgK7EVWF8Ltlz38= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=D7i+0ApA; spf=pass (imf17.hostedemail.com: domain of sj@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1750370439; a=rsa-sha256; cv=none; b=nyEcap/cQAEoUEix2d1bLQIQXPL1vClUvN828qrlqfmDDwfeHZduw7t86gljLOeD9oyNVq A3hLOBluEObFWdudM5NE1Nw2I/kL4x6JFo2ORYIggxMnL2RBcD9WALA0rmQg5dYudqv6A0 KuLn4NA3xcB4fzfTtvvbvzubxiz8LYk= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id C125149B68; Thu, 19 Jun 2025 22:00:38 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 79DECC4CEEE; Thu, 19 Jun 2025 22:00:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1750370438; bh=lRIYfv6d9ZUagG+D/Ljb9Zv5CaI6stHZpkxzrSwoTP0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=D7i+0ApAUZMon9H3bfHfx/w0HiENvgxYh8bpDLqXcE3QzNvILJeAaklXWmcveR6cj w733RFwBA1ZaxKtWGGsFacjR78XdEE0C81GHpaj7GZA8IEKusclmYq0LoLMpJtVmdu MF3LkeWkwFlTTvNlmMz45bpdPYIYXtugtMdqCEKnMPC0Cbb4aIoLcRdvSwQU+MrecU zlvKNCzaz5QqVPRhsWSR063BfKUqg/HOLOMSRRhJCq5Kv6TN97aj15r9ohNshsz3FU 31Ti5Of6gyHHwZZfzIzTQ2uL4S48VxfN+dmkaNx2mZqniGlONQUg90LD1wTXOdJh0j j+JsiFqqCpAWg== 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 09/11] mm/damon/core: implement DAMOS_QUOTA_NODE_MEMCG_FREE_BP Date: Thu, 19 Jun 2025 15:00:21 -0700 Message-Id: <20250619220023.24023-10-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: rspam11 X-Rspam-User: X-Rspamd-Queue-Id: A99F240002 X-Stat-Signature: ichzbyk5aojy7m9tpziw4rtq4jzg68gm X-HE-Tag: 1750370439-151868 X-HE-Meta: U2FsdGVkX18CfdS1fgGDAHppzZtZt2SNqHJi6rJJXqDUikhqsPHPGbdFO5AfrQCX7P2nCByzEtYqLbuO2s1/aKJ/dnXhEwhocU8huJGEKVPqlCC0Vgu9tkccHKxPbOIvUdcpFxueBZ0oUqooQR5LB5YxEWEnaTI2zxGHOKCe4RhM9ALk6Tjlr++6uJDqoQ9W1ASwsNcu0TifLPSjeIZsiwmbL2d0gQc4Ik61TDMKnf3x0Gqzf45OHJrw2DI92FVsUJA/+Tujl1/ptPPc6EBiLN4+ZvmFb5PS53gwn3GkubA5Cdl0x0iceTg/UED/TSAh3sHPeqK1padybKDa1xR6qD3LoJi/W9WNNU65/nRNfmOp9IkrPqrb1L8sOHHI9AzULJ1EoCZCmRFcj0qvIx70PgGdRGO6a5aOTS8IdLSxu5b6ucW3c0w1NJV7DqwtJnDs1ljY8EANknIHD2omZKgB+fKp+e9NpKUa4abR+XcFYS8fis2ytch7UBaU1olEFRG/REivUwKx9uYvMU6LaAVg+RtDzCSGq/JCz7HZms+Y4hdqgnENCFzYSjSYRQAHj4TK1WqMfY9trPGc3iISMBoEGH41sfW9FD1xonoulRIonwF8vaRubkXTeTHkwxmFYjSaoU1UZK6GBexTqdlkQSUjgIySq95FCSuaynk/fL3NBTfupOw6h8rVFwKnKdWjuDCOID3pWTA4kSxP5woe02vMoHUFmzQkEMz7XUxNHo6TToANokknz6ePmBiPJvEUkLQQF72ZsQ7eHwqdY6MqM6VsjxjBsqn4fOiUpALAGs9tochZZj0/I9EzPfuSt/95grMFw+F/ToV62BkZ3JQgax+psENxpCmpQ+G7ysAtdTWDtZV0UbQiPEqmSPwPN63FktVjdFk7TpBJU4YeQCvGvLU2U3FbLNtJ0BH+cj9bCfVT4xAyHmRivbRdX49s93Yo8Mjgekk9kGYaZCmFbte/mEs W3bqXLtn Acwq9J2VnRVWSjhaBynVMbWV0lz+mFk8xEaVWjlfVQmA/hjPz9WpMZNguA12p7UINQOcHXA3nNRu6tEjONdAA0W3krO3hrkmw5tDWgVnd/D0XhSOnk6YVhqe9ossq6QR+/MeazN24HQ+hkcj9xMHzGHWBcz572cj+S5khEakGmLO4tlPkbOIg+plC39Mh4WI7nH+xPE9nqTc6tDXoxPmr48GbS9nXULttLYC5iyCcVvd0Zss+NwagcGIjLs/ilepHjCu0968ilickSFnHjnT5+D6a9Q== 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 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 --- 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