From nobody Sun Feb 8 14:53:00 2026 Received: from SEYPR02CU001.outbound.protection.outlook.com (mail-koreacentralazon11013018.outbound.protection.outlook.com [40.107.44.18]) (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 D216E22C35E; Thu, 24 Apr 2025 12:10:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.44.18 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745496629; cv=fail; b=lHMmFlzrxTZO6DO1DvjvwYGUJp2aDkfI197m0NNz4vjRshHYt/bQrdnRmcdWeOUt6MiJ37CeR0E6LsgFjE94CMsmW/HQwP+Argu9ios7Pd0VcC7VvL3pXyDSHYxJibeBSmu8ZUpIbgYgo4aN+5NEh+7S7F167x0lNrHC7AOg6so= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745496629; c=relaxed/simple; bh=9Zj0Xe+qTY2mi+3frp4QttQJQh+cS7tcI92RKJylvNs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=oeqppZQD+4A/3hcvLjjyM2yZt5pWnPD7vLUUso2jzbnRcplyBtjIjwtnSwMVPZg4u8GHttpji4E6hAQc7ogCl2h/In3V4W2eXSHoEmOLHvkjgcQGy4QY/6yc5UfHm5+uK44K8oUmli3kdb9crFMcNbbMaC/YLnKQgSJi23HiZNY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=vivo.com; spf=pass smtp.mailfrom=vivo.com; dkim=pass (2048-bit key) header.d=vivo.com header.i=@vivo.com header.b=gzDhZ2H0; arc=fail smtp.client-ip=40.107.44.18 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=vivo.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=vivo.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=vivo.com header.i=@vivo.com header.b="gzDhZ2H0" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=izK7hes6Hh6aOHX0QN85FGJGyFr4QR5uCzT5iiBWK5F1NSxER8yIeF46aHY3lwZCUR0dRAvHzRdA+wtOw2BtxNs0KPDR2634uLcye3J84tg172047hEraEr2XB8q6suBsY8QYAFlHxwcFfGBfc0Pau+qpX2SQM+Qbu9JIsEh9NpY303P9baROdWtP7S1KBFb/6Y7FygKHXbZntLPSYXWDHdXXbjGqo7XGlulUEJIefdXVsjT78IKEDaLrsQXtzz0RTWXnLoIRlecOfjsUf546J3Vnez54vhhrsAOI/K2HCA9Z5OlyhMDq/Gu93HKLPLblRQOj3SsRhEzdmZH2onT2Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=XTG9y9RUaNT3fbhnMONNS+cTgOS+hXCV2Q4q50H2Hqo=; b=JE1ueWoifp+V0KQvivxfTp7HXt4PEd7oc2RPgk4SAQrWTVfaL2zRSvBUMuj2EhjZ8U1kuQ51mHLvPV4mwngT5jFxHxvchn4kPIernlDUBH46vtc6LH3I3cEET4p1p0LDC++s7BmVklhOzuqPYkLvEPyfJGutdFw40UEJFv5/inMuisFdbb7dGr6iAYRutJjaLSj1AYo4Y2QuYrsC3SBp0XsX+EdVNJjQxjHAVk4xeaMwq2jNV27d2V15vQPzMq00gUG7vMtyOsZ9792MqdFI3u7I9GT2KCaQSfR9yyTXGXXJcYzO3FOQqZl+dxnMBSTQ9V+SGxLAkV/d74X2ysqdEg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vivo.com; dmarc=pass action=none header.from=vivo.com; dkim=pass header.d=vivo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vivo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XTG9y9RUaNT3fbhnMONNS+cTgOS+hXCV2Q4q50H2Hqo=; b=gzDhZ2H0CZtAueysYX/g/iL60aR6qqIH1yGTE6fmX/woViid7nwgY1L+CRD8pCNZCua/Y7xd0S3QdocPUrlqHD4uzqEfc5wXGzhxCm1O3ZW5gzlcA3CzGDUQQZe5QblFIi4R6JtW21AHcib8DC91326ASK/44e/G4nJil0u8gcM2dND63VqssPnbESBhYA+M4jWiFMHpyQBeizhMfFdBwsS+veFnsuTk1gBBXSuBvlCC6GmdRluU8feXK6qKte4R7k1vLP2ZQW1+BSM+WVgkP/wupyMIt+P0VG53xtPqIu0PZBDMV5W72x1hvv/IU6zHRZEdIm8nOXRGwFHPV8xb5g== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=vivo.com; Received: from PUZPR06MB5676.apcprd06.prod.outlook.com (2603:1096:301:f8::10) by SEZPR06MB6231.apcprd06.prod.outlook.com (2603:1096:101:e8::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8678.25; Thu, 24 Apr 2025 12:10:22 +0000 Received: from PUZPR06MB5676.apcprd06.prod.outlook.com ([fe80::a00b:f422:ac44:636f]) by PUZPR06MB5676.apcprd06.prod.outlook.com ([fe80::a00b:f422:ac44:636f%6]) with mapi id 15.20.8632.036; Thu, 24 Apr 2025 12:10:22 +0000 From: Huan Yang To: Johannes Weiner , Michal Hocko , Roman Gushchin , Shakeel Butt , Muchun Song , Andrew Morton , Petr Mladek , Sebastian Andrzej Siewior , Huan Yang , Francesco Valla , Huang Shijie , KP Singh , "Paul E. McKenney" , Rasmus Villemoes , "Uladzislau Rezki (Sony)" , Guo Weikang , Raul E Rangel , cgroups@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Boqun Feng , Geert Uytterhoeven , Palmer Dabbelt Cc: opensource.kernel@vivo.com Subject: [PATCH v2 1/3] mm/memcg: use kmem_cache when alloc memcg Date: Thu, 24 Apr 2025 20:09:27 +0800 Message-ID: <20250424120937.96164-2-link@vivo.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250424120937.96164-1-link@vivo.com> References: <20250424120937.96164-1-link@vivo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2PR02CA0004.apcprd02.prod.outlook.com (2603:1096:4:194::14) To PUZPR06MB5676.apcprd06.prod.outlook.com (2603:1096:301:f8::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PUZPR06MB5676:EE_|SEZPR06MB6231:EE_ X-MS-Office365-Filtering-Correlation-Id: cc007d01-5a7f-441a-a0b5-08dd8328fced X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|52116014|7416014|376014|921020|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?5/a75LKxcGjVV9m14ZISU7a65nBPJ5ItXvQzlKHyAHXK0mFMZwm0FgOlQKmn?= =?us-ascii?Q?4268e57/8apjJt++rpDQx/q2yOGSk8cpR6OnWPBXzkBVysGAqBBKgwhgkKAI?= =?us-ascii?Q?OZCimpVG/WX2/TSys/v8jfesBmB86QFNL7YgdrkE5YAZIK/a3SVy6JQl9Yye?= =?us-ascii?Q?ScJd0FCG8HBnsuvDEgpHlrnCaSu8cWB8wmYTPiIyT5FGJeaPNGz1CiS93e+C?= =?us-ascii?Q?YiWmi1yEWYeOmw1RaQCn7a5a2ubXPqQUfxjgmzSpSXkTlr1ISZRqIP3NVGIs?= =?us-ascii?Q?9yqEmLrsqEIS3T0JRJMjBbJg2lbMnW6tbpbYHvBqiDvfAaP8C/30uWaTNzym?= =?us-ascii?Q?PEj3F04itajVnKtF6rPOdfAXEkICKTeKW7jbJenOJd/eAeM2LzD3eE4Flc6D?= =?us-ascii?Q?8RVLZGFwxq3W8XP4wm9bu1Oem0iKA8iNE/GjTBHC6PND1/sGbEqh2vjPxF36?= =?us-ascii?Q?7msZh0VLSKsJsw4Z9HnkuE6XvXYdodcBOXPOODJYSkEXpTDby7wBfHbw7bX1?= =?us-ascii?Q?0NQ76ONv2wBN2V9Z9ecrPwlUm1syU5eAbJcL/szY+eY7LeRozqYmSff0R0JK?= =?us-ascii?Q?oxYIxVdH+AQwuxazI4sFO450WXOZ9/hU1y04ISnPYq0wfkLSq3WJ18Hp9IPQ?= =?us-ascii?Q?wJO303Tw+XqF+eskGtnwfCjbrM5wifjI+zZdbgetTks9I2VRXeR2igDumupz?= =?us-ascii?Q?zio0SNmrlqtZJOc2QzZ/WBBuGTfPm4Dh7PvpS00+jidVfw5WLLoMdX8yvlCP?= =?us-ascii?Q?SqIsglYi92RDqNoajC6xUQ7cmjcHjpzjKqzFAC9SEaST0S2//DbLmcJqn91P?= =?us-ascii?Q?dBy7Esp8zCG+IEPrSD0SmAqPMqf2P8HEIW01AcoWih8vQxAsv8aCsAnTPUVt?= =?us-ascii?Q?U8K5a7er+NCybyYWUVSCQximi3LUjac+wQ6uE8wisL4ruwlBQRfqBvvlj6rQ?= =?us-ascii?Q?pVlScDVFY/ud5ml3o6fSDQ5v3FLPCzA2C5cT2hN6Zj+uM1zXYBH9Rrpy5uJ5?= =?us-ascii?Q?A0QVhApfZHPkSMD0gejH/KDCPgvARR5QEUSxg3T3w9EP6b0pz1cRrO7hPd3f?= =?us-ascii?Q?EkROZfmv9/jaQeOwaS/AWKhzKfvhALcPIHNWJVBpFOlXvJN8i28khrw1JoeW?= =?us-ascii?Q?4fi0qV04hojod7pLuJHa6+nWdrWKYrdzqGcIGP9uJQHXRgAInVUIw7lwi9FC?= =?us-ascii?Q?ub4cTwExkpeXk3rhLL72vI1T1MahbwrxiiL+uLZTjFIQukYz7c6kvExxkh/C?= =?us-ascii?Q?/jkaziRmJOJetkrY0g6vc0UY3BC9BhwGua8uEWs1YgSKlQA/iHn/Tp7BA7q8?= =?us-ascii?Q?htFc9sdoto9LxDbz5c+pBlrIVZHVx4PZVqzctzydOWRHxRTGgnAOUIJ5vgaZ?= =?us-ascii?Q?ph6Pj20/TRGaiZKC11PQrGYlFRtZpaKM9gKh7eKIP1RZ5ygxXjzG0S9npoFP?= =?us-ascii?Q?PY33O3IYabfifESMxzfIQ4M8EyAbORsvQutuqndTThXZIRsm4yiw4vNljpNr?= =?us-ascii?Q?OcUldLhiszmUkYc=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PUZPR06MB5676.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(52116014)(7416014)(376014)(921020)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?MU+ElZtsldezDy0Ep5Vpy7DTc43HZrE82+5rEVp2rcqnKsmydOQ7Mo14zNmb?= =?us-ascii?Q?KoyndkIUZRA3tMDw0MpdNX9PagxXPVRW4toF1kb3UZpbyLRvORla2iRzNF5l?= =?us-ascii?Q?Xf2fYiGDhGMCSY1T/4z0zgAj2wz1p+9MbU6mVdpAIVkyiD+Bsa0fxPoDAGw3?= =?us-ascii?Q?Gg4JgnFiLOfKSflFaZI71+GubnU6XlehdkrUhcN7Q+lUBUYczr+WkrXHjPGY?= =?us-ascii?Q?dTu1PtXmaytikh6UkvtBpi4kBJs9WSaD9tbOlzcqWSKcGTEqXHB6jViY6k2/?= =?us-ascii?Q?BwTveShQpgsW9FpD4W+/V1pYEwco2T6pyUqGrAffPw9wQd2cqPD/ykjm2EoE?= =?us-ascii?Q?niKsq5DBZ48JsXY/Bs2iOO2RxnLUyUzGWNVZqppL6la54CcbFA3dRrBZfG7k?= =?us-ascii?Q?cvHKBXdDGgAC+ntOxz9/uvszPVzdT5bkSW8n44PCa0a/X8yYkktgfUHy7Jmp?= =?us-ascii?Q?KYcxzkDRPoIBw2m6KKq/VOQbGRJbQv79fbVPOSQz4+xUDjicpB9EpI37jV7R?= =?us-ascii?Q?PBd6YEoLSqygpoEyhACXQHOTYnK+ZUz/GDQq3//ppsqYPKlDdb52O7Jo698O?= =?us-ascii?Q?OP6qIXlXYZq6aONaOG4H3AIJbGhyojRQxIRcY0L8g00nLl7ivw5oWfpXZbH5?= =?us-ascii?Q?dr8Bx8C51VegnKKmLAwOKsqodc8g5wVxijybXU4kOwro7K8S4yjZHcCx19Eb?= =?us-ascii?Q?rIsCc9khq1vNmzd6jFrpQPj6pUy+KgM9GoAKe42a4pTDz3RRMVhpZGyQTkNb?= =?us-ascii?Q?Jv3rEPXA7WskrAtk4GU6B28RJizzY9UNW2sfeuYJ9JmHNtsvzlp+zM22aG/c?= =?us-ascii?Q?W2UPou3BmhR4zGNAyeP9Q7F80nHCVdiaaxjQdhm0WDHeAyVj3D16TXHplWZu?= =?us-ascii?Q?MGxdkGWgOfpuYqmxsnSxXQzUtuq7g/GYtgIuirI222v6NND9gBzfbkaANcnZ?= =?us-ascii?Q?8H8Q9HjB//jmsFuz++mK871fwdWOnFyn2NGMCz+iXW6ZEMLZnK9zUBQBX96T?= =?us-ascii?Q?bR5ipx1Idxy75BoM5us+TmCwsb/U2NkGdOts66DWixq/eJdRExVQWMw90Sn3?= =?us-ascii?Q?jwtCjINdX5uySBe1ppqsaFw05DHF30NEbsdEdyOcX1RHkzIgUeqsMyujXLLO?= =?us-ascii?Q?HKXwXtq9LeSuxtEpuOjSbNKeyzBN9b0aLkaXc9e8VFmNeJUCsTrPk0ztE4Xt?= =?us-ascii?Q?R1LrbR55sKLC+W6ULck3fIcdQlpVVsxmijotP1YcM4dt4pY29CX5mr/4927F?= =?us-ascii?Q?wGT7/5FZScAYfyBi1434FXRC7msohUDUifkcUqGXmxIuVT9jCqPTf8iqMmMk?= =?us-ascii?Q?iaK4vLWxlA2rF7Jaio/tx0cFh9VzF1yZ+iYmh/oHQIEwyqu84zi+NnT2duUI?= =?us-ascii?Q?t9ODTVgT62GgMDl2LfZ74E5jTb+oU9IwNyGNZXYxesyUxzOtu/2G676Z1Y50?= =?us-ascii?Q?3TqiRfR6iMWA5954cYEpg+PNHeZE91AIQ09vMVz/pOud3HwQqjJhBmd8ZiJu?= =?us-ascii?Q?tHkrVO5kk1TwGmtAhXnp6bNaZyw3gBzGWsGtqgB8UkBzvGQ4FKZFTJgrOUDT?= =?us-ascii?Q?WpP9M+woHSM8LWt0gr9tzjuFyY2fyVzicxQ6AYTJ?= X-OriginatorOrg: vivo.com X-MS-Exchange-CrossTenant-Network-Message-Id: cc007d01-5a7f-441a-a0b5-08dd8328fced X-MS-Exchange-CrossTenant-AuthSource: PUZPR06MB5676.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2025 12:10:22.3486 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 923e42dc-48d5-4cbe-b582-1a797a6412ed X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: fIS56IYewmdSdSNc7TlpvRRKwQ2rXHyIxaAftmeJLxbcAaV0P4TgDmXk5La+BNn5b2APKihQmxCQ8qttUajTOQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEZPR06MB6231 Content-Type: text/plain; charset="utf-8" When tracing mem_cgroup_alloc() with kmalloc ftrace, we observe: kmalloc: call_site=3Dmem_cgroup_css_alloc+0xd8/0x5b4 ptr=3D000000003e4c3799 bytes_req=3D2312 bytes_alloc=3D4096 gfp_flags=3DGFP_KERNEL|__GFP_ZERO n= ode=3D-1 accounted=3Dfalse The output indicates that while allocating mem_cgroup struct (2312 bytes), the slab allocator actually provides 4KB chunks. This occurs because: 1. The slab allocator predefines bucket sizes from 64B to 8096B 2. The mem_cgroup allocation size (2312 bytes) falls between the 2KB and 4KB slabs 3. The allocator rounds up to the nearest larger slab (4KB), resulting in ~1KB wasted memory per allocation This patch introduces a dedicated kmem_cache for mem_cgroup structs, achieving precise memory allocation. Post-patch ftrace verification shows: kmem_cache_alloc: call_site=3Dmem_cgroup_css_alloc+0xbc/0x5d4 ptr=3D00000000695c1806 bytes_req=3D2312 bytes_alloc=3D2368 gfp_flags=3DGFP_KERNEL|__GFP_ZERO node=3D-1 accounted=3Dfalse Each memcg alloc offer 2368 bytes(include hw cacheline align), compare to 4KB, avoid waste. Signed-off-by: Huan Yang --- mm/memcontrol.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 5e2ea8b8a898..cb32a498e5ae 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -95,6 +95,8 @@ static bool cgroup_memory_nokmem __ro_after_init; /* BPF memory accounting disabled? */ static bool cgroup_memory_nobpf __ro_after_init; +static struct kmem_cache *memcg_cachep; + #ifdef CONFIG_CGROUP_WRITEBACK static DECLARE_WAIT_QUEUE_HEAD(memcg_cgwb_frn_waitq); #endif @@ -3652,7 +3654,10 @@ static struct mem_cgroup *mem_cgroup_alloc(struct me= m_cgroup *parent) int __maybe_unused i; long error; - memcg =3D kzalloc(struct_size(memcg, nodeinfo, nr_node_ids), GFP_KERNEL); + memcg =3D likely(memcg_cachep) ? + kmem_cache_zalloc(memcg_cachep, GFP_KERNEL) : + kzalloc(struct_size(memcg, nodeinfo, nr_node_ids), + GFP_KERNEL); if (!memcg) return ERR_PTR(-ENOMEM); @@ -5039,6 +5044,7 @@ __setup("cgroup.memory=3D", cgroup_memory); static int __init mem_cgroup_init(void) { int cpu; + unsigned int memcg_size; /* * Currently s32 type (can refer to struct batched_lruvec_stat) is @@ -5055,6 +5061,10 @@ static int __init mem_cgroup_init(void) INIT_WORK(&per_cpu_ptr(&memcg_stock, cpu)->work, drain_local_stock); + memcg_size =3D struct_size_t(struct mem_cgroup, nodeinfo, nr_node_ids); + memcg_cachep =3D kmem_cache_create("mem_cgroup", memcg_size, 0, + SLAB_PANIC | SLAB_HWCACHE_ALIGN, NULL); + return 0; } subsys_initcall(mem_cgroup_init); -- 2.48.1 From nobody Sun Feb 8 14:53:00 2026 Received: from SEYPR02CU001.outbound.protection.outlook.com (mail-koreacentralazon11013018.outbound.protection.outlook.com [40.107.44.18]) (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 C06E623278D; Thu, 24 Apr 2025 12:10:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.44.18 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745496631; cv=fail; b=deSr0AeweFTxOOHhim1K31/UiaV1L9mw4fB/eHAyISRAriIFcVwXqJtBfhSGjz45TSn1SyTeSWTsBgoGwS7M0YPwVW2H2WcoVZr6cymHrE3jCWLVXwAfazWDYfY7NsGPizdDgENTnidfBBy1x4GrEeS+hG2L/BF8hAajiLxzza0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745496631; c=relaxed/simple; bh=kjJ0HS9DGq1ZZHd/Ipr/Mi3A4WxJBI9HujUD4crlYr8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=eBrFT7XMZcteyZ6QHWFX5w55xKHHJ8OHrjldXz3nm+I7WOGqdfnteryR7o9by/xcRKe1PtKVGmEWdg3xtx4TgB33h/yivp8kQggxhka0+Od3tSjYkzAtBNtfl3KLVxMy5mamkRK85Vz+8YoHzf3uWEvNV4ZaJUTkz3qjHZc6xJo= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=vivo.com; spf=pass smtp.mailfrom=vivo.com; dkim=pass (2048-bit key) header.d=vivo.com header.i=@vivo.com header.b=EJcCLUxf; arc=fail smtp.client-ip=40.107.44.18 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=vivo.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=vivo.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=vivo.com header.i=@vivo.com header.b="EJcCLUxf" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FWYsq5aqiBJhMAhpSip/JNrE361GcC+bo8o4lQg/LPNwEGpywih9fGPUfsTTpf+T8ZcgBlHQI/DMpvG3d9HOJteRZaezVjxSp4/APNgV0VSe/LX72mfjKMBXS9UGmEkc0TfNtucX0DR005Vq4yYkM+Z8N8JYaMel6h6rtIfuOA9OhNWBmlPg7sDCEEG3D7d0pYNaj5ZeNq5wpxTo9KcIiCBkfqh+JRCxUymmEswuvqS+CggfSTjl7gP7awN8ZiNzM03L4QL12zIE4YcqHzK+94YX4f/IrTg9MEmdat74yUPqvjyo0cpyfQbdmBIJdF68IBTYf4YSUZEQz1S1O4jsOw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=YZWBjqzuuEVsBzdLElOODx4qKZ9veU2ZHPQzi7Y9BnE=; b=vrjaLATy8zTVLnlg05tP/hsSRmY30Mx7Qcsa/L+qf8vHM5LOLslBrH9yzC3LqL3tJQ/T3gajVDb/NdqomWo8lvLKquBBogJagL4R7i/+9ZsfwYicCbGE82nEa1NL/6h3oP25G1g+S/bkLwNSB7akxcF6mToYWMU5wLQBwnV5C0ixBI34M8rffjKCEMlpfnYyrCvElQZgxUEBdXKYbEb+wmef0BJ6ezsE4l6PdM8Qh1lw8j1atzHt4o+vSqBAEgic+9Ts++nHL8lf0uZUr/N4wkZTrZfNJvT2oKyfGNmdOASjsb6jKttrZ8klDVkGUp2BplwIp3nKbFdO0abf5vMrMg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vivo.com; dmarc=pass action=none header.from=vivo.com; dkim=pass header.d=vivo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vivo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=YZWBjqzuuEVsBzdLElOODx4qKZ9veU2ZHPQzi7Y9BnE=; b=EJcCLUxfpFKMVmreLwzn8uZNxtkg7i4Xd0yXQo1QPyZ7hQVJCTSYlDoB6dxlP1H9h6Ox6RwV6bYPIlOM8ecDITJggnwlQZqLmf6i2cA25a8UtZZ7AOswO+5vEv+PcvfJrVEiGvZ5ZEifLcMDkekXfME4WmdhyCOek/KQ+p2sG3PcSBS9UsXb1gbh7LUJxAQVnZVIZpJOEvxgtuycIoHrXXQfebaQ101UprWKpwsNB1nQac55zMFeR912dgwVLk7q9+Jxf0EKDbm330btbteT4fXgtgmIt+m2VCJRocfFQ5jL1BuBpQ+buzi45jJU9PnjUMMRce50zNA/ChuTOgDoMg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=vivo.com; Received: from PUZPR06MB5676.apcprd06.prod.outlook.com (2603:1096:301:f8::10) by SEZPR06MB6231.apcprd06.prod.outlook.com (2603:1096:101:e8::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8678.25; Thu, 24 Apr 2025 12:10:27 +0000 Received: from PUZPR06MB5676.apcprd06.prod.outlook.com ([fe80::a00b:f422:ac44:636f]) by PUZPR06MB5676.apcprd06.prod.outlook.com ([fe80::a00b:f422:ac44:636f%6]) with mapi id 15.20.8632.036; Thu, 24 Apr 2025 12:10:27 +0000 From: Huan Yang To: Johannes Weiner , Michal Hocko , Roman Gushchin , Shakeel Butt , Muchun Song , Andrew Morton , Petr Mladek , Sebastian Andrzej Siewior , Huan Yang , Francesco Valla , Huang Shijie , KP Singh , "Paul E. McKenney" , Rasmus Villemoes , "Uladzislau Rezki (Sony)" , Guo Weikang , Raul E Rangel , cgroups@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Boqun Feng , Geert Uytterhoeven Cc: opensource.kernel@vivo.com Subject: [PATCH v2 2/3] mm/memcg: use kmem_cache when alloc memcg pernode info Date: Thu, 24 Apr 2025 20:09:28 +0800 Message-ID: <20250424120937.96164-3-link@vivo.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250424120937.96164-1-link@vivo.com> References: <20250424120937.96164-1-link@vivo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2PR02CA0004.apcprd02.prod.outlook.com (2603:1096:4:194::14) To PUZPR06MB5676.apcprd06.prod.outlook.com (2603:1096:301:f8::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PUZPR06MB5676:EE_|SEZPR06MB6231:EE_ X-MS-Office365-Filtering-Correlation-Id: 48ce1817-abd9-4c93-16c0-08dd8328ffc1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|52116014|7416014|376014|921020|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?qLTLvDKzQabfuDNz7GExDsLZyS8AVGJkDA5CbAeHUOoF7rrVIW/hZHLjYyrG?= =?us-ascii?Q?DlndLr0rHscKIWShAzWY34bRX2td+VTILEnabWJHeZbSYTY6O3qeKtegPkaa?= =?us-ascii?Q?cyidmnLl5kUJZg809IX1jsyhvCaCJ57WFvbY7TYVqucMF6rQI21E2cQIowmX?= =?us-ascii?Q?ZfdtaoMj5EZbGFatP7zJgGZLxocVSDx9Yxa3z0NSfj9QUD+YtD35Bv7CBmu1?= =?us-ascii?Q?s34Fnl3gdB3/3SVQ32JArF+pf5fcSl6T7b1Dxcbyd6vyNxOndKwZhXUvReMt?= =?us-ascii?Q?PUSZjEwsSB8IsFWS+cKeMpRDITqO22J7XN/qRt10dVeL33msGDlH38kpO5Zk?= =?us-ascii?Q?B2AErwICcqINoYfL6SHbow0UQ+jSbfzM6u1B0ZJ6a5m7coelhZ5V/2iMEuFH?= =?us-ascii?Q?oA8ZySiN3F6vrLKciBKXsoIBs6hYBFRVjybW5Kjy3iwGbalnpwtsLrg3Unvw?= =?us-ascii?Q?CcOCGrDbZQw6cy5Xlk6twfklqfzNEH+rdN+HyKZg/NLDOBg6LSC4AjR5wqcT?= =?us-ascii?Q?qpHgit83Jw4fIcXaiIQYISjjiaaQBwa0a8RKEjIvMglJIO5pz9KYPbfhvXGs?= =?us-ascii?Q?xBqQ29z/kTNvt1qPtb/M/XP9/GzuY5BXgAUza6Uvpf3bV93/vciWitas1s3T?= =?us-ascii?Q?VGDlMWiZFk9EgtuWpxxs7ILbjz0Heda8r33YbqqIR5CtClvEZUC86kAvfbEG?= =?us-ascii?Q?3pSwrYIluSmhrjyT9+YVkwn6AWooigIzt8cr6wYalZV4phOZCQ+DF/LEXV/g?= =?us-ascii?Q?coGmWzU157MHl03BUE5yruLVBIMzu8fMdFp1hvPaO4X2nabYlXiWMVCDRovF?= =?us-ascii?Q?8u1zz0ZeyDzCne0/rxGPuh01ngQjoluOWKNTmIjjsqmZ5jl0sfxr2CS/7PV8?= =?us-ascii?Q?69ynxg/LmtVe6dz5Ae642J7QyQ9zE+a1XPq2zDKKup9MKbeDoE169WjN0rVO?= =?us-ascii?Q?mKUkUoMr/r6OfL/WddiPIlGVmjvllYa4gXMLNBLD365zOjYiKM2ImZnhjjFv?= =?us-ascii?Q?cA70BAzOxVshVozD0gXAshSZTAYa1qyB9zx1GPUArayUAf8DjG0bZN0HVFTR?= =?us-ascii?Q?ED6ok7dhuC1mXIZsB8rvwzdrdUcDFOTqzW+Ak5I20/feFBbFqs0WDfVt1rhg?= =?us-ascii?Q?1qX3KQqQ0Rof364v8Lt++wUZr2PErv49T/G5OBUYuhQpXmQ5E8SJfWlgt1iU?= =?us-ascii?Q?VFe6ZR7sKf35oevUQ78KO4JyQVVT+cXxqWULVjmsf/OYaSUBaI26C+FQfcU6?= =?us-ascii?Q?dfwS317I8bpdWV/yJejoYtGMRv7R16VJHr+NK2nJLEbU/DtV57JXzkctSCiQ?= =?us-ascii?Q?QD01N1R4XiUuVjAdORtUCwy6Bu7OixoRbU8eNP+LejYa6wgu0sEIHh/CnsQp?= =?us-ascii?Q?SjxNjuZdPvZYT8bvIpVrm7NoygXaoaHOaVSP9KDgm6N9q/m+JhQPiCbQPMmI?= =?us-ascii?Q?cIsrgXwSEbH/SLvEDfhHZjV8zN6jFnzX8jmQdrS4aAuDFdaQoMA2vWui1zze?= =?us-ascii?Q?h6Fho/NgVqzvow0=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PUZPR06MB5676.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(52116014)(7416014)(376014)(921020)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?NrramREbwX7uxWH2ecYl3IH5ZfohBwMqVEuIK/5HTwj3IvjkIOtKqRn5fHp6?= =?us-ascii?Q?T6ikFjrzXm7rkkxS2lrk35uM1sxro6Qpwo4C8taVBMOKb97DJv4T/yalqhu5?= =?us-ascii?Q?girFCmgi2KrKIr+A1TVHMMgDTxK1++hH/pW+wrmLvbDL6vcBe3kjpQtyCwnn?= =?us-ascii?Q?WkDOF5FymRWAry7D3peEGUgvYZ9MdxSZbn2eW/rFEAo3iDTqMe6WmkZ2vdIf?= =?us-ascii?Q?foVvOHqoZJ8qwpvrkzbj9MWTa1tKRFL2wKMA0CGGkDaG6iOuZ/WXvhzCEHnf?= =?us-ascii?Q?aVfa21D5GhRRMuxC5WSEqfHAJT/xK6Ef58RsDfTj44CzluFXfrYPIlA4xdLT?= =?us-ascii?Q?SS/O40WXM0LnnpzHmS4fYRJQqSDyJDYpYp0GP5xKYjaUb/9eP3h0YvcEUx2U?= =?us-ascii?Q?8G7Kig+FtpVhNrqluS9Dfr/0RnJBm4Iawj27dAFv88KpFxsTwz9v7D7boMkz?= =?us-ascii?Q?PNpWrl1x1m6hJAu9xUHunb0wT8qH/BieRtN857e4MgYMN5TVidse7HrdWlXP?= =?us-ascii?Q?aNcXXlYPxWTFqj9VzXls0be+c+ko39GUBei9F0MQk3CXRd4ExjeZ4B3ToDkg?= =?us-ascii?Q?0Hv0grajRTT4MEPYqs/DwwxAZ69kcE10Xds3rrbkii0IPFG3ytmvmaaYDexE?= =?us-ascii?Q?APQ118XvthBmvYwLXmBnfoAc1WOfo1KfJ57uGqpM0p7c+kHB5i81/ald2n5q?= =?us-ascii?Q?AAzq4WqsTtfruXuKNpk29EBkpyPF7+XQR+87Z90SrqOKDPVtdPXagKiBE4LW?= =?us-ascii?Q?pI3B/i5rz7kWwPTS/cY4jR6gh6e40BprgaLRdQQp4HX1Ol3BOXn4NXFbcCep?= =?us-ascii?Q?D+5QC5flsy8tnCRxBKlvQDzrZPye1Ew58NWGbyd7VkySIsRlStZeVZL3hG2c?= =?us-ascii?Q?1ILhwbFdjWcDCjpg+S08VtdsqPd/Tem3mXOrw0OWbJ7mpu1ZXR1JYtUIQOF6?= =?us-ascii?Q?eQjHWQ/3oQ6zPhxhYOXIiGF54nZTO2VC6BIshOyhRP4M9XelOqg4TNKPbW9+?= =?us-ascii?Q?6KdsGcWU+fwTl79neeDnU7VYmCp5uejwrORURbGM6R2i/VzQ1s++NAxGJ1Ya?= =?us-ascii?Q?DiG3EsAhknrXSi5pWM5R9ZC6BYm2Sy/pkHFC37TAb6db0+xVohsIVdk0/A6D?= =?us-ascii?Q?aN73Y+4JgCGi9nkUn2I0MVtg5/QeScKio1boqXV/kSCMvWBZLJLiSKGT7rlT?= =?us-ascii?Q?OjI3gwg/J9mWxToS/mQcMxmVBODO67DyLEpg9WfXX3hXF7KTG3AlMDMzqIgq?= =?us-ascii?Q?qgU8kvuFlQfu7/OZ6/0vqCNHLAsBOSHuVR41+H3dA0vFm9n/bRFDgewHSG7G?= =?us-ascii?Q?YK+K2TzmD8JUPW9USHFbKJaRny34St8arRj0phhDFYRAB1RxgShjYL66t9Bk?= =?us-ascii?Q?8w/Ttrx+Oq8UmmM4EYrLNuvXo0YMkzDFZWcLTnGO4AXhLyVUExJnICwZvYfk?= =?us-ascii?Q?Iryq+BA4Bw19cNl7Vf8phO5Z1oxr8LjApJS2wcClW0VR8T85nelvIJHqf2Dg?= =?us-ascii?Q?TIUEzLHP7vH8cX+E8RH/h/VtetjGHq4Cwec9jCZ9bWcTm6Bg1C3V4mdEm5N/?= =?us-ascii?Q?NxQT4ULw7zhtK0ai4O40OJmbhorWbUIpgXVB1m/Z?= X-OriginatorOrg: vivo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 48ce1817-abd9-4c93-16c0-08dd8328ffc1 X-MS-Exchange-CrossTenant-AuthSource: PUZPR06MB5676.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2025 12:10:27.1225 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 923e42dc-48d5-4cbe-b582-1a797a6412ed X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: uvDQ9p79cgp6pfuC9kx+03FOoHGw1DBRVWMP8mpiwn7MgsDolxG+0+X3usQe+FsWJk5tve/+q+scReJJcLOaOw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEZPR06MB6231 Content-Type: text/plain; charset="utf-8" When tracing mem_cgroup_per_node allocations with kmalloc ftrace: kmalloc: call_site=3Dmem_cgroup_css_alloc+0x1d8/0x5b4 ptr=3D00000000d798700c bytes_req=3D2896 bytes_alloc=3D4096 gfp_flags=3DGFP_KERNEL|__GFP_ZERO n= ode=3D0 accounted=3Dfalse This reveals the slab allocator provides 4KB chunks for 2896B mem_cgroup_per_node due to: 1. The slab allocator predefines bucket sizes from 64B to 8096B 2. The mem_cgroup allocation size (2312 bytes) falls between the 2KB and 4KB slabs 3. The allocator rounds up to the nearest larger slab (4KB), resulting in ~1KB wasted memory per memcg alloc - per node. This patch introduces a dedicated kmem_cache for mem_cgroup structs, achieving precise memory allocation. Post-patch ftrace verification shows: kmem_cache_alloc: call_site=3Dmem_cgroup_css_alloc+0x1b8/0x5d4 ptr=3D000000002989e63a bytes_req=3D2896 bytes_alloc=3D2944 gfp_flags=3DGFP_KERNEL|__GFP_ZERO node=3D0 accounted=3Dfalse Each mem_cgroup_per_node alloc 2944 bytes(include hw cacheline align), compare to 4KB, it avoid waste. Signed-off-by: Huan Yang --- mm/memcontrol.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index cb32a498e5ae..e8797382aeb4 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -96,6 +96,7 @@ static bool cgroup_memory_nokmem __ro_after_init; static bool cgroup_memory_nobpf __ro_after_init; static struct kmem_cache *memcg_cachep; +static struct kmem_cache *memcg_pn_cachep; #ifdef CONFIG_CGROUP_WRITEBACK static DECLARE_WAIT_QUEUE_HEAD(memcg_cgwb_frn_waitq); @@ -3601,7 +3602,10 @@ static bool alloc_mem_cgroup_per_node_info(struct me= m_cgroup *memcg, int node) { struct mem_cgroup_per_node *pn; - pn =3D kzalloc_node(sizeof(*pn), GFP_KERNEL, node); + pn =3D likely(memcg_pn_cachep) ? + kmem_cache_alloc_node(memcg_pn_cachep, + GFP_KERNEL | __GFP_ZERO, node) : + kzalloc_node(sizeof(*pn), GFP_KERNEL, node); if (!pn) return false; @@ -5065,6 +5069,9 @@ static int __init mem_cgroup_init(void) memcg_cachep =3D kmem_cache_create("mem_cgroup", memcg_size, 0, SLAB_PANIC | SLAB_HWCACHE_ALIGN, NULL); + memcg_pn_cachep =3D KMEM_CACHE(mem_cgroup_per_node, + SLAB_PANIC | SLAB_HWCACHE_ALIGN); + return 0; } subsys_initcall(mem_cgroup_init); -- 2.48.1 From nobody Sun Feb 8 14:53:00 2026 Received: from TYDPR03CU002.outbound.protection.outlook.com (mail-japaneastazon11013018.outbound.protection.outlook.com [52.101.127.18]) (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 0D8A322F743; Thu, 24 Apr 2025 12:10:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.127.18 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745496636; cv=fail; b=dhNvEmVUkjAka8hp4wXLYqypCZOoSZ/U+0LDnJlgqhRlIlLkXnZ/JnVU6c3ZhXgF7nv5vaQRWIx8zL6k5Vb1PM66I0Z1d2SVGpVe72cTPcJrPZT7p+oz5tFkLyTEqniLl+Bz+90+pacrrbW9RXtnkUn+9V1e8FCrC28Q2zlSWrc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745496636; c=relaxed/simple; bh=2Atqiwrk1bX4lVh8KLY8Ms964TnYvnefAK9Jw3pblCM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=f10YV8Q04asZAUMSK2n2ZmRH2KUeER7Ei1x5TFNa2k+GIn1W/6Fk7as9hFlfpo3pzeP61blklqW7wH+TOwK/MR3E9oRiJG+MsvjZcnnxM8h6LbrPHsmmz9eodxm+H4NzSUxnRTg6hBYLJLLX5IqDaepLBpkIQrDHHdf40JM03gI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=vivo.com; spf=pass smtp.mailfrom=vivo.com; dkim=pass (2048-bit key) header.d=vivo.com header.i=@vivo.com header.b=KrDa1lXh; arc=fail smtp.client-ip=52.101.127.18 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=vivo.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=vivo.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=vivo.com header.i=@vivo.com header.b="KrDa1lXh" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CPn6EJoPy9WJAJfrgKFkOo76StDBa+AG7rChTyxSn2CE/0pa2UcGEmF0tfb3x0avfFznfRgE/WzxEF63CHqF+pjuwBmfQ+dZf4qGxezX2qTs88ZI3MArSCSbpJp5yH7VA5Agl42wp3PrQsBZ7RkzInvNFzQWmr+0LdE1hJ4MkV87gd4hzF8taLll+BRdA1ezeTVvm0Bi52mkId/x1aAg3b+MQzHDU9e/nJubLylXfUfpyslJAQhqjotnQpLjLuQXP75UjRJnznDQl8SfTt69yfCxMQEAp5aZqx5nu7TvQN+pzdCTueVjzPq7Zvvy/5wtBgcSpCCEtFQWLcb5Tn2obQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=K2NULMSx/SoJwJqJ0bqSDKpg8Ei1TuQRy9P/VGZ5RyM=; b=QomC9Zom2WJdHD5zjPuImaDPSsed+GETSg7V67OYv+Fp2nDi0Y1GLA8zjrd1bfKZhyD6HWfgPUIXUZuJ1fhMB07UVOpqx5667Nu+jwtZZzhUvCEOhbFF7WKLuD1EtM0aE0P0J0WSy5rRdqcu2sdY0I1gl0Y8xB+E0E2BLxTdNwpKz1oIzOWJIwz8wF4VEYskBH+9xxDtfZZfoT8CHqGZM2PuDBL3r8DoqhZGjxZ1BXafbYM20IT6cQS0iME9lg9+yGNK0msgrW7tuaeLroiNaro9VoPTZm3YEEymF34UgO9El5Zku+9I0yVlkmd9NL4F+Z3iaAjl1tDGFqT9YNJOlA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vivo.com; dmarc=pass action=none header.from=vivo.com; dkim=pass header.d=vivo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vivo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=K2NULMSx/SoJwJqJ0bqSDKpg8Ei1TuQRy9P/VGZ5RyM=; b=KrDa1lXhFnqMVPCigcFTw3Z4tlcxlv9tA6CrAsYYPqEeHsGRn005Mhn9d4+7hDUsXNt7Uf6eXv044OHC9VXR/jHSrfkLYdiaVICcEjoHvylnj9apSanCj1DxglrDs/+uPN2e/9acUFVkkvWXJT8HQYUG+Xf4yrG7zFzXe+wpfv+yTG9Sys/k6Dyb7P5vKnqBIhkNV8lYRFuWG5h8ZHEEeomux/tsqy7UeB9vFtRcSZ1nko5dI9i9IHkgS3AyJbJ8WVBZtHR5+TuWrsgdm0DNRiFZ6oYNxIzdBiIYl2yNtJ3rXxgiymZV4ulGIJlx8Bly2bl6kb1eRIMaPs59Fnbecw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=vivo.com; Received: from PUZPR06MB5676.apcprd06.prod.outlook.com (2603:1096:301:f8::10) by SEZPR06MB6231.apcprd06.prod.outlook.com (2603:1096:101:e8::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8678.25; Thu, 24 Apr 2025 12:10:32 +0000 Received: from PUZPR06MB5676.apcprd06.prod.outlook.com ([fe80::a00b:f422:ac44:636f]) by PUZPR06MB5676.apcprd06.prod.outlook.com ([fe80::a00b:f422:ac44:636f%6]) with mapi id 15.20.8632.036; Thu, 24 Apr 2025 12:10:32 +0000 From: Huan Yang To: Johannes Weiner , Michal Hocko , Roman Gushchin , Shakeel Butt , Muchun Song , Andrew Morton , Petr Mladek , Sebastian Andrzej Siewior , Huan Yang , Francesco Valla , Huang Shijie , KP Singh , "Paul E. McKenney" , Rasmus Villemoes , "Uladzislau Rezki (Sony)" , Guo Weikang , Raul E Rangel , cgroups@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Boqun Feng , Geert Uytterhoeven , Paul Moore , "Mike Rapoport (Microsoft)" Cc: opensource.kernel@vivo.com Subject: [PATCH v2 3/3] mm/memcg: introduce mem_cgroup_early_init Date: Thu, 24 Apr 2025 20:09:29 +0800 Message-ID: <20250424120937.96164-4-link@vivo.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250424120937.96164-1-link@vivo.com> References: <20250424120937.96164-1-link@vivo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2PR02CA0004.apcprd02.prod.outlook.com (2603:1096:4:194::14) To PUZPR06MB5676.apcprd06.prod.outlook.com (2603:1096:301:f8::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PUZPR06MB5676:EE_|SEZPR06MB6231:EE_ X-MS-Office365-Filtering-Correlation-Id: 3ad29a89-7353-4c8e-9825-08dd832902d3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|52116014|7416014|376014|921020|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?+XIJbNXm5zweKLZJUCvT1tE6yW+k6TRH7Jrm1NUiaEFAjlOGyMc+5F5nQNRA?= =?us-ascii?Q?7g2yE0Tu6QDXnJWK5urjVmoKyhwOe0hIP2Ytnh5M2hTgaSHp3+Kbbg56qTso?= =?us-ascii?Q?sDPIyzPCBTjsS5Sg8ALncY3JnC9vm25sADDFRC90pym+Z/Hn2TBwBQnWcrgW?= =?us-ascii?Q?VT41ZDYdDQvoFpHGokQI1Gl+dJHKa9A2Kmk75n9CQnzLyEgEIR0XXSdBcgCv?= =?us-ascii?Q?DYHdMo7iGZu8Y3oMOJiduI2DVtuNK6QRjyz7SfjPsMfPLp5ziW+8sJadNaoo?= =?us-ascii?Q?7pdaaH41jdMMCzHFDbNwDRgr6iqgfbCjUq4o5WcC56vvOWykqU/SH/Lhl3th?= =?us-ascii?Q?SVbxxMKKaBUQ4oxjcsauLKDjcAK5jbGyQxLQw+MJkeDRJRmaoQTHt8sLToP5?= =?us-ascii?Q?6mWKWi2X91VxCj5Ka0AeVf899CoSA6lR9Xs4JRkf2nG4lQEe6V8jYUnOWfmW?= =?us-ascii?Q?wlqDAWA7YqRNViUA9vHMI49EIrHdDay+J5SNBSZL4qDiygDnrWkSCi11MPuX?= =?us-ascii?Q?JptGz/5sn105B+BPDZ6G9T8rWGSf5hVAK6kB9eckX6ZNHl3HRKtSZEf1Bu1v?= =?us-ascii?Q?zs0/hyInke0Q9ggOcuV/PxblyHV92+aPs76RmszyzegH1Ktmnnt60JHciyuW?= =?us-ascii?Q?3S+LzgV0qCqL0oVor7D0XOi38NcsABt1NskkUC9ZCyhoKbibHG/w/vRe54G5?= =?us-ascii?Q?F/0MCzCD3FhNUQ+skFHrKKXWrhOeKZHijwDG+7mhDZoIi108SlKtV5VhBij7?= =?us-ascii?Q?FNbuwEm57a4BtUteorbvqKa1Hw+8OCZSi4mFB6ErXWa6KSGbtUbBJ2oZNv08?= =?us-ascii?Q?fdfj7sS7FJvemS0ISnXNV5UkNRdBJ1j60/B8YygHkdjHiU4ySsCtKEt87TH/?= =?us-ascii?Q?KH891wF94Qi5vidHURJEqKx2AKp4bZAA2t3y6AImsvlRKA91NXGCsMT1JqHR?= =?us-ascii?Q?0qZd7FUCa4XagjsjMVtECCEeTHSu7u6KAm+BIEFcEGPaZDrnI4xKGC8cfP7r?= =?us-ascii?Q?4D0pZrJIhHnOp5iwx9p27IpS41LbFtcZBq0M8BFfzhWk4wRTFHX+vibPAvyD?= =?us-ascii?Q?nBONoCCZJ4Wj2Vq+tAblsm276IWXhcjVB7GSaGh517tqlfoe4JbYc05MUdoZ?= =?us-ascii?Q?x5GLG2+kKjZYW8jNXfhCEWnDdAOmmAKtK6g0ZqyyJvQsoL//d2nG5WUFb0jJ?= =?us-ascii?Q?1hwAe13u53vwra+s7JoWYnnArDfYkbSx4dBHke3eYdJOc1uq3y4kdwe7XI33?= =?us-ascii?Q?gRkZDxd5aJpXBuM4xoY4f9QNsoLJaXZeZvzygeeYJllr6F5zJIzrAWM1TS1H?= =?us-ascii?Q?WioQ8cQ7/fFvULrHnrPvW2WcyiLMPleP0eQz1WAy+vcWN27uvXJrPATlbt9m?= =?us-ascii?Q?p5Yr+UtMzanj4pdHwYRoYPkJSgMuWAn8KwMvTgopwVWax71Im1f7ng9zvg5O?= =?us-ascii?Q?tRYFxdWoNagI7oXfYuYURJp0VhwJFbkbdRS9cr82iWTFBZSuGW+ovbw88072?= =?us-ascii?Q?cA/R045PnWbu6+A=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PUZPR06MB5676.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(52116014)(7416014)(376014)(921020)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?zAc5p1TMNEe6/RFe3U/The5Ny2fhDpPqDHc3q1e1DaemdcqN1tzyaWCA8x3i?= =?us-ascii?Q?FVchCCTonk+irmxOUbv1cmAKZ7IWemfoME3tlD9/bEoYAxf+eVyMECP80SNg?= =?us-ascii?Q?qUsnBIWJcMkYSziNcZQ1siG+T5FYGoc/7QfxJMG533T28CePknJj6zjYz7gy?= =?us-ascii?Q?3S575rQjMKfo7T9ZgWW+4WDRQgjA7BA8lobfytV5kkvs7gHK35QCob//mKJT?= =?us-ascii?Q?Pv49lu5YY4GoeiP/6A/cijfkNhqZj5EDaKMN6kRMKSLsiZ7LXC8Yx1/827zY?= =?us-ascii?Q?CAxKiNQC/2wPB+qcl0jtqXdC6/MEk+s7q25Na6nxuJv515Yhjg02LpWw5/gy?= =?us-ascii?Q?dJTdFllEGRwrfOl/UmBYiIjW+uMwADoCY4YdWP7DIhmmxRR0FF7i7qug4kPa?= =?us-ascii?Q?Zm+p7j29gB4j65clT4Nv+EfquOd2oIYmyW+3sSlhuI0LMw5ki10ZsvIYZ0Kl?= =?us-ascii?Q?TwLuzt8JQJT/L/EjWExKhTehXYl8DpI4eDOHbvuw9HhBRB96WCfeUw9uTe4+?= =?us-ascii?Q?lOUtAYAOXdqgMBSQ/+X6VPTVCpGI5rHTO6MphnyOo4GuM3RdJ70hflffrPSH?= =?us-ascii?Q?HYE83gAq9kB+ykcpmgpTzRIs8JTNtxdgPTpk+Mo7q0BCkTJlfUF24cTvI/xp?= =?us-ascii?Q?OwmxunTUO24BqY9FpZmuHfVepw+z+VD2z/I96/EKgA9l68dssMJPBtit5xvK?= =?us-ascii?Q?wIIaV2MolOkx2Al+f5cq0U3MMx2jWxX3P6XOWeuRUOT2p9biPpnXd5HX5F1o?= =?us-ascii?Q?spcEnRmWusZHgBmboLtDY5SJTc/CYO2ypNq/aVhfZEeo6LuwbFD//IF7/ZID?= =?us-ascii?Q?a3uYMtUekITFo89SYCA67E6R/gV84h2KshgVYw2jJxW/4rSPAzOxMldO7+gr?= =?us-ascii?Q?XZxEjPnJUV3dxrne8FP++rcFDwltMK5F/lo/998zWs66pFATPEhIrWUqaZuQ?= =?us-ascii?Q?qQCfDoDQnLwkp9I7WLIjYTtN6fy8OqigvdH5ynnJM6ryZmuexj73LXOQ8rhF?= =?us-ascii?Q?friq80Un4l2XzPz9MN2YRKKEwhsNis2p9MEIGSs1fzoRTn9O4MIzFaRboUmK?= =?us-ascii?Q?TfReeEyTXYRAiztmnHBjvJIRCQcUV+cTjMSUECIUxZvfXstCJfzaUeQhJ7hW?= =?us-ascii?Q?UywlvyhMMZzMPMeQ2r2S3xZwB7tZVLWEYX4eN0Aq+5XJ6Fw/i3konKNdUwph?= =?us-ascii?Q?iWtllCCXaomATFWaOJT7o9r4EPbHlmv/KOnJjcUo7U0cfh+GUXY4bq6Z5wav?= =?us-ascii?Q?pfcTMyoEOU+34LQRCRp78AbSReMzKHrXji0Mhsa/mBVuDKa0EBf+Btf50eBN?= =?us-ascii?Q?7KIkFB7KB2V4p+8D9EflfS5ytxX+JGzc4yKa6eqpGL0s50fOCIKjeivFbNU7?= =?us-ascii?Q?tirVoHAw6kdldOxKSsrypGaNLQK9qhpKPLNRSWW76Czvcy8AN024FOa69WF2?= =?us-ascii?Q?fNbM34iBHtg2LmQ9szRzBtQvzLIOrbmb82HscqSKJ2fUI8Y3oRT0HwkNmInA?= =?us-ascii?Q?gppDeABy/3hLhUX6sZFBVs5R8U2zmBipDkl2/+wFBa+7w7P2WNULtjis7xmF?= =?us-ascii?Q?pkxaKEzNNa5xItLT24NDf0bpdHooF8uWNXV8GZzQ?= X-OriginatorOrg: vivo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3ad29a89-7353-4c8e-9825-08dd832902d3 X-MS-Exchange-CrossTenant-AuthSource: PUZPR06MB5676.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2025 12:10:32.2786 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 923e42dc-48d5-4cbe-b582-1a797a6412ed X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: vxLRpAxweoBQXOjqvcQnFBgKTugr15P7Jz6WdT5xJ/00b5CNKeo0s4nfwC4/gSmnyZzFmCWf4OMzGf3/CmN0NA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEZPR06MB6231 Content-Type: text/plain; charset="utf-8" When cgroup_init() creates root_mem_cgroup through css_online callback, some critical resources might not be fully initialized, forcing later operations to perform conditional checks for resource availability. This patch introduces mem_cgroup_early_init() to address the init order, it invoke before cgroup_init, so, compare mem_cgroup_init which invoked by initcall, mem_cgroup_early_init can use to prepare some key resources before root_mem_cgroup alloc. Signed-off-by: Huan Yang Suggested-by: Shakeel Butt --- include/linux/memcontrol.h | 5 +++++ init/main.c | 2 ++ mm/memcontrol.c | 40 +++++++++++++++++++++++--------------- 3 files changed, 31 insertions(+), 16 deletions(-) diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index 5264d148bdd9..231f3c577294 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h @@ -1057,6 +1057,7 @@ static inline u64 cgroup_id_from_mm(struct mm_struct = *mm) return id; } =20 +extern void mem_cgroup_early_init(void); #else /* CONFIG_MEMCG */ =20 #define MEM_CGROUP_ID_SHIFT 0 @@ -1472,6 +1473,10 @@ static inline u64 cgroup_id_from_mm(struct mm_struct= *mm) { return 0; } + +static inline void mem_cgroup_early_init(void) +{ +} #endif /* CONFIG_MEMCG */ =20 /* diff --git a/init/main.c b/init/main.c index 6b14e6116a1f..fd59d5ba2dc7 100644 --- a/init/main.c +++ b/init/main.c @@ -50,6 +50,7 @@ #include #include #include +#include #include #include #include @@ -1087,6 +1088,7 @@ void start_kernel(void) nsfs_init(); pidfs_init(); cpuset_init(); + mem_cgroup_early_init(); cgroup_init(); taskstats_init_early(); delayacct_init(); diff --git a/mm/memcontrol.c b/mm/memcontrol.c index e8797382aeb4..bef1be3aad6f 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -3602,10 +3602,8 @@ static bool alloc_mem_cgroup_per_node_info(struct me= m_cgroup *memcg, int node) { struct mem_cgroup_per_node *pn; =20 - pn =3D likely(memcg_pn_cachep) ? - kmem_cache_alloc_node(memcg_pn_cachep, - GFP_KERNEL | __GFP_ZERO, node) : - kzalloc_node(sizeof(*pn), GFP_KERNEL, node); + pn =3D kmem_cache_alloc_node(memcg_pn_cachep, GFP_KERNEL | __GFP_ZERO, + node); if (!pn) return false; =20 @@ -3658,10 +3656,7 @@ static struct mem_cgroup *mem_cgroup_alloc(struct me= m_cgroup *parent) int __maybe_unused i; long error; =20 - memcg =3D likely(memcg_cachep) ? - kmem_cache_zalloc(memcg_cachep, GFP_KERNEL) : - kzalloc(struct_size(memcg, nodeinfo, nr_node_ids), - GFP_KERNEL); + memcg =3D kmem_cache_zalloc(memcg_cachep, GFP_KERNEL); if (!memcg) return ERR_PTR(-ENOMEM); =20 @@ -5037,6 +5032,27 @@ static int __init cgroup_memory(char *s) } __setup("cgroup.memory=3D", cgroup_memory); =20 +/** + * Before cgroup_init() create root_mem_cgroup, we can prepare + * something in here which root_mem_cgroup may need. + * This currently initializes: + * 1) memcg_cachep - kmem_cache for mem_cgroup struct allocations + * 2) memcg_pn_cachep - kmem_cache for mem_cgroup_per_node structs + * (one per NUMA node) + */ +void __init mem_cgroup_early_init(void) +{ + struct mem_cgroup *memcg; + unsigned int memcg_size; + + memcg_size =3D struct_size(memcg, nodeinfo, nr_node_ids); + memcg_cachep =3D kmem_cache_create("mem_cgroup", memcg_size, 0, + SLAB_PANIC | SLAB_HWCACHE_ALIGN, NULL); + + memcg_pn_cachep =3D KMEM_CACHE(mem_cgroup_per_node, + SLAB_PANIC | SLAB_HWCACHE_ALIGN); +} + /* * subsys_initcall() for memory controller. * @@ -5048,7 +5064,6 @@ __setup("cgroup.memory=3D", cgroup_memory); static int __init mem_cgroup_init(void) { int cpu; - unsigned int memcg_size; =20 /* * Currently s32 type (can refer to struct batched_lruvec_stat) is @@ -5065,13 +5080,6 @@ static int __init mem_cgroup_init(void) INIT_WORK(&per_cpu_ptr(&memcg_stock, cpu)->work, drain_local_stock); =20 - memcg_size =3D struct_size_t(struct mem_cgroup, nodeinfo, nr_node_ids); - memcg_cachep =3D kmem_cache_create("mem_cgroup", memcg_size, 0, - SLAB_PANIC | SLAB_HWCACHE_ALIGN, NULL); - - memcg_pn_cachep =3D KMEM_CACHE(mem_cgroup_per_node, - SLAB_PANIC | SLAB_HWCACHE_ALIGN); - return 0; } subsys_initcall(mem_cgroup_init); --=20 2.48.1