From nobody Mon Feb 9 02:11:46 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