From nobody Thu Dec 18 08:10:28 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B9D99EE57DF for ; Mon, 11 Sep 2023 07:55:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234697AbjIKHzl (ORCPT ); Mon, 11 Sep 2023 03:55:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36904 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234808AbjIKHzh (ORCPT ); Mon, 11 Sep 2023 03:55:37 -0400 Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03on20723.outbound.protection.outlook.com [IPv6:2a01:111:f400:7eaf::723]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E4598CE3; Mon, 11 Sep 2023 00:55:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ENRBrncko2IZrJLySO5XTo5zpFNtPe0y1MbRN3POPmZkw+BAh6FuZTqoyLbtUEwRv46T4NhyFc1M6hHusnblqllcF7bdpm+YNziL1JQqEg6ddZS4ETEWp+gArg92HO/qqFN0LFPj84mcdxHDPge5WiJE0vPLOuORwBUXAiEegl48UilT7Mx70FaFdBrg1icgWr2s+ElrkqgPKU4+uSdPY+/YIyvOYYC4qTS5W8r+BEU2sc1LVM09ry/s97xxAnu7NelJjjyreM+y1Fx1khPzVQU2hE/pn3U2Svr/HcISybFH3MmaQgnA1a97vba3zIJXlWs7CR4aJaPB02/BH11kpA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1DKyGwIj4jv7VDoNrsbW4MCGeMC+A7Fjxr12aryd/0k=; b=P3oS0xGEyG/aKRfJcALzD8HK+Vep6qP2TutsmjfZwY9nLU1WwZpwP0w6FK1ule0+cJP9VaCw669uMXuUgKe80i0Zy2Y+cA+X5lpVwGTamkBZJlHWv9fd3nI0qmUg8oC+bz1BT4bS4Cv152YHsfVuYauWaE3Dh7h/HqwRADSuxa8LHvDEZ6snLRiz9LbwFjA4gi3Vk/HUQutbyagb4O4pKoEpREq2rYFiWPyD+5lN97a6tzgE6pTxxqfMBVSx5KSSEBbA9CBwBxWHjZOQiQqvcjgplcNGbSJW6xKGfSB/rwmqxOgXb3K9K4Iqo6o1BoeOoV3txmCHOAUYOhEskaIdhg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nebius.com; dmarc=pass action=none header.from=nebius.com; dkim=pass header.d=nebius.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nebius.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1DKyGwIj4jv7VDoNrsbW4MCGeMC+A7Fjxr12aryd/0k=; b=LujzvkldKVdvzkRN2XebIglZAKv450VcgxhrdZKRo/lHjfcSjBuehaMQAFJFZ2LzKKiPtMvBIS+yXuzP4ERRek9DutT5TGoEtx1qp4NKyY2JTDlW3hEpb84/MdsfcrJG//G7jsINTQhbC8PEyEs2Nz+kS6RQuzx2xjloGmBAsJPoohzvhasnIjSTn6W8A69dAj0Ab31gsSxpFGemRW6igDJbanyfF0NkFJMLz7m8mo2veVn6ZMQplqSqiCCufQaDwZLnRI66FSxjNfj9bacRGfXdjcDKd5+HuUTb0iMvk39CGJxNLsT97OU7ncoBjr/9YAI2Sq7eSZgycySwjLEOkw== Received: from DU0P190MB1860.EURP190.PROD.OUTLOOK.COM (2603:10a6:10:3a4::9) by DBAP190MB0840.EURP190.PROD.OUTLOOK.COM (2603:10a6:10:1a2::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6768.31; Mon, 11 Sep 2023 07:55:15 +0000 Received: from DU0P190MB1860.EURP190.PROD.OUTLOOK.COM ([fe80::1dc2:35fa:896c:8ca3]) by DU0P190MB1860.EURP190.PROD.OUTLOOK.COM ([fe80::1dc2:35fa:896c:8ca3%5]) with mapi id 15.20.6768.029; Mon, 11 Sep 2023 07:55:15 +0000 From: "Yakunin, Dmitry (Nebius)" To: "cgroups@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-mm@kvack.org" CC: NB-Core Team , "tj@kernel.org" , "hannes@cmpxchg.org" , "mhocko@kernel.org" , "Yakunin, Dmitry (Nebius)" , Konstantin Khlebnikov , Andrey Ryabinin Subject: [RFC PATCH 1/3] cgroup: list all subsystem states in debugfs files Thread-Topic: [RFC PATCH 1/3] cgroup: list all subsystem states in debugfs files Thread-Index: AQHZ5IVMonqYoLV7B0qibYNmxbXARA== Date: Mon, 11 Sep 2023 07:55:15 +0000 Message-ID: <20230911075437.74027-2-zeil@nebius.com> References: <20230911075437.74027-1-zeil@nebius.com> In-Reply-To: <20230911075437.74027-1-zeil@nebius.com> Accept-Language: ru-RU, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nebius.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DU0P190MB1860:EE_|DBAP190MB0840:EE_ x-ms-office365-filtering-correlation-id: 1acaef6c-91e9-4e0d-90a1-08dbb29c6f21 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ppn0QukgfN6KAteDgq51Ije4yeAt6vGJHRWzQ5q8Z0BUtjnEiyJsRvQlmAqPzNK9GJDETRcFDmIUHs5b3BwK5ByKAs+Fr8f0ezF2EtU/9+3a0zJF4Ya1kIieQx4qExtqjH5nRP3xAHPiM0s7ewPKSwDG8uDPBdQsXbK4MV4Bij8WeVaI3tlyQIVakc2k+dPyoy3JKaA43AhlRMW7eoNyAk7VJtOIR9xcXoT7/lgVBJS7qxMYfCqRaOllsbzMRqKsBKXA3/D/5mspNYamjvWG6Ti9VMNr4NZELbIK8yA3UOcEAcvkfo4/elBBM7cM9YgWPqFnKXzmahaLPDtgGS7Mub489+XxgRB1b+YWKZQs1u7gjKLCPCRvZ7xi5Wrn4cG6Zj/+P4Livfwzi3wTi7BYnG1ZNEAgkSvYymn5tPV00vjBj26/Eokr7LXfS5gMm6v4+Nf05ZveMrWZvawYBKU+t7iNWIzXC0NYprdBRz0cGJXSBnif/JnmrbOiO4pMAcAgUDG8vtNRtYlFfv4TMIbuKQQg8lJ/QmqyjO7V61doGdr6ffTgRvVXNUOv0zWOlAVP+Oh4+sXdjnlJIbEooHrLDSL254lgu9fbc9dVnhvWk6o= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU0P190MB1860.EURP190.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230031)(136003)(376002)(396003)(366004)(346002)(39830400003)(451199024)(1800799009)(186009)(6486002)(71200400001)(6506007)(36756003)(86362001)(38100700002)(38070700005)(122000001)(26005)(2616005)(1076003)(2906002)(966005)(6512007)(478600001)(83380400001)(5660300002)(41300700001)(4326008)(76116006)(316002)(110136005)(8676002)(8936002)(66446008)(64756008)(54906003)(66476007)(66556008)(66946007);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?Uk1um9NzmTDYpWtZ8u9SzU9Y5/IznmX/vusa9tOa7sCYPmsJ89eb5Q5IZk?= =?iso-8859-1?Q?K+6AjWpAliUZMaIt4y5eqkfKJJ4+m5rRGPmb48MlsvvQMIPhVIH1J4b+R3?= =?iso-8859-1?Q?uQnbS/1E2s99GS2cC3WG9jCQ84YAw+OXkq1rVvH1VUUz94UwiDOpwB1ohY?= =?iso-8859-1?Q?eREBk5zl7nfznUtlVyhjrsCYnOrU/ch8wJKj4Ts3p5j7hVqQpsx6gVp5Id?= =?iso-8859-1?Q?nbaG/MLGF962Lys3pXtGIMH5nU7KMfd4PH+WbRytYKjdD5+hZxtfISdoRA?= =?iso-8859-1?Q?zhxIQWOdNhjS58qkiRoqgrjOE4ulboR0IPns4yHqFhp6+KvAj42qJSkx8L?= =?iso-8859-1?Q?eqWC+lwfWiw9fZn1umZ+zeCE81Njh7mqvk5Ta5yImLYtOfw096pSj4WR/5?= =?iso-8859-1?Q?xjJWIeZy61sKfC8UJBsNEkBgyji+xmDI+Qmw5qsbQefjGKLGxjNsQtWwvC?= =?iso-8859-1?Q?SuBrxd4e0Pmy562AxwncEVGh4/JGhfCHYiG+oAIaKKSm7hdS80CuM0n+Lb?= =?iso-8859-1?Q?xLWZUZwdanqFOctgfv3Kt2XEzFli7bSoYC2TGlJ8iAICmDKanzGGkfPOXF?= =?iso-8859-1?Q?hsCnXb/rAABz7deCl4Yfn0QA+FNGzsPLiJ3Or8NLCKQEDRsSJzqwykHNnP?= =?iso-8859-1?Q?24dnfjg6gDIBsVeroEtVyOFm7zc0aYBe+6icKj/MgqE7vytgCAP4fKOf/i?= =?iso-8859-1?Q?/IR1E8ae7S0csO9J9Gair59S9dIUX0pGA9iauzGkbOnaimfhqPPXlXNVHG?= =?iso-8859-1?Q?hhfVhpvPstLgiN7djmTvoNthFaMK2vIIUjGM53zhRRX061NohGnNlGCBpv?= =?iso-8859-1?Q?okawuSHCObEzzgNtZB7QGkn/LxndobC0UfjKZUeXuL+8zIERkYOiESuSHC?= =?iso-8859-1?Q?mVMOppcSyownRse26XbyEe6CtvG0IzE+JHIe9VjH7Ch2icOvy06qxhpGAA?= =?iso-8859-1?Q?A4KfcqKg8g/RuTBvocuS17GKKvLCzN7fi1d5/aK3n2PtXcwGLkAVV/n0me?= =?iso-8859-1?Q?LIq7odcZH6mAlWWh2x4EGrxM46yA80ZrN40+FXuokaWczw1M71hsmFq5yV?= =?iso-8859-1?Q?FApnMKyD225f2xxbj0mVW+Gjetm8h6A2qrWZloFOfHPxtNvZk3ZyhvbM1M?= =?iso-8859-1?Q?/I+MlkYXiomr2Vr8yT/HMmvbQb1PhNUdwj+QgZ1a09/jUTRKs4Vq0HHLCK?= =?iso-8859-1?Q?RxR2iOEF8ydd24/+PyaeaaAZhbPIUyueq3/QLzSsaPoEZD8ASbzf1oXmn1?= =?iso-8859-1?Q?xQGbeWux7HKJd+e7nEW1P44HfBVgty1FS6msXHumqJXPtjGI5OGc/LeLNA?= =?iso-8859-1?Q?qb3v4UfD7O9wseMFChOKELmwu7fqBbkOdiVvgiTRaMHCvN7jPGaecui86F?= =?iso-8859-1?Q?C3Xdv9DP69c4fYrZXSwHETUSAaRcgBh+kyWRHMR98RskZeZD/37Mcz/4JO?= =?iso-8859-1?Q?VLJ9EAHLGyXejEpU+m4T/ZSlM0HWh7rYpCtd9VtcpSd1n1bvpoSjsYs5ht?= =?iso-8859-1?Q?iw15SLJrSgKVGvzu2Yd6QhFvSipvVT7CybGNaFnLvLg2TO0+GaqQ60acxz?= =?iso-8859-1?Q?tveIQNN3WtuQ8MUDHb+vlzuCJZx9xIaMe85P5ctxax2RK/pPf077rzwIUs?= =?iso-8859-1?Q?w3jNTnKyR58I8=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: nebius.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DU0P190MB1860.EURP190.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 1acaef6c-91e9-4e0d-90a1-08dbb29c6f21 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Sep 2023 07:55:15.1918 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4eb23c52-f3a5-49bc-b555-0b061267a984 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: p3P2kjfGUyyP3F5sEc+FsRNrne79XP4BycDBWoowRaWzffu1QHnaqTTs7Baeq0TD X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAP190MB0840 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" After removing cgroup subsystem state could leak or live in background forever because it is pinned by some reference. For example memory cgroup could be pinned by pages in cache or tmpfs. This patch adds common debugfs interface for listing basic state for each controller. Controller could define callback for dumping own attributes. In file /sys/kernel/debug/cgroup/ each line shows state in format: =3D... [-- =3D... ] Common attributes: css - css pointer cgroup - cgroup pointer id - css id ino - cgroup inode flags - css flags refcnt - css atomic refcount, for online shows huge bias path - cgroup path This patch adds memcg attributes: mem_id - 16-bit memory cgroup id memory - charged pages memsw - charged memory+swap for v1 and swap for v2 kmem - charged kernel pages tcpmem - charged tcp pages shmem - shmem/tmpfs pages Link: https://lore.kernel.org/lkml/153414348591.737150.14229960913953276515= .stgit@buzz Suggested-by: Konstantin Khlebnikov Reviewed-by: Andrey Ryabinin Signed-off-by: Dmitry Yakunin --- include/linux/cgroup-defs.h | 1 + kernel/cgroup/cgroup.c | 101 ++++++++++++++++++++++++++++++++++++ mm/memcontrol.c | 14 +++++ 3 files changed, 116 insertions(+) diff --git a/include/linux/cgroup-defs.h b/include/linux/cgroup-defs.h index 8a0d5466c7be..810bd300cbee 100644 --- a/include/linux/cgroup-defs.h +++ b/include/linux/cgroup-defs.h @@ -673,6 +673,7 @@ struct cgroup_subsys { void (*exit)(struct task_struct *task); void (*release)(struct task_struct *task); void (*bind)(struct cgroup_subsys_state *root_css); + void (*css_dump)(struct cgroup_subsys_state *css, struct seq_file *m); =20 bool early_init:1; =20 diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c index 625d7483951c..fb9931ff7570 100644 --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c @@ -40,6 +40,7 @@ #include #include #include +#include #include #include #include @@ -7068,3 +7069,103 @@ static int __init cgroup_sysfs_init(void) subsys_initcall(cgroup_sysfs_init); =20 #endif /* CONFIG_SYSFS */ + +#ifdef CONFIG_DEBUG_FS +void *css_debugfs_seqfile_start(struct seq_file *m, loff_t *pos) +{ + struct cgroup_subsys *ss =3D m->private; + struct cgroup_subsys_state *css; + int id =3D *pos; + + rcu_read_lock(); + css =3D idr_get_next(&ss->css_idr, &id); + *pos =3D id; + return css; +} + +void *css_debugfs_seqfile_next(struct seq_file *m, void *v, loff_t *pos) +{ + struct cgroup_subsys *ss =3D m->private; + struct cgroup_subsys_state *css; + int id =3D *pos + 1; + + css =3D idr_get_next(&ss->css_idr, &id); + *pos =3D id; + return css; +} + +void css_debugfs_seqfile_stop(struct seq_file *m, void *v) +{ + rcu_read_unlock(); +} + +int css_debugfs_seqfile_show(struct seq_file *m, void *v) +{ + struct cgroup_subsys *ss =3D m->private; + struct cgroup_subsys_state *css =3D v; + /* data is NULL for root cgroup_subsys_state */ + struct percpu_ref_data *data =3D css->refcnt.data; + size_t buflen; + char *buf; + int len; + + seq_printf(m, "css=3D%pK cgroup=3D%pK id=3D%d ino=3D%lu flags=3D%#x refcn= t=3D%lu path=3D", + css, css->cgroup, css->id, cgroup_ino(css->cgroup), + css->flags, data ? atomic_long_read(&data->count) : 0); + + buflen =3D seq_get_buf(m, &buf); + if (buf) { + len =3D cgroup_path(css->cgroup, buf, buflen); + seq_commit(m, len < buflen ? len : -1); + } + + if (ss->css_dump) { + seq_puts(m, " -- "); + ss->css_dump(css, m); + } + + seq_putc(m, '\n'); + return 0; +} + +static const struct seq_operations css_debug_seq_ops =3D { + .start =3D css_debugfs_seqfile_start, + .next =3D css_debugfs_seqfile_next, + .stop =3D css_debugfs_seqfile_stop, + .show =3D css_debugfs_seqfile_show, +}; + +static int css_debugfs_open(struct inode *inode, struct file *file) +{ + int ret =3D seq_open(file, &css_debug_seq_ops); + struct seq_file *m =3D file->private_data; + + if (!ret) + m->private =3D inode->i_private; + return ret; +} + +static const struct file_operations css_debugfs_fops =3D { + .open =3D css_debugfs_open, + .read =3D seq_read, + .llseek =3D seq_lseek, + .release =3D seq_release, +}; + +static int __init css_debugfs_init(void) +{ + struct cgroup_subsys *ss; + struct dentry *dir; + int ssid; + + dir =3D debugfs_create_dir("cgroup", NULL); + if (dir) { + for_each_subsys(ss, ssid) + debugfs_create_file(ss->name, 0644, dir, ss, + &css_debugfs_fops); + } + + return 0; +} +late_initcall(css_debugfs_init); +#endif /* CONFIG_DEBUG_FS */ diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 4b27e245a055..7b3d4a10ac63 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -5654,6 +5654,20 @@ static void mem_cgroup_css_rstat_flush(struct cgroup= _subsys_state *css, int cpu) } } =20 +static void mem_cgroup_css_dump(struct cgroup_subsys_state *css, + struct seq_file *m) +{ + struct mem_cgroup *memcg =3D mem_cgroup_from_css(css); + + seq_printf(m, "mem_id=3D%u memory=3D%lu memsw=3D%lu kmem=3D%lu tcpmem=3D%= lu shmem=3D%lu", + mem_cgroup_id(memcg), + page_counter_read(&memcg->memory), + page_counter_read(&memcg->memsw), + page_counter_read(&memcg->kmem), + page_counter_read(&memcg->tcpmem), + memcg_page_state(memcg, NR_SHMEM)); +} + #ifdef CONFIG_MMU /* Handlers for move charge at task migration. */ static int mem_cgroup_do_precharge(unsigned long count) --=20 2.25.1 From nobody Thu Dec 18 08:10:28 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id EEFF5EE57DF for ; Mon, 11 Sep 2023 07:55:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234882AbjIKHzn (ORCPT ); Mon, 11 Sep 2023 03:55:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36940 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234780AbjIKHzj (ORCPT ); Mon, 11 Sep 2023 03:55:39 -0400 Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03on20723.outbound.protection.outlook.com [IPv6:2a01:111:f400:7eaf::723]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E4F42CDC; Mon, 11 Sep 2023 00:55:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IZ+J06hVKfKF68iCYKvHRa46lza9m9MqAKz5YQbg6DVfa482v5NkXk6dpp7z/ovBxfYQHnb2Ip15uj4oBk0bxeLI48AVC0M+i0v8ArCABFU3+QdKoyLAm0h93omLPUaZuN36Evszvl3zjA+c0eiB7t+gtCo6OiUn9s8hq29l5BCIhk3998LYH1jg/z23TZN4adCMtmoe+ZH+ruKK30liYSfgctEaEjURaTWI9gvarkcdMg5BaYOa74f9X1IyXvL97oJOfTRa3Ac3uP2oAOV8CO50m9/PokpmIEl7lHt5khhFunE/0VpDgu5gQnUIzRKaGgljyeyljWcqycyHau6uNg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=qs1ZCDDoENjULFOlfJgGzX2+wQ3stP8WoMAjcuMWdmo=; b=UD4N8gf7pB/uMDD2QQgLDj77HQCkvVjeeZRFGfp1nFswvhJ4iKOk/OYiDt6umPYq1EDadkHPfpGQBWRgZVy94us861nUZC8cYqgnHUn+e9uVMyyY2qE+jP314ku/PkA5aqGhTRqa366BphVL/N7OlZB3UScrB9Zg8aBY5azehSAOq08hihqm1uCBnaXcT+S6gjKTWLHOSr/YRSOvnBCaZzIsrvWSHdRD3rHgYWe+N2knrZHMPzFHUNJbWgRL/98JrQUXdmgh9/B1sA42juzoTixfxFu9hsqxrqB142lKHHEhBPPQarviM0SEdcHY1nah51cy8sOADRLCIUyT7yU9cw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nebius.com; dmarc=pass action=none header.from=nebius.com; dkim=pass header.d=nebius.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nebius.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qs1ZCDDoENjULFOlfJgGzX2+wQ3stP8WoMAjcuMWdmo=; b=USF3bFUiw13spjOIDG+c2JYMAC+S4pDYVAOMPlwCFud4aMRd5+T4b8YZ51lULULY/SWEK2QFLLys+PNijhefOhx/fY2d6igsG8rLNolOi1bFbt1ianSqXiLS+1+STEU524YPtScyLuXNpWzfUvun104opKX4oSbs7dserEbyTIH3VcOIDzZ92TaueBHACeNveb0kqBvPGdthAXsGxGqSiNL2+RN/SsdNnlSWmoRIv0AaDJUnPr5DKZj9NFDThzPSs1hovPakrhE2QKE6t5xNXxdk6v9vEWwcj7gqRRkEzsX0lnvCPezUhQhabpylnHX8HLR1r00t/AsXioQVuoRG8g== Received: from DU0P190MB1860.EURP190.PROD.OUTLOOK.COM (2603:10a6:10:3a4::9) by DBAP190MB0840.EURP190.PROD.OUTLOOK.COM (2603:10a6:10:1a2::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6768.31; Mon, 11 Sep 2023 07:55:20 +0000 Received: from DU0P190MB1860.EURP190.PROD.OUTLOOK.COM ([fe80::1dc2:35fa:896c:8ca3]) by DU0P190MB1860.EURP190.PROD.OUTLOOK.COM ([fe80::1dc2:35fa:896c:8ca3%5]) with mapi id 15.20.6768.029; Mon, 11 Sep 2023 07:55:20 +0000 From: "Yakunin, Dmitry (Nebius)" To: "cgroups@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-mm@kvack.org" CC: NB-Core Team , "tj@kernel.org" , "hannes@cmpxchg.org" , "mhocko@kernel.org" , "Yakunin, Dmitry (Nebius)" , Konstantin Khlebnikov , Andrey Ryabinin Subject: [RFC PATCH 2/3] proc/kpagecgroup: report also inode numbers of offline cgroups Thread-Topic: [RFC PATCH 2/3] proc/kpagecgroup: report also inode numbers of offline cgroups Thread-Index: AQHZ5IVP2/T8/rYz/kmqVYV4jrzxrQ== Date: Mon, 11 Sep 2023 07:55:20 +0000 Message-ID: <20230911075437.74027-3-zeil@nebius.com> References: <20230911075437.74027-1-zeil@nebius.com> In-Reply-To: <20230911075437.74027-1-zeil@nebius.com> Accept-Language: ru-RU, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nebius.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DU0P190MB1860:EE_|DBAP190MB0840:EE_ x-ms-office365-filtering-correlation-id: 7b404bef-c28b-48e7-e05c-08dbb29c7263 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 4AT0emg6GlZHSr6l27B75O0Xvp9nrRCzuPFfZZxTYSPMAD4SaGpuJWCWlrdoH9kN7iNTGe0ESkMgMAedLtQdbb5TbobkT/JuUVaEKd1F2n+e4aTjiUA8VzgznVQnsxjip9gqdyyF97fWxvUKupube5FaqJ6RWtkNVaz7o3eNfALb0sgYIS03FQB+p7Mn5tflyRXo7n/M571VjXom4/g92ehJKxcCsjeWS3P8qPuVfZFPWcpeqI9UDfxLAG+km7P+VjWzGRItt+/zG1L1L3YIEm8dOLXz8RUkzy8AbIknLTZVSxVYvqmEJGR1XJdzOj3LpxoZIPGqC5XBdfzbTQp5kPobyJAmjYLbR+d0ANQYpMJgKCfV7+zbl+jVfs32jcNJOvb1WXNnCoDDWKzGajR8Lua4n38co8bD/Kmi9YVX1NnNdx7IjQVQzje0fQ9T2OOxA48G/GzgEPpRtGZSYx3DH9Pj7Zp0o9xmqT3SvZaKKzbyfYBWmP+h9I/+MeUGhdPzTc4Bwn3XOYWHhFyoQK2Jg/Woi0PXUrOSouQkRFDfym109h+dtAkuCo2Qr/8AjyuinFmj0mJhZXh+K6YNOySPTmzJG4qSygZROKNSMSqbwSw= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU0P190MB1860.EURP190.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230031)(136003)(376002)(396003)(366004)(346002)(39830400003)(451199024)(1800799009)(186009)(6486002)(71200400001)(6506007)(36756003)(86362001)(38100700002)(38070700005)(122000001)(26005)(2616005)(1076003)(2906002)(966005)(6512007)(478600001)(83380400001)(5660300002)(41300700001)(4326008)(76116006)(316002)(110136005)(8676002)(8936002)(66446008)(64756008)(54906003)(66476007)(66556008)(66946007);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?wS/EC56qsihhzY4AsQPKjooQgVQUPKlM7xdYLN0GbJMs8108NS2ELox30D?= =?iso-8859-1?Q?mwQFj7r7NpAgvnEoRGUW8OAQ7rs6e7vg3xanQqSfZTdVhR0J4j8CEFW/mN?= =?iso-8859-1?Q?jctYqhYuD1uFT1Z+Y2VvjSWtupReKKUKHJFt2P+pW8FMOVpdVgzrg0rtif?= =?iso-8859-1?Q?Ego34kR8UrSG8exCC9neyBtGot2GExS9x3c0TJ04a7nVrqK2iLH0shhovb?= =?iso-8859-1?Q?qt1kuy8JpRrxo69rJSQ40GYMzfcFX9KxWltSo/Jk+nhbSobuLVId68BZT4?= =?iso-8859-1?Q?JxTJ0abRGIpmbzfCIzqK6EWp9Y3RvuY0/7VwXVPWvuskEjn7u1Aw90ylCT?= =?iso-8859-1?Q?qPda+X6YUo/IvHq/wBAw2hxdcAconl9LOFJdykwasl+UBf5AcfFHfPdDFl?= =?iso-8859-1?Q?e69ZC59BkIxmVdrymBybS//AIpGsgrgMXTkzTV2vUYcZTl1zOg6XkSKazh?= =?iso-8859-1?Q?3YIKUEBRiaN3n7tXotKAJYGtKLNNWLugCECYPAT5x6Vys+dCfO0mH9tS6S?= =?iso-8859-1?Q?1blgcJo/9LCeqtpbRhVJ7hXoJ8Qcx7Sfn4NhiH47Mh00uCvQyUFO3DoK9e?= =?iso-8859-1?Q?ZUJoMGNQjAWqMKSqWRXORT3gD/4Yl7JwcfAZaDNCUcdb0LTZUP1bwWCjd0?= =?iso-8859-1?Q?y3oNho+tJoQrwzfLJ6uNS3CtFPokEqBCOw3emS7fEJ7JWbWnpOfZvFwkZj?= =?iso-8859-1?Q?OX1dreoEIpRS7gvPeuD+Uk17xCPkuybXtPSGD7bdEWBq/k8qy6YEKSO0vQ?= =?iso-8859-1?Q?2ShKfi460eh0WtcUpWWRRAXWPPPLvcgpUPjK42uI6vLx9eH59ZW4fZ84eK?= =?iso-8859-1?Q?hZCkicnWFAVk5EpN9Ldf3atIUWRRFDhfjBsqvP0zgZdUxFXIduRHm1txOX?= =?iso-8859-1?Q?7W6StKKVAt3I9qJnhC9FuWfJ9doDOI24L9a/b4nJHnzGoBWCI9c4/RVdoa?= =?iso-8859-1?Q?Vvy4aUE9jvskZytC7umUabd/VPLsMuACbr8Z8E/KSRDuiWQ0k1/HBCCujM?= =?iso-8859-1?Q?t9GAI/SodWNJWaLVRVO+msPOFpgxRNfkVobrb2b4+/5BB74mg7JdxFij8X?= =?iso-8859-1?Q?WXqQ63lxNlYdgYlmbT9JQfNbRkTJCzPbFd3o/nHxFgVSjphCh6uitYlbha?= =?iso-8859-1?Q?e9Dx+skImnVLKVkrWZ5wTiApEalUpYciWMwzXkrjOSuVuMMgIeDLn4Fk6R?= =?iso-8859-1?Q?FP6ExVKrrgRVAU0heP1MVTdilHS+SNhCUHSvUMcoa2yOnGVeYn7rbuLOiv?= =?iso-8859-1?Q?kQVOic7J2+GXjCvAl2xAGnpxC7T4qv1+Xrm0kAKUBNtmkhyPshbg2Bo5Fi?= =?iso-8859-1?Q?gbg2Jn/2alOsamKd1cVVoUPoNI4Yo0bwRdF5A7ByDDlc7QaelrvWBbyHmP?= =?iso-8859-1?Q?j/VaMDXWFYAWKEQlVHm0iGJvp7YWwC/lWGJJI4kDYjrqRpvWT/eUWUwdxv?= =?iso-8859-1?Q?sPshHQmUDGPSvffjKYxHX08XIk0VQ5/ZnyxYyz9kbp2n3prjTwS5JvbEjX?= =?iso-8859-1?Q?GhSY0ZHnYZDUWwPk0RGl6HzjNhJyiNq/V953wxogIiU/2FAYTMYxtCtcuy?= =?iso-8859-1?Q?MGW6nqDwbMjfi7TUN6zL+WAlaUsp5SAdDtKYwWI8rGNpPG6N+8/m7htF9P?= =?iso-8859-1?Q?Nua5krdhRKzLw=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: nebius.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DU0P190MB1860.EURP190.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 7b404bef-c28b-48e7-e05c-08dbb29c7263 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Sep 2023 07:55:20.6506 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4eb23c52-f3a5-49bc-b555-0b061267a984 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: cvbHEnOFef1b0DKBLx7L0hvqK6hxIQVP08aCXx6Inpt8NEyYXq/GRyv5FuUD/kK+ X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAP190MB0840 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" By default this interface reports inode number of closest online ancestor if cgroups is offline (removed). Information about real owner is required for detecting which pages keep removed cgroup. This patch adds per-file mode which is changed by writing 64-bit flags into opened /proc/kpagecgroup. For now only first bit is used. Link: https://lore.kernel.org/lkml/153414348994.737150.10057219558779418929= .stgit@buzz Suggested-by: Konstantin Khlebnikov Reviewed-by: Andrey Ryabinin Signed-off-by: Dmitry Yakunin --- fs/proc/page.c | 24 ++++++++++++++++++++++-- include/linux/memcontrol.h | 2 +- mm/memcontrol.c | 5 +++-- mm/memory-failure.c | 2 +- 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/fs/proc/page.c b/fs/proc/page.c index 195b077c0fac..ae6feca2bbc7 100644 --- a/fs/proc/page.c +++ b/fs/proc/page.c @@ -278,6 +278,7 @@ static const struct proc_ops kpageflags_proc_ops =3D { static ssize_t kpagecgroup_read(struct file *file, char __user *buf, size_t count, loff_t *ppos) { + unsigned long flags =3D (unsigned long)file->private_data; const unsigned long max_dump_pfn =3D get_max_dump_pfn(); u64 __user *out =3D (u64 __user *)buf; struct page *ppage; @@ -301,7 +302,7 @@ static ssize_t kpagecgroup_read(struct file *file, char= __user *buf, ppage =3D pfn_to_online_page(pfn); =20 if (ppage) - ino =3D page_cgroup_ino(ppage); + ino =3D page_cgroup_ino(ppage, !(flags & 1)); else ino =3D 0; =20 @@ -323,10 +324,29 @@ static ssize_t kpagecgroup_read(struct file *file, ch= ar __user *buf, return ret; } =20 +static ssize_t kpagecgroup_write(struct file *file, const char __user *buf, + size_t count, loff_t *ppos) +{ + u64 flags; + + if (count !=3D 8) + return -EINVAL; + + if (get_user(flags, buf)) + return -EFAULT; + + if (flags > 1) + return -EINVAL; + + file->private_data =3D (void *)(unsigned long)flags; + return count; +} + static const struct proc_ops kpagecgroup_proc_ops =3D { .proc_flags =3D PROC_ENTRY_PERMANENT, .proc_lseek =3D mem_lseek, .proc_read =3D kpagecgroup_read, + .proc_write =3D kpagecgroup_write, }; #endif /* CONFIG_MEMCG */ =20 @@ -335,7 +355,7 @@ static int __init proc_page_init(void) proc_create("kpagecount", S_IRUSR, NULL, &kpagecount_proc_ops); proc_create("kpageflags", S_IRUSR, NULL, &kpageflags_proc_ops); #ifdef CONFIG_MEMCG - proc_create("kpagecgroup", S_IRUSR, NULL, &kpagecgroup_proc_ops); + proc_create("kpagecgroup", 0600, NULL, &kpagecgroup_proc_ops); #endif return 0; } diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index 222d7370134c..bbbddaa260d3 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h @@ -892,7 +892,7 @@ static inline bool mm_match_cgroup(struct mm_struct *mm, } =20 struct cgroup_subsys_state *mem_cgroup_css_from_folio(struct folio *folio); -ino_t page_cgroup_ino(struct page *page); +ino_t page_cgroup_ino(struct page *page, bool online); =20 static inline bool mem_cgroup_online(struct mem_cgroup *memcg) { diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 7b3d4a10ac63..48cfe3695e06 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -380,6 +380,7 @@ struct cgroup_subsys_state *mem_cgroup_css_from_folio(s= truct folio *folio) /** * page_cgroup_ino - return inode number of the memcg a page is charged to * @page: the page + * @online: return closest online ancestor * * Look up the closest online ancestor of the memory cgroup @page is charg= ed to * and return its inode number or 0 if @page is not charged to any cgroup.= It @@ -390,7 +391,7 @@ struct cgroup_subsys_state *mem_cgroup_css_from_folio(s= truct folio *folio) * after page_cgroup_ino() returns, so it only should be used by callers t= hat * do not care (such as procfs interfaces). */ -ino_t page_cgroup_ino(struct page *page) +ino_t page_cgroup_ino(struct page *page, bool online) { struct mem_cgroup *memcg; unsigned long ino =3D 0; @@ -399,7 +400,7 @@ ino_t page_cgroup_ino(struct page *page) /* page_folio() is racy here, but the entire function is racy anyway */ memcg =3D folio_memcg_check(page_folio(page)); =20 - while (memcg && !(memcg->css.flags & CSS_ONLINE)) + while (memcg && online && !(memcg->css.flags & CSS_ONLINE)) memcg =3D parent_mem_cgroup(memcg); if (memcg) ino =3D cgroup_ino(memcg->css.cgroup); diff --git a/mm/memory-failure.c b/mm/memory-failure.c index 5b663eca1f29..6734489b2435 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -267,7 +267,7 @@ static int hwpoison_filter_task(struct page *p) if (!hwpoison_filter_memcg) return 0; =20 - if (page_cgroup_ino(p) !=3D hwpoison_filter_memcg) + if (page_cgroup_ino(p, true) !=3D hwpoison_filter_memcg) return -EINVAL; =20 return 0; --=20 2.25.1 From nobody Thu Dec 18 08:10:28 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 91035EE7FF4 for ; Mon, 11 Sep 2023 07:55:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234927AbjIKHzt (ORCPT ); Mon, 11 Sep 2023 03:55:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59198 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234824AbjIKHzm (ORCPT ); Mon, 11 Sep 2023 03:55:42 -0400 Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03on20723.outbound.protection.outlook.com [IPv6:2a01:111:f400:7eaf::723]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9A22BCCD; Mon, 11 Sep 2023 00:55:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MHDtowSMnFUQguuso1HC6RoDLD8ms0IILc+9mL3TNfPHXg/ga3tuUSAJhq8g4J4rrZXlsNaF38EmTeW2xGlMUmN9e/5+wckMuMpvdLxNvJlhckavbGh/YYLr5aVCHya1/PNo6/DwgV9Ixy7PwXHIrGqKv4C9tZb/IR9jC/XZqPtVoQEIQB1f7HS+2NWr18yTwOJ5g98YZbbn3S7Vl2uZtpbaVREDaiMSCd4lrSnINocZweyzUHrJqM36tkocNLFACWpqnfeZGEhUz1HmC96I8y6N09J/dXbfuCelPAlxnCL17vYmZ6ssKfTzfWBR2FT/p/miRu6SCXjyVO/JUH2AHw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=djIfp3mP/EaWX+nVlS1KCxNUabPAfr87Moa3tT7pOBI=; b=NUbosNja4+kIb6OYBjQhI+WeDLZxswcE7QdKyoez3AF6CyfOIjBSltqbbNpMOXe1jxQKxU9Lt3s4lglWvWvf0t8y39egyXkoRgw+bVCs7JC6ksrtSAv4F2W0qgFoEIh/Q42BZK25dSxnwSIVQ5dRTaHiTE3HQM5VA9YC8fTUeEeAFEMx0yQbjiHsY2PjagN2Q+GJQ5XJKgU6m672olUYT/SCGsU5UmG8oFl2+9/oStxi+tnY8c1P4jD5M9qXqFulZa1o9PDONxnJBBzzZycQ1GTp8qsJt0MGPknuzk9ByhnqHyl+4g6f/AqINgsubKd20BQ53bDJlg3jL5/sovNAEw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nebius.com; dmarc=pass action=none header.from=nebius.com; dkim=pass header.d=nebius.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nebius.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=djIfp3mP/EaWX+nVlS1KCxNUabPAfr87Moa3tT7pOBI=; b=WhbBLQeEOyvzsdmhSh4D9X4EVIOvGwUplB9RcpcNRz7ONfTJ2sqnBcn8htUdIbXqC4klOgrdbajGO7hF96ht5rUy1LxyXzrQBkkZcVH9HR5d+0w9s3h8ldgKBJJwM1YKg4JZWESHK7KjNx1+aAVGyBTWokjDY4y2lM4UyQMWgeuGfvcKEi8QmhFlmo+YKp2/iHXdaQ4zJZVUYQg+NIo0t8nPz+rkzxmTSsbm4b9yTvzxRGy/BlxYl9Nf3vKFE07smHIY7qabntYKhcMclw4pfADwCZFh2TmAj3Zu9NQ+Yq6mEBqOHPtEF0/aLG4VVntX7y5bFRJTcNpSeLi+PAFITQ== Received: from DU0P190MB1860.EURP190.PROD.OUTLOOK.COM (2603:10a6:10:3a4::9) by DBAP190MB0840.EURP190.PROD.OUTLOOK.COM (2603:10a6:10:1a2::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6768.31; Mon, 11 Sep 2023 07:55:23 +0000 Received: from DU0P190MB1860.EURP190.PROD.OUTLOOK.COM ([fe80::1dc2:35fa:896c:8ca3]) by DU0P190MB1860.EURP190.PROD.OUTLOOK.COM ([fe80::1dc2:35fa:896c:8ca3%5]) with mapi id 15.20.6768.029; Mon, 11 Sep 2023 07:55:23 +0000 From: "Yakunin, Dmitry (Nebius)" To: "cgroups@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-mm@kvack.org" CC: NB-Core Team , "tj@kernel.org" , "hannes@cmpxchg.org" , "mhocko@kernel.org" , "Yakunin, Dmitry (Nebius)" , Konstantin Khlebnikov , Andrey Ryabinin Subject: [RFC PATCH 3/3] tools/mm/page-types: add flag for showing inodes of offline cgroups Thread-Topic: [RFC PATCH 3/3] tools/mm/page-types: add flag for showing inodes of offline cgroups Thread-Index: AQHZ5IVR2s/Ayjgc40OYZOhxdjcOng== Date: Mon, 11 Sep 2023 07:55:23 +0000 Message-ID: <20230911075437.74027-4-zeil@nebius.com> References: <20230911075437.74027-1-zeil@nebius.com> In-Reply-To: <20230911075437.74027-1-zeil@nebius.com> Accept-Language: ru-RU, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nebius.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DU0P190MB1860:EE_|DBAP190MB0840:EE_ x-ms-office365-filtering-correlation-id: 4dc5815f-838b-4323-a31a-08dbb29c7421 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: S/nw/9fnuoCDlr6bgCKlUQlScBCrO6ZS9t9dwN7dzTnBAuYHuWooJthI5ei5buYZvcFl9NvXCd1kj8nG7hufaAYjfl3sp20QmZsXaE/NZvEb8zSzPFRRg7NrrhKybxlobDiQlHZVMDOBUUoajGg1Bc/yItGXPX8cLxFcWwi0m79c+I9uYSJXcZ6D9W7icG/UCOKVaz/ia430RACQYqAQOFnkxau3NC31IVJHymfi2xKBEXxvGshHMjgcuFJy+9liAE+KB0SuCNPTP0McsjuP4hArUSvnbG88hO0/4OYXxnzQLGN0cSZzyQfFNhPK1pD6xTkNB37pqHL9ckWaBUZRGslpVGTbnGGPYeVVIuh8PaOT9CB/ww4pAz2qZDy0GkXFmyVqPWDFaebSbr1rVhiXJNvZ9JqLLPcJl+Wy5BFcjnrPihDxqsS3EsYNpiYCaGGXC+92R/i/T4sw+sNnLOsyp5cMwH6Dxg14GaJjuW30n6RvvOZ2StF06vnbASMJqyDfUIYYDxfT+mk7/wxd17LK5KZQ5xODgWc5LVP/bgz4Bixzpy+tOhC3QxiJLpWkoh/S7vXDEhGr+YRxyFU+Udoz47W7gnV9xrYHk+OPN4s14ZY= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU0P190MB1860.EURP190.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230031)(136003)(376002)(396003)(366004)(346002)(39830400003)(451199024)(1800799009)(186009)(6486002)(71200400001)(6506007)(36756003)(86362001)(38100700002)(38070700005)(122000001)(26005)(2616005)(1076003)(2906002)(966005)(6512007)(478600001)(83380400001)(5660300002)(41300700001)(4326008)(76116006)(316002)(110136005)(8676002)(8936002)(66446008)(64756008)(54906003)(66476007)(66556008)(66946007);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?Ow35UQh0oVf9gSmNT3Xd61xsGwqQmt7DDWm+gtn/RZC32zdTeV9eZ4FXGZ?= =?iso-8859-1?Q?iRgMXzHZt1OI/6mD0C/kZTujObGhswrj9tE4U8CVxNgtm3n0D2COAhbe3Y?= =?iso-8859-1?Q?UkV1qlGfgly93fEw9J8R9WunBKLEVyzqA73gGQwMom4zQAmsqJQOwws8fy?= =?iso-8859-1?Q?E6a9EaSiDV058YC1emqbfqRdLpH3DH/XXoOQkhxGICRnWQpwGz70flKGLa?= =?iso-8859-1?Q?zppYaT0FkxWvhnIZlv/vIn0XX1gFjGzkk5K4EVUf3MsWT+tkTO91OOJ+Y3?= =?iso-8859-1?Q?+jNynY10Sr0GmWM+Onv4R9/PraGKXCaQ4gDPLt6bAhEUr3aYjXFrd7QD7a?= =?iso-8859-1?Q?9LPW9deMiru2UvurkmhKuVDOrNCdSS7XSDmPTuwQ8xJBcfAgoZKY1xwkIa?= =?iso-8859-1?Q?K2Eof9+jG3a7+jtpU/MLk6TWtMxEvInPpMn/Fs70IrfmtmSzwhyOmGSVQP?= =?iso-8859-1?Q?J5TYYcwU9Svyr9LADQxlEBOj1KJHetkpae2CE76hR3rMATHYJFBBZuH6Y7?= =?iso-8859-1?Q?icGwOq/rl1Uc7bPke5eO56mkkfnnV131ib51rwGoN4TGvP0FJqXm4BIxAN?= =?iso-8859-1?Q?9s5F3vZW7cIYF7heI+ZdOyVM40J941W8MrAaU1tMyEWSRvYp9ArfmzYb/i?= =?iso-8859-1?Q?PHpFFXXJD7GeS6bfv85El77f2DQQEVPkh5FBDuckVtwdpPU6wpqSOPQY3U?= =?iso-8859-1?Q?JAE05SvC0VFfJ73VAPXjkw0zvTTueNqUtILauE+zO6OcXOVOSu+MErqRSU?= =?iso-8859-1?Q?g/vV4ZrI7PrmfBc/2xPsL0x5Q9IJZL0KLcSUTMUy2I33v2V5tAMdMs4wZP?= =?iso-8859-1?Q?YXnAhwzEGaPSx90kn1ZakSEE2MF9q+w9XCdwz4wjto9w/kkmvTHXw4Bc35?= =?iso-8859-1?Q?r8qOZxQ2/cVt3cpyh2uFC1Z/u7fECJhc1jaK/XWoK5YcRP0+yUduqvfn/R?= =?iso-8859-1?Q?SgVj+3CCC0TeCE4xZ0TKXVlOsFIxtQHOl+oQf5+vgf78BVbKEsPUhARYQz?= =?iso-8859-1?Q?mDO7/77bPnieuH8OoIoqJU+cTs0xGEi4KIT+fxoCGZcmkDTdVQ+NQYT3Yv?= =?iso-8859-1?Q?6WFXQxG6WSZeA0RL+jqlDr1qOzWwUw2Y78M6TF5rRKzK9OnBksL64ROHu8?= =?iso-8859-1?Q?plk39Mj63cHuToy3cy67bjfI/yTo37SbWVWpeD85RC+Lp7b7TVs/8oKVh6?= =?iso-8859-1?Q?iP6XYlihIii8BemHnGrUOCUbAmUmqiUxLlIc1S6f7m/KCqnrpRcIx4poqd?= =?iso-8859-1?Q?j9nnlIHhuVMUUMkK9HtCrCwboNPdaRl9c3pZuWADwD46lhfRtDi70vS9eR?= =?iso-8859-1?Q?gkNAwBAEiTDJLAJJXw4hl2SOIaiGwXUls2QFUpfD610b4A8vyGnQLp7tqH?= =?iso-8859-1?Q?O7DxG+iYom5mnhwqQ7U2uzr9VUQNhQd+mVpFlC5rLay+gfKkpQKtNxIU+5?= =?iso-8859-1?Q?kNWkQ8B67XhL3AQGzIACrptVO5jeRGV7Qy1dPBQBnawkrE5pzkJu1sW2Fy?= =?iso-8859-1?Q?KsuWTI9K7bBKS34B2tQpJ+UvSOs/XEUy6NlgPpTxkh1JsHelDXNCAXxMlg?= =?iso-8859-1?Q?KNUw1ZhYvpsFyHUpEmuGURZadZ4Eyc8HOGOGWNbC4MqqNRa6NYiO7DeMXS?= =?iso-8859-1?Q?9qjYquJB2klo8=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: nebius.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DU0P190MB1860.EURP190.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 4dc5815f-838b-4323-a31a-08dbb29c7421 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Sep 2023 07:55:23.6059 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4eb23c52-f3a5-49bc-b555-0b061267a984 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: wE5N7L6IZZVkOB5GEJdcYv6XdEDFT0xCw9ChgezIpIfL0HIkzUYoYURWh5Bc6Qvj X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAP190MB0840 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" With flag -R|--real-cgroup page-types will report real owner. Link: https://lore.kernel.org/lkml/153414349419.737150.8224164787883146532.= stgit@buzz Suggested-by: Konstantin Khlebnikov Reviewed-by: Andrey Ryabinin Signed-off-by: Dmitry Yakunin --- tools/mm/page-types.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/tools/mm/page-types.c b/tools/mm/page-types.c index 8d5595b6c59f..f26035b362d2 100644 --- a/tools/mm/page-types.c +++ b/tools/mm/page-types.c @@ -161,6 +161,7 @@ static pid_t opt_pid; /* process to walk */ const char *opt_file; /* file or directory path */ static uint64_t opt_cgroup; /* cgroup inode */ static int opt_list_cgroup;/* list page cgroup */ +static int opt_real_cgroup;/* list page cgroup */ static int opt_list_mapcnt;/* list page map count */ static const char *opt_kpageflags;/* kpageflags file to parse */ =20 @@ -837,6 +838,7 @@ static void usage(void) " -l|--list Show page details in ranges\n" " -L|--list-each Show page details one by one\n" " -C|--list-cgroup Show cgroup inode for pages\n" +" -R|--real-cgroup Show real offline cgroups\n" " -M|--list-mapcnt Show page map count\n" " -N|--no-summary Don't show summary info\n" " -X|--hwpoison hwpoison pages\n" @@ -1257,6 +1259,7 @@ static const struct option opts[] =3D { { "list" , 0, NULL, 'l' }, { "list-each" , 0, NULL, 'L' }, { "list-cgroup", 0, NULL, 'C' }, + { "real-cgroup", 0, NULL, 'R' }, { "list-mapcnt", 0, NULL, 'M' }, { "no-summary", 0, NULL, 'N' }, { "hwpoison" , 0, NULL, 'X' }, @@ -1273,7 +1276,7 @@ int main(int argc, char *argv[]) page_size =3D getpagesize(); =20 while ((c =3D getopt_long(argc, argv, - "rp:f:a:b:d:c:CilLMNXxF:h", + "rp:f:a:b:d:c:CRilLMNXxF:h", opts, NULL)) !=3D -1) { switch (c) { case 'r': @@ -1297,6 +1300,9 @@ int main(int argc, char *argv[]) case 'C': opt_list_cgroup =3D 1; break; + case 'R': + opt_real_cgroup =3D 1; + break; case 'd': describe_flags(optarg); exit(0); @@ -1338,7 +1344,15 @@ int main(int argc, char *argv[]) if (!opt_kpageflags) opt_kpageflags =3D PROC_KPAGEFLAGS; =20 - if (opt_cgroup || opt_list_cgroup) + if (opt_real_cgroup) { + uint64_t flags =3D 1; + + kpagecgroup_fd =3D checked_open(PROC_KPAGECGROUP, O_RDWR); + if (write(kpagecgroup_fd, &flags, sizeof(flags)) < 0) { + perror(PROC_KPAGECGROUP); + exit(EXIT_FAILURE); + } + } else if (opt_cgroup || opt_list_cgroup) kpagecgroup_fd =3D checked_open(PROC_KPAGECGROUP, O_RDONLY); =20 if (opt_list && opt_list_mapcnt) --=20 2.25.1