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 DF365C3ABA3 for ; Thu, 1 May 2025 04:14:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1DB806B0093; Thu, 1 May 2025 00:14:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 18C6C6B0096; Thu, 1 May 2025 00:14:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 007F56B0098; Thu, 1 May 2025 00:14:27 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id D04F86B0093 for ; Thu, 1 May 2025 00:14:27 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id C04E6C1A6A for ; Thu, 1 May 2025 04:14:27 +0000 (UTC) X-FDA: 83393022174.13.22AA8E2 Received: from mail-pf1-f194.google.com (mail-pf1-f194.google.com [209.85.210.194]) by imf13.hostedemail.com (Postfix) with ESMTP id C54A820005 for ; Thu, 1 May 2025 04:14:25 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=OOsAqGkm; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf13.hostedemail.com: domain of xu.xin.sc@gmail.com designates 209.85.210.194 as permitted sender) smtp.mailfrom=xu.xin.sc@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1746072865; a=rsa-sha256; cv=none; b=zBC/l+/hYl8sryHrLZ6PINgAkaoVFGXcBPceTor/xy7RsNqpbRXU+RtiiB4JZ8NbrHtk3k Mx9aNUj5lTRiHEB9fmutTfuyaYy4+O6u5ZBcC/e3UvyQRTiqNdK4L5mRJF0zXCdgsoKX+h SN4oee2hIrdxThqXv3ecCQlE5/cAxLA= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=OOsAqGkm; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf13.hostedemail.com: domain of xu.xin.sc@gmail.com designates 209.85.210.194 as permitted sender) smtp.mailfrom=xu.xin.sc@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1746072865; 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=mRsldxeP3L7LcldfEvyCBZ645cQKKVexyC6xDBrpilg=; b=3UaMkprf2dzDUnTN1AXyxNMPdoKaZlfyCpdGYSICp6716woQVmpVUMXTeFFifcHGAW9oyu JwVeXCn+q2NCigbKVe1vMyymGtvFkHS/bf0hRNvntFLxIgsxLYF5ZGa1SXzv0IpOxzo/E/ Ki91/PQrDCZ6rvSNZiPXKuhguNnP7qs= Received: by mail-pf1-f194.google.com with SMTP id d2e1a72fcca58-73712952e1cso598614b3a.1 for ; Wed, 30 Apr 2025 21:14:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746072865; x=1746677665; darn=kvack.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=mRsldxeP3L7LcldfEvyCBZ645cQKKVexyC6xDBrpilg=; b=OOsAqGkmvyMicfv89Vn8vGeyRY6kKQtA7iIMrCuPQ0Gh4GxPZ8RPX+3JOo0mHOKb13 TOIYKczwBVQnljObU6lpZZHfuPOyBocA0JcyLujjmiC145Mln8YPmoHzz4O6nwXlsebE PP6xzbYYptuVj3+lLJsqCn6TcdcD3BSOR4VydiRE2S0sJBZvVJHUHDGdVidkjQAwlZ7B Zkbl91JQIhTq+UhAsw+PDzlm2xyTTlihJYYxnhYZSJanCeCBNWIiVR8PrGKgfjk0SlBv cftHx63iMB6n2qJKbH89c/3jXh8jOyjkGL0nrkyVWhX+5uK7B0inhQmYVkBeQA+t647t Tdqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746072865; x=1746677665; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mRsldxeP3L7LcldfEvyCBZ645cQKKVexyC6xDBrpilg=; b=gnju2+ijGF3/aeO6ur09urOq8+azpDGjwA244fF1mMPT5IzHoigXezN6LH8uylqEyt BNB6RmlZzYS5fzowdb3XUDMze/nGgXL7uOtcY4WmgGhcBc3/FAHlOtWNo+ENRF/+jGIz JP0mKxkW6oqRyqm6wvR7C8glZTvGaWoLsI/KwcOQo+HrUznQBE23K2RPndplv5okb0fS N2wTZQ9TpDroqBoHt3TBuY8eydNu1tMaA2kZCDlex5Knm13/++sJ9XeLtORgVb7XJsXK tJtgRxamylPOHoII9TNl17jp9C5vCv+9r+fwoQemWKUDWhNGe8GVUdMK7ZITRJPt+wfg PlMQ== X-Forwarded-Encrypted: i=1; AJvYcCVbzuUoin6+dI6hEvZOs9WgkaN7DvzpRJM/qPBC0sFHjIQHmaid3Msqmtt+svMjkrnZUedHTuPSZg==@kvack.org X-Gm-Message-State: AOJu0YzVTgRbqo50JqNQ/PrZVk7iym+14/G9kw7dF2oZNvF9NqjGeVRk B+VYXvkVeNUyNWvhmpUeHfsOhdG+ZJLe4l+It7HHwBCZv7uqKLvd X-Gm-Gg: ASbGncvtCBgfjvd3D92MG4n5ZTvIM9/e+lNkfDTCHBSff+ZQ7gQR7JOE06r0al9rHcW i/XlnqO0RUmCAnszoMM4KYEk8jI9ksaVmhCiDZF3TO0e2/BitS5z9SquKTE4qbw9v7pa4abBV0u D+SDUvNC3W+/01bQ3K0Ux/7v7XiUVikoSPfGcLpEnU/jUEMaNw+sFoOmj8433a45TK7x1Heph7E FtzyJchyuwgwt0gaPfzJmN+NhHVCNdoXaMgmJ98YiHrwOXqIBa9znRGolsNf7oNGiAWzZ/2Zjp5 d9amf19tNqN/BWbFu5kylAjWPYGWnejV+tCo1cw3zsGx2gJ5WojrBg== X-Google-Smtp-Source: AGHT+IFY/cCkGicCkAIMvgxbCrgAAD6LUmISXFDWa/nrZSZ7OZtQqHaWxeuAu+qJqAIisyQhhXqtSw== X-Received: by 2002:a05:6a00:3e1d:b0:736:9f20:a175 with SMTP id d2e1a72fcca58-740477650ddmr2394745b3a.2.1746072864580; Wed, 30 Apr 2025 21:14:24 -0700 (PDT) Received: from localhost.localdomain ([193.203.214.57]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7403991f046sm2571637b3a.41.2025.04.30.21.14.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Apr 2025 21:14:24 -0700 (PDT) From: xu.xin.sc@gmail.com X-Google-Original-From: xu.xin16@zte.com.cn To: xu.xin16@zte.com.cn Cc: akpm@linux-foundation.org, david@redhat.com, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, wang.yaxin@zte.com.cn, yang.yang29@zte.com.cn, Haonan Chen Subject: [PATCH v2 3/9] memcontrol: introduce ksm_stat at memcg-v2 Date: Thu, 1 May 2025 04:14:18 +0000 Message-Id: <20250501041418.3324279-1-xu.xin16@zte.com.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20250501120854885LyBCW0syCGojqnJ8crLVl@zte.com.cn> References: <20250501120854885LyBCW0syCGojqnJ8crLVl@zte.com.cn> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: C54A820005 X-Stat-Signature: x1odu8sk3j94zcwarmcgjuh456s1qq8g X-Rspam-User: X-HE-Tag: 1746072865-74107 X-HE-Meta: U2FsdGVkX1+/UB8ek6FQk4H/uqUKI5veTWc+rF3QRMMmu1TvE/R2M9mgL/sAfbRdQu/qj2xM3QnauUPybfsjBylWogtDuxNloxWWyYzuE8waBoPUD/5Lfu88nsyAatUotABX4wFkTCqWcdgmj7sn+7E7VU/i1dJhlAw9MtWGhzus3vwX0/ajSMgHcryKQG0GnvRFt4R4B8FKqgZdqrJW2wKhMInEPc+/IdtqfsyPWzVR291vtbc6CEadY1Xsn6M1LSSNHM88rddknyCZA0fMcbDYYUmA/V7PxFaT2hmJjx1Bl6H7BpUGr28ixH6LvjifxsjWs9bN4TsF4JeB7jd0Hoq/BePpmzmyWlmW10xlhWB/qRZ6MMpZIsJoyL4b0j5lbn1zB70AYx9EtHkuu4xuBImJF9zJDfioPKvjurCLLPZ6lk/dH52/J1tPMyyCZunWlcB/WR5Z8g1rZgfHhG+W5uyLhX2d5Qfe1fSx7GjjcHruooTwbq4Z00m0h5DbCZsAjssLPKf9oYXsQnT/b6GMTvOhTdrwk9rdHd/2/l3QUmcfqLl0SZr82qwThEAG9YBBBGspomCYGPa/+ODDRsqwHmenmGRTZHkcxyKheEV1XqBy9czTQ6W//EJz/42Vz3JkPCUpY7rK5koCuGrwMiVigSXFS9oESkGbsmRUxOIJzvdlda1WU1sXJkJTta2yFHnYtXmMNFKbBhPuXjY2JxDUrytlaT/QyUeEKGUAxuXKOYAQ/nOkoVToctfyL8NJXy67BmRoY7ka45QoGCCf1KqQVqavCtjCK1cDLNvvqRLPw5i/x9OtYLW3lFLAnkUHiqE3Yk+xXnGb+5Z9aoEUCtEGLEOMwMxKZug7CsV8DkRRfguDpw6Zm7Zc+M3m5Dq1+CfiwSc5QIdGCLWSp3yUlQ3pckLyQxarQY3C6igfsX3GMkcmp5uPoxhyJAOeM6zzP79jRf2nGpEmiqq6y87EUtk 7cG/Px59 6HJF6+pXBYOSCuyYkN1h329FdpWtbs0LrbS3aa7U2Qqk5ZROc5UGR7TJgdtCPa/g2vJQ4J7qLpbIF1aPYGWFu6QMOEsf1NthOrCL2Jn9Kj7c6FOmK6RV0EeSiwYUaKlHdYVv+YPb4fkwf++2EzrYNkxYKd1r8Tpo6glhARRJBUGNiwYX0MylWTqHwRBew2sVM1/d1zVJAMXdwdVjAt+9iPGONt7u0Yueb5ApegEyW59EpZ+vGIs1LGzhfvOC9+o14rFYAXfZmLM4gtgJodAIDnBGLAH1i5db0HDqGM565ZxcLnlW3q4Q/K/7DtBbVh1ieUq3uhiZGCdfv7aNQAumnVPR+RHNbbWlIZIk+KCCPHk6bxt7NPlSpCdSzVcFw1HTqK91kueVj4PfVKAeOvSKu50kdz+lZvc6arVrhhCR5IVWJJObKNLuQ35yW0nwlFA/FOfnD/1wYl68CXenPMTk5IuvguodJH9j0TXiRiqoMfSoCH/g= 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: 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. However, current cgroup implementations lack support for exposing KSM-related metrics. This patch introduces a new interface named ksm_stat at the cgroup hierarchy level, enabling users to monitor KSM merging statistics specifically for containers where this feature has been activated, eliminating the need to manually inspect KSM information for each individual process within the memcg-v2. Users can obtain the KSM information of a cgroup just by: `cat /sys/fs/cgroup/memory.ksm_stat` Co-developed-by: Haonan Chen Signed-off-by: Haonan Chen Signed-off-by: xu xin --- mm/memcontrol.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 629e2ce2d830..69521a66639b 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -4388,6 +4388,40 @@ static int memory_numa_stat_show(struct seq_file *m, void *v) } #endif +#ifdef CONFIG_KSM +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 = arg; + + mm = get_task_mm(task); + if (mm) { + ksm_stat->ksm_rmap_items += mm->ksm_rmap_items; + mmput(mm); + } + + return 0; +} + +static int memcg_ksm_stat_show(struct seq_file *m, void *v) +{ + struct memcg_ksm_stat ksm_stat; + struct mem_cgroup *memcg = mem_cgroup_from_seq(m); + + /* Initialization */ + ksm_stat.ksm_rmap_items = 0; + /* summing all processes'ksm statistic items of this cgroup hierarchy */ + mem_cgroup_scan_tasks(memcg, evaluate_memcg_ksm_stat, &ksm_stat); + seq_printf(m, "ksm_rmap_items %lu\n", ksm_stat.ksm_rmap_items); + + return 0; +} +#endif + static int memory_oom_group_show(struct seq_file *m, void *v) { struct mem_cgroup *memcg = mem_cgroup_from_seq(m); @@ -4554,6 +4588,12 @@ static struct cftype memory_files[] = { .name = "numa_stat", .seq_show = memory_numa_stat_show, }, +#endif +#ifdef CONFIG_KSM + { + .name = "ksm_stat", + .seq_show = memcg_ksm_stat_show, + }, #endif { .name = "oom.group", -- 2.15.2