From nobody Thu Oct 2 17:02:59 2025 Received: from mxct.zte.com.cn (mxct.zte.com.cn [58.251.27.85]) (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 CAC53223DDA; Sun, 14 Sep 2025 10:09:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=58.251.27.85 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757844592; cv=none; b=YzCJkHcM4KDPJEUN99X3gdFwG8dAyxQ1Rzj/WrgMtBiJ2SrL2dOjiY1CuyB0OtDtbil6bnekRAqDYiSZgVDcq7rvRp9hHaXj0aZan5RiCNZKc4w7Qjbcx9VK9K8bL6VzCjNPW0b1wzgOe77wMc2yeinWEOmYQX+T457uIqnb4Ds= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757844592; c=relaxed/simple; bh=xZxsr5cwG6lEoaCjEFS9C2L4teN6L7b0Nz0PG3F/Lfk=; h=Date:Message-ID:In-Reply-To:References:Mime-Version:From:To:Cc: Subject:Content-Type; b=AYHNOe+dIggQBsQwPeyWCukplJe3iTxfSx8xTfXlBpx20wrT14e4z1cqv7iEaN2zChNXltj0O3lMSaJKrNpG+MnYfuwwumfMu8tzNDRtWvWeqxkNJYs6IdWK4OTdJbvUSTkF/EPIb3ytPRc794jJTIqkTVijUy4qyHgydFg7o98= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=zte.com.cn; spf=pass smtp.mailfrom=zte.com.cn; arc=none smtp.client-ip=58.251.27.85 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=zte.com.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=zte.com.cn Received: from mxde.zte.com.cn (unknown [10.35.20.121]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mxct.zte.com.cn (FangMail) with ESMTPS id 4cPkK81Zy7z1FhC; Sun, 14 Sep 2025 18:04:12 +0800 (CST) Received: from mxhk.zte.com.cn (unknown [192.168.250.138]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mxde.zte.com.cn (FangMail) with ESMTPS id 4cPkK22jGqzBQkJn; Sun, 14 Sep 2025 18:04:06 +0800 (CST) Received: from mse-fl2.zte.com.cn (unknown [10.5.228.133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mxhk.zte.com.cn (FangMail) with ESMTPS id 4cPkJr6x1Bz5PM38; Sun, 14 Sep 2025 18:03:56 +0800 (CST) Received: from xaxapp05.zte.com.cn ([10.99.98.109]) by mse-fl2.zte.com.cn with SMTP id 58EA3mCY092681; Sun, 14 Sep 2025 18:03:49 +0800 (+08) (envelope-from xu.xin16@zte.com.cn) Received: from mapi (xaxapp02[null]) by mapi (Zmail) with MAPI id mid32; Sun, 14 Sep 2025 18:03:51 +0800 (CST) Date: Sun, 14 Sep 2025 18:03:51 +0800 (CST) X-Zmail-TransId: 2afa68c69307545-58a60 X-Mailer: Zmail v1.0 Message-ID: <20250914180351288rcLuZnPAMUej48nuTc7KV@zte.com.cn> In-Reply-To: <20250914180031197jk6ngo5pQjpXkNtNsjzSo@zte.com.cn> References: 20250914180031197jk6ngo5pQjpXkNtNsjzSo@zte.com.cn Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 From: To: Cc: , , , , , , , , , , Subject: =?UTF-8?B?W1BBVENIIHYyIDEvNV0gbWVtY2c6IGFkZCBwZXItbWVtY2cga3NtX3JtYXBfaXRlbXMgc3RhdA==?= X-MAIL: mse-fl2.zte.com.cn 58EA3mCY092681 X-TLS: YES X-SPF-DOMAIN: zte.com.cn X-ENVELOPE-SENDER: xu.xin16@zte.com.cn X-SPF: None X-SOURCE-IP: 10.35.20.121 unknown Sun, 14 Sep 2025 18:04:12 +0800 X-Fangmail-Anti-Spam-Filtered: true X-Fangmail-MID-QID: 68C6931A.001/4cPkK81Zy7z1FhC Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: xu xin With the enablement of container-level KSM (e.g., via prctl), there is a growing demand for container-level observability of KSM behavior. The value of "ksm_rmap_items" indicates the total allocated ksm rmap_items of this memcg, which could be used to determine how unbeneficial the ksm-policy (like madvise), they are using brings, since the bigger the ratio of ksm_rmap_items over ksm_merging_pages, the more unbeneficial the ksm bring. Add the counter in the existing memory.stat without adding a new interface. We traverse all processes of a memcg and summing the processes' ksm_rmap_items counters instead of adding enum item in memcg_stat_item or node_stat_item and updating the corresponding enum counter when ksmd manipulate pages. Finally, we can look up ksm_rmap_items of per-memcg simply by: cat /sys/fs/cgroup/memory.stat | grep ksm_rmap_items Signed-off-by: xu xin --- include/linux/ksm.h | 1 + mm/ksm.c | 38 ++++++++++++++++++++++++++++++++++++++ mm/memcontrol.c | 5 +++++ 3 files changed, 44 insertions(+) diff --git a/include/linux/ksm.h b/include/linux/ksm.h index 22e67ca7cba3..a41ed503f152 100644 --- a/include/linux/ksm.h +++ b/include/linux/ksm.h @@ -94,6 +94,7 @@ void collect_procs_ksm(const struct folio *folio, const s= truct page *page, struct list_head *to_kill, int force_early); long ksm_process_profit(struct mm_struct *); bool ksm_process_mergeable(struct mm_struct *mm); +void memcg_stat_ksm_show(struct mem_cgroup *memcg, struct seq_buf *s); #else /* !CONFIG_KSM */ diff --git a/mm/ksm.c b/mm/ksm.c index 2ef29802a49b..b533f0edaf96 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -3308,6 +3308,44 @@ long ksm_process_profit(struct mm_struct *mm) } #endif /* CONFIG_PROC_FS */ +#ifdef CONFIG_MEMCG +struct memcg_ksm_stat { + unsigned long ksm_rmap_items; +}; + +static int evaluate_memcg_ksm_stat(struct task_struct *task, void *arg) +{ + struct mm_struct *mm; + struct memcg_ksm_stat *ksm_stat =3D arg; + + mm =3D get_task_mm(task); + if (mm) { + ksm_stat->ksm_rmap_items +=3D mm->ksm_rmap_items; + mmput(mm); + } + + return 0; +} + +/* Show the ksm statistic count at memory.stat under cgroup mountpoint */ +void memcg_stat_ksm_show(struct mem_cgroup *memcg, struct seq_buf *s) +{ + struct memcg_ksm_stat ksm_stat; + + if (mem_cgroup_is_root(memcg)) { + /* Just use the global counters when root memcg */ + ksm_stat.ksm_rmap_items =3D ksm_rmap_items; + } else { + /* Initialization */ + ksm_stat.ksm_rmap_items =3D 0; + /* Summing all processes'ksm statistic items */ + mem_cgroup_scan_tasks(memcg, evaluate_memcg_ksm_stat, &ksm_stat); + } + /* Print memcg ksm statistic items */ + seq_buf_printf(s, "ksm_rmap_items %lu\n", ksm_stat.ksm_rmap_items); +} +#endif + #ifdef CONFIG_SYSFS /* * This all compiles without CONFIG_SYSFS, but is a waste of space. diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 257d2c76b730..9595b132c6c3 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -63,6 +63,7 @@ #include #include #include +#include #include "internal.h" #include #include @@ -1492,6 +1493,10 @@ static void memcg_stat_format(struct mem_cgroup *mem= cg, struct seq_buf *s) } } +#ifdef CONFIG_KSM + memcg_stat_ksm_show(memcg, s); +#endif + /* Accumulated memory events */ seq_buf_printf(s, "pgscan %lu\n", memcg_events(memcg, PGSCAN_KSWAPD) + --=20 2.25.1 From nobody Thu Oct 2 17:02:59 2025 Received: from mxhk.zte.com.cn (mxhk.zte.com.cn [160.30.148.35]) (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 89AF4211C; Sun, 14 Sep 2025 10:06:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=160.30.148.35 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757844374; cv=none; b=ZFOkZl+rXfkesY1Ka5mwRPs3fcU+tNk1e5OKjG3WLo8Z7w4buxy6MCBIVIPB4uIHYEOZU0aqZqQefC/fB+sBnTdLNUddAPa+wDbn94N5ia2Ibw5s2YlmalS45+ipN6g2c0HMOs73+LcYw1Of9vk16T8UFFMULTMOekw9Pw61+zo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757844374; c=relaxed/simple; bh=Jr66LOVLZi8h7k4UjScGJXJYeufb9/vM5YInM7zGC4w=; h=Date:Message-ID:In-Reply-To:References:Mime-Version:From:To:Cc: Subject:Content-Type; b=MAHMm57siDNPGbWPYp8x5bSjN588j3VJdShlUnIUPNTJeIBLo1PST+OVr7QTk3Zwcp4B8tenggzQHmDdIGEriT+2nxTTRQEqQKVp3wXjbC4e6NMv9YtVuY+uODehJP4n69V08NJTORDxN6XFaQWbeLZmCB2yH8cC3vJdklmY8eQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=zte.com.cn; spf=pass smtp.mailfrom=zte.com.cn; arc=none smtp.client-ip=160.30.148.35 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=zte.com.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=zte.com.cn Received: from mxct.zte.com.cn (unknown [192.168.251.13]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mxhk.zte.com.cn (FangMail) with ESMTPS id 4cPkMM1W5Fz8Xs6w; Sun, 14 Sep 2025 18:06:07 +0800 (CST) Received: from mse-fl1.zte.com.cn (unknown [10.5.228.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mxct.zte.com.cn (FangMail) with ESMTPS id 4cPkM325p2z4xPT5; Sun, 14 Sep 2025 18:05:51 +0800 (CST) Received: from xaxapp04.zte.com.cn ([10.99.98.157]) by mse-fl1.zte.com.cn with SMTP id 58EA5e4P099229; Sun, 14 Sep 2025 18:05:40 +0800 (+08) (envelope-from xu.xin16@zte.com.cn) Received: from mapi (xaxapp01[null]) by mapi (Zmail) with MAPI id mid32; Sun, 14 Sep 2025 18:05:43 +0800 (CST) Date: Sun, 14 Sep 2025 18:05:43 +0800 (CST) X-Zmail-TransId: 2af968c693778a4-65db2 X-Mailer: Zmail v1.0 Message-ID: <20250914180543238RmGhd2wFVDA1pXX_I9Rrb@zte.com.cn> In-Reply-To: <20250914180031197jk6ngo5pQjpXkNtNsjzSo@zte.com.cn> References: 20250914180031197jk6ngo5pQjpXkNtNsjzSo@zte.com.cn Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 From: To: Cc: , , , , , , , , , , , Subject: =?UTF-8?B?W1BBVENIIHYyIDIvNV0gbWVtY2c6IHNob3cga3NtX3plcm9fcGFnZXMgY291bnQgaW4gbWVtb3J5LnN0YXQ=?= X-MAIL: mse-fl1.zte.com.cn 58EA5e4P099229 X-TLS: YES X-SPF-DOMAIN: zte.com.cn X-ENVELOPE-SENDER: xu.xin16@zte.com.cn X-SPF: None X-SOURCE-IP: 192.168.251.13 unknown Sun, 14 Sep 2025 18:06:07 +0800 X-Fangmail-Anti-Spam-Filtered: true X-Fangmail-MID-QID: 68C6938F.000/4cPkMM1W5Fz8Xs6w Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: xu xin Users can obtain ksm_zero_pages of a cgroup just by: 'cat /sys/fs/cgroup/memory.stat | grep ksm_zero_pages Signed-off-by: xu xin --- mm/ksm.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mm/ksm.c b/mm/ksm.c index b533f0edaf96..5832159214f8 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -3311,6 +3311,7 @@ long ksm_process_profit(struct mm_struct *mm) #ifdef CONFIG_MEMCG struct memcg_ksm_stat { unsigned long ksm_rmap_items; + long ksm_zero_pages; }; static int evaluate_memcg_ksm_stat(struct task_struct *task, void *arg) @@ -3321,6 +3322,7 @@ static int evaluate_memcg_ksm_stat(struct task_struct= *task, void *arg) mm =3D get_task_mm(task); if (mm) { ksm_stat->ksm_rmap_items +=3D mm->ksm_rmap_items; + ksm_stat->ksm_zero_pages +=3D mm_ksm_zero_pages(mm); mmput(mm); } @@ -3335,14 +3337,17 @@ void memcg_stat_ksm_show(struct mem_cgroup *memcg, = struct seq_buf *s) if (mem_cgroup_is_root(memcg)) { /* Just use the global counters when root memcg */ ksm_stat.ksm_rmap_items =3D ksm_rmap_items; + ksm_stat.ksm_zero_pages =3D atomic_long_read(&ksm_zero_pages); } else { /* Initialization */ ksm_stat.ksm_rmap_items =3D 0; + ksm_stat.ksm_zero_pages =3D 0; /* Summing all processes'ksm statistic items */ mem_cgroup_scan_tasks(memcg, evaluate_memcg_ksm_stat, &ksm_stat); } /* Print memcg ksm statistic items */ seq_buf_printf(s, "ksm_rmap_items %lu\n", ksm_stat.ksm_rmap_items); + seq_buf_printf(s, "ksm_zero_pages %lu\n", ksm_stat.ksm_zero_pages); } #endif --=20 2.25.1 From nobody Thu Oct 2 17:02:59 2025 Received: from mxhk.zte.com.cn (mxhk.zte.com.cn [160.30.148.35]) (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 9F29E7262E; Sun, 14 Sep 2025 10:07:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=160.30.148.35 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757844424; cv=none; b=JRWEkdMUXcduS+G2UpCH/uMIf06rRGG5nRX7OZVgKjDLLy+aVhleT8hA26Rw8f2+eJFsp2K/MYVM73jdj3+unxBedQSzUS5CC5Kkmopi7+O1bKW1SdzLqTchKINyKlFKpzLkyXLjcDKAw6lWnvRsxP1c2lJEr0hFOhwg3dACiDM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757844424; c=relaxed/simple; bh=ll/2ZGKGDGKEzRTjNb8ucJW92bdg7yoIzU8YwGYTj5I=; h=Date:Message-ID:In-Reply-To:References:Mime-Version:From:To:Cc: Subject:Content-Type; b=pP64xtq1MROqGoNwlno7V0Xm9JbgCHcJJFrHjdUh1J3FziAP37mmEQbVlqnx+LwRMVGOl0K4JLu3aGsG573lZHIfhi6kc5+NQjkVZGriXwnAGwhsaLkVHbLvdQfVS/LZisNelsW5M8XwW1tAYXy+xb4N33xy8f7NYDkQSM91BGg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=zte.com.cn; spf=pass smtp.mailfrom=zte.com.cn; arc=none smtp.client-ip=160.30.148.35 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=zte.com.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=zte.com.cn Received: from mse-fl1.zte.com.cn (unknown [10.5.228.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mxhk.zte.com.cn (FangMail) with ESMTPS id 4cPkNN28VMz8Xs71; Sun, 14 Sep 2025 18:07:00 +0800 (CST) Received: from xaxapp05.zte.com.cn ([10.99.98.109]) by mse-fl1.zte.com.cn with SMTP id 58EA6nPp099586; Sun, 14 Sep 2025 18:06:49 +0800 (+08) (envelope-from xu.xin16@zte.com.cn) Received: from mapi (xaxapp01[null]) by mapi (Zmail) with MAPI id mid32; Sun, 14 Sep 2025 18:06:51 +0800 (CST) Date: Sun, 14 Sep 2025 18:06:51 +0800 (CST) X-Zmail-TransId: 2af968c693bb4ca-669d7 X-Mailer: Zmail v1.0 Message-ID: <20250914180651981vC9sC806WA8UGn7FNbL7N@zte.com.cn> In-Reply-To: <20250914180031197jk6ngo5pQjpXkNtNsjzSo@zte.com.cn> References: 20250914180031197jk6ngo5pQjpXkNtNsjzSo@zte.com.cn Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 From: To: Cc: , , , , , , , , , , , Subject: =?UTF-8?B?W1BBVENIIHYyIDMvNV0gbWVtY2c6IHNob3cga3NtX21lcmdpbmdfcGFnZXMgaW4gbWVtb3J5LnN0YXQ=?= X-MAIL: mse-fl1.zte.com.cn 58EA6nPp099586 X-TLS: YES X-SPF-DOMAIN: zte.com.cn X-ENVELOPE-SENDER: xu.xin16@zte.com.cn X-SPF: None X-SOURCE-IP: 10.5.228.132 unknown Sun, 14 Sep 2025 18:07:00 +0800 X-Fangmail-Anti-Spam-Filtered: true X-Fangmail-MID-QID: 68C693C4.000/4cPkNN28VMz8Xs71 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: xu xin Users can obtain ksm_merging_pages of a cgroup just by: 'cat /sys/fs/cgroup/memory.stat | grep ksm_merging_pages Signed-off-by: xu xin --- mm/ksm.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mm/ksm.c b/mm/ksm.c index 5832159214f8..4cc47ad1e887 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -3312,6 +3312,7 @@ long ksm_process_profit(struct mm_struct *mm) struct memcg_ksm_stat { unsigned long ksm_rmap_items; long ksm_zero_pages; + unsigned long ksm_merging_pages; }; static int evaluate_memcg_ksm_stat(struct task_struct *task, void *arg) @@ -3323,6 +3324,7 @@ static int evaluate_memcg_ksm_stat(struct task_struct= *task, void *arg) if (mm) { ksm_stat->ksm_rmap_items +=3D mm->ksm_rmap_items; ksm_stat->ksm_zero_pages +=3D mm_ksm_zero_pages(mm); + ksm_stat->ksm_merging_pages +=3D mm->ksm_merging_pages; mmput(mm); } @@ -3338,16 +3340,20 @@ void memcg_stat_ksm_show(struct mem_cgroup *memcg, = struct seq_buf *s) /* Just use the global counters when root memcg */ ksm_stat.ksm_rmap_items =3D ksm_rmap_items; ksm_stat.ksm_zero_pages =3D atomic_long_read(&ksm_zero_pages); + ksm_stat.ksm_merging_pages =3D ksm_pages_shared + + ksm_pages_sharing; } else { /* Initialization */ ksm_stat.ksm_rmap_items =3D 0; ksm_stat.ksm_zero_pages =3D 0; + ksm_stat.ksm_merging_pages =3D 0; /* Summing all processes'ksm statistic items */ mem_cgroup_scan_tasks(memcg, evaluate_memcg_ksm_stat, &ksm_stat); } /* Print memcg ksm statistic items */ seq_buf_printf(s, "ksm_rmap_items %lu\n", ksm_stat.ksm_rmap_items); seq_buf_printf(s, "ksm_zero_pages %lu\n", ksm_stat.ksm_zero_pages); + seq_buf_printf(s, "ksm_merging_pages %lu\n", ksm_stat.ksm_merging_pages); } #endif --=20 2.25.1 From nobody Thu Oct 2 17:02:59 2025 Received: from mxhk.zte.com.cn (mxhk.zte.com.cn [160.30.148.35]) (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 956D538FA3; Sun, 14 Sep 2025 10:07:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=160.30.148.35 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757844481; cv=none; b=RIW3x0ksB17RNK/H3ajasr8i/PBWUHKCqlnWL/KrwXuQfRMWGLKEhvh+K1NSac5ZejiNYeskX2lXYg27blyxmGUKVg3sX/oI2zi+yRItiutQIE3tOmQdgJfBVuXtsnj8dpc7dtGuB3BlnwhT0Jmq3AV+b9a9WNt55TyWlBKjCVg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757844481; c=relaxed/simple; bh=ln4AeIiIDMFIQtWmbwMxbhwxK9WZeSnTTugMyTw0B40=; h=Date:Message-ID:In-Reply-To:References:Mime-Version:From:To:Cc: Subject:Content-Type; b=N8nVJ0iajpz2r87gUhA36NYpfMxMGCmVgX3XCva9OlKuZokwfEwB/6cR6AHvYhA4dW25Ev2g/1dfflG0bQAcsFT/A8AV52wzP5lwpd0cocmCDngIcqjSCvWQEqBubLiGf+mqJixlp64WSoTH3PTNRK45R0dZRDrnWz+TrkzGzl0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=zte.com.cn; spf=pass smtp.mailfrom=zte.com.cn; arc=none smtp.client-ip=160.30.148.35 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=zte.com.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=zte.com.cn Received: from mse-fl1.zte.com.cn (unknown [10.5.228.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mxhk.zte.com.cn (FangMail) with ESMTPS id 4cPkPT2RjZz8Xs6w; Sun, 14 Sep 2025 18:07:57 +0800 (CST) Received: from xaxapp04.zte.com.cn ([10.99.98.157]) by mse-fl1.zte.com.cn with SMTP id 58EA7nNc099870; Sun, 14 Sep 2025 18:07:49 +0800 (+08) (envelope-from xu.xin16@zte.com.cn) Received: from mapi (xaxapp01[null]) by mapi (Zmail) with MAPI id mid32; Sun, 14 Sep 2025 18:07:50 +0800 (CST) Date: Sun, 14 Sep 2025 18:07:50 +0800 (CST) X-Zmail-TransId: 2af968c693f6eb9-673c6 X-Mailer: Zmail v1.0 Message-ID: <20250914180750448qMRz3iTon78DoExPyZusD@zte.com.cn> In-Reply-To: <20250914180031197jk6ngo5pQjpXkNtNsjzSo@zte.com.cn> References: 20250914180031197jk6ngo5pQjpXkNtNsjzSo@zte.com.cn Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 From: To: Cc: , , , , , , , , , , Subject: =?UTF-8?B?W1BBVENIIHYyIDQvNV0gbWVtY2c6IGFkZCBwZXItbWVtY2cga3NtX3Byb2ZpdA==?= X-MAIL: mse-fl1.zte.com.cn 58EA7nNc099870 X-TLS: YES X-SPF-DOMAIN: zte.com.cn X-ENVELOPE-SENDER: xu.xin16@zte.com.cn X-SPF: None X-SOURCE-IP: 10.5.228.132 unknown Sun, 14 Sep 2025 18:07:57 +0800 X-Fangmail-Anti-Spam-Filtered: true X-Fangmail-MID-QID: 68C693FD.000/4cPkPT2RjZz8Xs6w Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: xu xin Users can obtain ksm_profit of a cgroup just by: 'cat /sys/fs/cgroup/memory.stat | grep ksm_profit Signed-off-by: xu xin --- mm/ksm.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/mm/ksm.c b/mm/ksm.c index 4cc47ad1e887..c01567a3d5ca 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -3308,11 +3308,18 @@ long ksm_process_profit(struct mm_struct *mm) } #endif /* CONFIG_PROC_FS */ +static inline long ksm_general_profit(void) +{ + return (ksm_pages_sharing + atomic_long_read(&ksm_zero_pages)) * PAGE_SIZ= E - + ksm_rmap_items * sizeof(struct ksm_rmap_item); +} + #ifdef CONFIG_MEMCG struct memcg_ksm_stat { unsigned long ksm_rmap_items; long ksm_zero_pages; unsigned long ksm_merging_pages; + long ksm_profit; }; static int evaluate_memcg_ksm_stat(struct task_struct *task, void *arg) @@ -3325,6 +3332,7 @@ static int evaluate_memcg_ksm_stat(struct task_struct= *task, void *arg) ksm_stat->ksm_rmap_items +=3D mm->ksm_rmap_items; ksm_stat->ksm_zero_pages +=3D mm_ksm_zero_pages(mm); ksm_stat->ksm_merging_pages +=3D mm->ksm_merging_pages; + ksm_stat->ksm_profit +=3D ksm_process_profit(mm); mmput(mm); } @@ -3342,11 +3350,13 @@ void memcg_stat_ksm_show(struct mem_cgroup *memcg, = struct seq_buf *s) ksm_stat.ksm_zero_pages =3D atomic_long_read(&ksm_zero_pages); ksm_stat.ksm_merging_pages =3D ksm_pages_shared + ksm_pages_sharing; + ksm_stat.ksm_profit =3D ksm_general_profit(); } else { /* Initialization */ ksm_stat.ksm_rmap_items =3D 0; ksm_stat.ksm_zero_pages =3D 0; ksm_stat.ksm_merging_pages =3D 0; + ksm_stat.ksm_profit =3D 0; /* Summing all processes'ksm statistic items */ mem_cgroup_scan_tasks(memcg, evaluate_memcg_ksm_stat, &ksm_stat); } @@ -3354,6 +3364,7 @@ void memcg_stat_ksm_show(struct mem_cgroup *memcg, st= ruct seq_buf *s) seq_buf_printf(s, "ksm_rmap_items %lu\n", ksm_stat.ksm_rmap_items); seq_buf_printf(s, "ksm_zero_pages %lu\n", ksm_stat.ksm_zero_pages); seq_buf_printf(s, "ksm_merging_pages %lu\n", ksm_stat.ksm_merging_pages); + seq_buf_printf(s, "ksm_profit %lu\n", ksm_stat.ksm_profit); } #endif @@ -3648,12 +3659,7 @@ KSM_ATTR_RO(ksm_zero_pages); static ssize_t general_profit_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf) { - long general_profit; - - general_profit =3D (ksm_pages_sharing + atomic_long_read(&ksm_zero_pages)= ) * PAGE_SIZE - - ksm_rmap_items * sizeof(struct ksm_rmap_item); - - return sysfs_emit(buf, "%ld\n", general_profit); + return sysfs_emit(buf, "%ld\n", ksm_general_profit()); } KSM_ATTR_RO(general_profit); --=20 2.25.1 From nobody Thu Oct 2 17:02:59 2025 Received: from mxhk.zte.com.cn (mxhk.zte.com.cn [160.30.148.35]) (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 45B7038FA3; Sun, 14 Sep 2025 10:09:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=160.30.148.35 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757844572; cv=none; b=M42s/Duo8YRv3jKK4FowlvFnn0zvKf5UxbBiCO/K8Tznzs/4tvLFaQRfboAAKi2KVu8ERbxBtm9AIhnmuabZYELmbapwkHDETzRxAC8I+cL0xt8HywOhtKiNfHAGo0ZiCSEIsnjFSsqdO8K+Br7TohI9eUinaKSJUWBUqNEL9xo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757844572; c=relaxed/simple; bh=M2ThSKpzt7GdA/27mjv6ElG3/dqKz2T0xkiCRUebYSo=; h=Date:Message-ID:In-Reply-To:References:Mime-Version:From:To:Cc: Subject:Content-Type; b=RgbPQhGaHR+VSN+5pcVKIMmxh9gRPCpbDGzzAox+bHrfbb72TlHQIOggTtSRJvcVsJX4axIbrpFtSvH2LwQvzelYagkAAqqHjtm4tvi6YxmFujZgFZr8NvuhCE3LE4p5Kr0eBVEEElr1FklJGzTzs7Dof55iEKJH9o3+vjt5G8I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=zte.com.cn; spf=pass smtp.mailfrom=zte.com.cn; arc=none smtp.client-ip=160.30.148.35 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=zte.com.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=zte.com.cn Received: from mse-fl2.zte.com.cn (unknown [10.5.228.133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mxhk.zte.com.cn (FangMail) with ESMTPS id 4cPkRB344fz8Xs6y; Sun, 14 Sep 2025 18:09:26 +0800 (CST) Received: from xaxapp04.zte.com.cn ([10.99.98.157]) by mse-fl2.zte.com.cn with SMTP id 58EA9Mnv094684; Sun, 14 Sep 2025 18:09:22 +0800 (+08) (envelope-from xu.xin16@zte.com.cn) Received: from mapi (xaxapp01[null]) by mapi (Zmail) with MAPI id mid32; Sun, 14 Sep 2025 18:09:23 +0800 (CST) Date: Sun, 14 Sep 2025 18:09:23 +0800 (CST) X-Zmail-TransId: 2af968c69453eea-683f6 X-Mailer: Zmail v1.0 Message-ID: <202509141809235737ZDUkOKaORJCGqQOQhM9q@zte.com.cn> In-Reply-To: <20250914180031197jk6ngo5pQjpXkNtNsjzSo@zte.com.cn> References: 20250914180031197jk6ngo5pQjpXkNtNsjzSo@zte.com.cn Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 From: To: Cc: , , , , , , , , , , , Subject: =?UTF-8?B?W1BBVENIIHYyIDUvNV0gRG9jdW1lbnRhdGlvbjogYWRkIEtTTSBzdGF0aXN0aWMgY291bnRlcnMgZGVzY3JpcHRpb24gaW4gY2dyb3VwLXYyLnJzdA==?= X-MAIL: mse-fl2.zte.com.cn 58EA9Mnv094684 X-TLS: YES X-SPF-DOMAIN: zte.com.cn X-ENVELOPE-SENDER: xu.xin16@zte.com.cn X-SPF: None X-SOURCE-IP: 10.5.228.133 unknown Sun, 14 Sep 2025 18:09:26 +0800 X-Fangmail-Anti-Spam-Filtered: true X-Fangmail-MID-QID: 68C69456.000/4cPkRB344fz8Xs6y Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: xu xin This add KSM-related statistic counters description in cgroup-v2.rst, including "ksm_rmap_items", "ksm_zero_pages", "ksm_merging_pages" and "ksm_profit". Signed-off-by: xu xin --- Documentation/admin-guide/cgroup-v2.rst | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/Documentation/admin-guide/cgroup-v2.rst b/Documentation/admin-= guide/cgroup-v2.rst index a1e3d431974c..c8c4faa4e3fd 100644 --- a/Documentation/admin-guide/cgroup-v2.rst +++ b/Documentation/admin-guide/cgroup-v2.rst @@ -1776,6 +1776,23 @@ The following nested keys are defined. up if hugetlb usage is accounted for in memory.current (i.e. cgroup is mounted with the memory_hugetlb_accounting option). + ksm_rmap_items + Number of ksm_rmap_item structures in use. The structure + ksm_rmap_item stores the reverse mapping information for virtual + addresses. KSM will generate a ksm_rmap_item for each + ksm-scanned page of the process. + + ksm_zero_pages + Number of empty pages are merged with kernel zero pages by KSM, + which is only useful when /sys/kernel/mm/ksm/use_zero_pages. + + ksm_merging_pages + Number of pages of this process are involved in KSM merging + (not including ksm_zero_pages). + + ksm_profit + Amount of profitable memory that KSM brings (Saved bytes). + memory.numa_stat A read-only nested-keyed file which exists on non-root cgroups. --=20 2.25.1