From nobody Sat Feb 7 06:05:42 2026 Received: from SEYPR02CU001.outbound.protection.outlook.com (mail-koreacentralazon11013011.outbound.protection.outlook.com [40.107.44.11]) (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 EFA6917A2EE; Fri, 25 Apr 2025 03:20:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.44.11 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745551207; cv=fail; b=rOnq/JhS3S9x7SWiPlsLEnVxr9/0vnFCbH/1JRVOZvg1YVhjnRAq8ETGUmPM+px4FZkH49WJKUupsRiAau8FkHOnSlVxKbFlKMP5+9iNPdNcnKfSmiz5KZ8DEEt2iGlm/en6Oj40EBYTCY2awyTp6StdfCuDIc6JQL45rZaZBzM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745551207; c=relaxed/simple; bh=Y+ac5lb/7LhofykYEaf40DBKbWsoD+FOroeMExCVteo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=LshbPwED5Zhk8RhkTewlVFe7R5g2K98K4TkZmKugKDWJX9UL1Ufyr0XFGUaWI9fV3i9rPa19G/5Q3WYyPXbvqDGDRpfI/sJuhowV+GFmCfjUBzO+9j3U3ngzvjl21gvXo7sTvCShJiTPh0oLiPnPy4VUkvYxShdJCPKlS/nCS5g= 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=GDVNi0wD; arc=fail smtp.client-ip=40.107.44.11 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="GDVNi0wD" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jfd/lbQSwW9OKSkqxllZqqoqdMJCKgIcq+MjGC1oGEKVDxI9aWkmR1EcDfGBoglpsdPkzoSrVinOMrbKSfpQmXsmz2fhnYXAiQ5S7J17/6FEFXcT4N7ecCaT8oONs1AcISvnWeuACza2gYxRa4VpX1a1h/cEeQU5ABFxGtR7ywVtK/G7nGO3B5gtuEC+VJaDluOgVWNnH2AtobabpS2VaTcpvBoKHZedPaX8gM/HjJnRV3OcDKIn6E1hzl1pJiPPItoJbeCVaY9ACe4ubOg1DJmmF/V/8h0Zi3Mn2lYvKwoJcaG+0zAFdsUPsmmPa/Y7bvt/iBkMAQQuuaJkcWGSuA== 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=AYkUu5uAQA/JUR8dG9F1TnP4gtM6yeNourk+mB9taYo=; b=rpp0GHaAtuvrGQprtbsWra3wQQD3xB4Tk1u/cw7/Nxvie1ACZvrEazDIOnAALRJZW/DTaTsHKeQ2AQq612CfQG3khnBLJN8ciBWoSnQyK3fgkCZQSrgcx2cm1rE0wl7sDb2AG4P70aBSyqzw7vW09mvDYrOjyK7/LxONgSuhynJx9PLb0tT9DSKkJKsrNYSVmZBH2NwPgFtgKcWd+Cpv5KzLYb8i6jeAd/AVSZ71uLi/Er/iI13XSiQgIV02faoD77LmBfDr0G4nnAc5yE6SMEWp9SFdSD7DaFzj5Q5ZpcvkM8d51v5HwXhUZwFJFAqjrWIRKoRVfLkbiy0j5JfW3A== 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=AYkUu5uAQA/JUR8dG9F1TnP4gtM6yeNourk+mB9taYo=; b=GDVNi0wDyO8a18iG9BIMrB02sG+r/Zkk8lQNC7kXKyV2ATcYEIh764sG2RBUcZkbOWdHbzSi9KCdnXXxCLKBhrEfZWIAEq0rn13PPgVl7zqRVeKFyZFxjR5OWTJPvOyel0vbWUCNQNr5LmcMZmSIzByKGYVizK/5ULvkhrOMEfczQIcypO7EO6YXRgYAtMu1nOyUhm3ujAmBwlSOY9aZG7nhAdRA8iwa69q8m3vygYyfORs+0aQoi/focb6X7hXHUj1bRAZKNrBY8puyN4MnAVclu0gorXQ7VcHKJ32fWUaLJJLcFjmSao3wwZ+uobw/sT1c2JVXl9Q+knksnZvPPw== 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 JH0PR06MB6604.apcprd06.prod.outlook.com (2603:1096:990:3f::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8655.33; Fri, 25 Apr 2025 03:20:03 +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; Fri, 25 Apr 2025 03:20:03 +0000 From: Huan Yang To: Johannes Weiner , Michal Hocko , Roman Gushchin , Shakeel Butt , Muchun Song , Andrew Morton , Petr Mladek , Vlastimil Babka , Rasmus Villemoes , Francesco Valla , Raul E Rangel , "Paul E. McKenney" , Huang Shijie , Guo Weikang , "Uladzislau Rezki (Sony)" , KP Singh , cgroups@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Huan Yang , Hyeonggon Yoo , Paul Moore Cc: opensource.kernel@vivo.com Subject: [PATCH v3 3/3] mm/memcg: use kmem_cache when alloc memcg pernode info Date: Fri, 25 Apr 2025 11:19:25 +0800 Message-ID: <20250425031935.76411-4-link@vivo.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250425031935.76411-1-link@vivo.com> References: <20250425031935.76411-1-link@vivo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYWPR01CA0036.jpnprd01.prod.outlook.com (2603:1096:400:aa::23) 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_|JH0PR06MB6604:EE_ X-MS-Office365-Filtering-Correlation-Id: 8f7f7f69-f217-45bc-4de9-08dd83a811b1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|52116014|366016|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?nEk/tf67XXoj7G653VpVA5nXuKeU64Jd3QF7epSybniGWhVNzEmlRYJVOyOL?= =?us-ascii?Q?MW/9oy03vAIa1OvCwOrFPQ/rtgbK/qyiX3RUN5/wqB27SvOgUlWWbBD8wltY?= =?us-ascii?Q?umizIc+3dLgqwo/TRaZTOd/L5KunMxD5z/WK+vmWjYOz7Jn2gfyR24sd/ACI?= =?us-ascii?Q?6c17lBKH7GqdTQG8PhBjVAPVix8YtiULtN4M26u2ZmKiz4AitiCym2yRt0eS?= =?us-ascii?Q?+alNjI3ggCxT0vO8DVt9KF7Mz+CRWB3vjKOtDtgT7Hqcpv6L/aQY4VEP2rP+?= =?us-ascii?Q?fPxFpBog8kUBiql1MwU3OKjbhHoqb2rKIQOX0JUZ+ZLdR/wOJm839HNh5z1q?= =?us-ascii?Q?Htk5lCuvCHV3tFGbqee4T9eJOp0Sd7QmrsO/MYE3pH/NGu8V219RO3BKvQjk?= =?us-ascii?Q?boA8jLsyoAvDnu8+eSf1XMt3sZWjOVz5B6N0lTFmvHzrgUA840ikFjoUFDg7?= =?us-ascii?Q?M5+DZrMUmt1937sNMLftSqLoteqL3uLRyaYRFFent/tZk5xiKYf1C0NRIzAc?= =?us-ascii?Q?dCw/D0dagCNcA3jLoRnErsCd7qyvKz5JVMPvsSugXtxziCDeC9zPLmN5ui2i?= =?us-ascii?Q?o5JShg/XhqJo69GRUXJye6//5423NA2ZKYCN5VBTeVKupq4fPjUcjdh+imxO?= =?us-ascii?Q?62XzqW/LHpPUGD/d1+mW85R0CU06MYEdAGjy0uN4WzvRMQxPIKQPjN/ZgIhg?= =?us-ascii?Q?lQJOdpBB0wxInC0YyXM3iTG+V8JZ2pN3/AFCrkiG/rx5r4X44vOdV3JBYrJM?= =?us-ascii?Q?s2xv7BEZFZmETUofB1hMO+s64+8HtFaP+jkytVu5/nqucRpY9jIVrt9JkjMJ?= =?us-ascii?Q?rTA/Vm2pxo4FJDWhv7L5p2/AqoJZCgxvtM8EHf3/1Ewbpa10Q8QG8Zz3Suig?= =?us-ascii?Q?wR0IxdnHAAmO7kCPn7aQfJ9d9f03/w8SvX9dtx/wHpFft3jv6YWhuBPJKMHw?= =?us-ascii?Q?W3WQgPCualoIyGz9yFOhWPWT89iUTpWlFAn8rI8Kb1cTHQ2AcQbOXzjU/Wou?= =?us-ascii?Q?3ZdUf+htVsqgMTY8or+qptMtJjGxG+ngssNGLtjK9PgsYIQk8D0ZJNs+v6b7?= =?us-ascii?Q?b7xGmsdzzh7x7+E1+THenliy8WPNwWznggigEFmFc0rZDLqF448QRarYhftZ?= =?us-ascii?Q?/aBvV/OSyabpdHMtXsPhXCsZg4FmFHXGxEBFNfT93ruxFPaRN65LKWBu6f8i?= =?us-ascii?Q?jBFM1vzj/Nk9Ecj22bVO6Ciluol/4j8RgqlOB40oR9BhKZ0Qt7G1X0NOUsTK?= =?us-ascii?Q?P7aknCpcKJQLbG7Z4lRlMRKeeT+V6pWagGxC8kCaO5LL3AQGFxggeKczREJh?= =?us-ascii?Q?86VbS/FOMLl6nx2Q4KgRbT4+pIxv+nElfJLN5TtkNQ3ptHiGci3IW2Junmvj?= =?us-ascii?Q?WZTpWxCW/GUmVSKo0MvDeQh+jXxL/mqmCaLC+cP+3u2fxeSlu7ZwjuSjnQ+b?= =?us-ascii?Q?A5jZt+3KrhZDGILPAQFvw+OZQLnDd824MDovyRjysSXmSD2yRhD54cfIRs6u?= =?us-ascii?Q?Y7KRmGF1DVKMRUA=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)(1800799024)(7416014)(376014)(52116014)(366016)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?opcHjkzf3q4Lsjoay3cuTRr55xwVNbJJFPSvoDli8FYqx2btNTggZzGs2vod?= =?us-ascii?Q?g+yUo/iSzv8XpvmueumfRFwxQgbx8qgQJ5YGI8GlHAWI53CZKaBcgSZWAP4q?= =?us-ascii?Q?oVfE1vkLMt/Se6/O6zUb27LNz+vSzwY05DcHVrFxcp9y8XX0Y/4GH+nfwC/p?= =?us-ascii?Q?voZYKURzJ4yXhBwRnv9nba+RxPqhWOH36Yo6/6Nx+SqtoZsoKJ/G1bvF5PZq?= =?us-ascii?Q?MTn6IaTFTDAW+caLqPdkHqdXrKF13QqLBRNlPcwDGvMjhbQMLxkwLt8E7N3X?= =?us-ascii?Q?7KZWXAzq/DZkgWs+XiKB8CTd3IGX85y/SvaX1dsPS2DNz+JEwxfwAlw09Wnn?= =?us-ascii?Q?Ud1JiPOCVJ7q76UnOqyZnAL0+ODoAePk1DVIiusaKh10yeQiIST9c6XBKnVE?= =?us-ascii?Q?o3huo6Z2aIwQgK06EF23XzjRGoPC1fp01nK11DqbOPa+Q6uB84Yf4Imi60lK?= =?us-ascii?Q?VXzpilqNMMN88oywtVYL1HgFjVDbW6ZrUULcl4W8fduiE/GnWqvo0GxayIeq?= =?us-ascii?Q?R5zzPxIhZnOJCuYGAFI6JusIdnxWcsly8JNy/JSNAZs2OK2c6r+X/xDyRId+?= =?us-ascii?Q?PejSR+1QjexPeQFirT4et4v5SsbM/c/eFjBHPpNl1lO7l6DIyfbuRFt+Rp3d?= =?us-ascii?Q?5BoyW5IPztEgD2BQtVmJx/BFb1praKRpoNQkCIIY/g1dJci7zUOm4H2BzLR5?= =?us-ascii?Q?hKk5eOX41pLBi5PSrWnzJWzKPkGs5TNDpz8j7ZkgG2QM+NJ1ivIpsjyfbwqb?= =?us-ascii?Q?5xUnZOoxI2mglSaMC4KO9nJYQQObkVs0VxWZuyZcF7Cx+us5kj6Do6l0fS8F?= =?us-ascii?Q?dtlosdkleDK4b2Om9mggpP7PW1l4ZldRoFhbFHlq7qt3nUzcD/SUZgsCd4gg?= =?us-ascii?Q?j2ofahEw+gPtS0C9VUFIob2JJJ2b7q93Et96A5GXMTfN63MJfYt1uQ5H9u9e?= =?us-ascii?Q?E2oYdn5k1CKArUT/21+rJmLVIMg0tyePuVHpejpZboR5yO1xRFijDuUanZH5?= =?us-ascii?Q?KHTfa4skejLm1Q0vd3twpIhUZ0Tp6Zxv4nEOP8ns5W5jEXrEel3UaT9SU7Y8?= =?us-ascii?Q?By1K1bvAQSGDPyFkWxsu/LFhMAGbcecbnYZvIaoNLUt0+UjXNlgVdU7a/WPx?= =?us-ascii?Q?B3rauFEZmfCabiPGy5BfO3BdLjfdwcDOktmTou5kA1iiF/3W/LMePLVjNWnQ?= =?us-ascii?Q?qz9MX5YTGDBdq3Amuan/8TM0SHL13xxYlDVa4XjYUpAPRGtS4pUwc1F4XAqn?= =?us-ascii?Q?BtHc0AhjkMVoInVqLFCnNT0rEjJds4AWslcFrOMHQkmimWB6z5WqxLgLuGGG?= =?us-ascii?Q?yKxRzZkvM8P5ZKi+j9bxDIkjCR4WpbJjRmFrCOnKzPPAQ48MCABDcDNw3czz?= =?us-ascii?Q?SQwUYKL+CHnRwupR3zwU531Cw8s1QYSwhI28B9VGkaErTtt4FRWLrRB+OrXw?= =?us-ascii?Q?IM/Ct8Ks967tKUk+GWV5OtsBlqa8voel2nledU3BXUcbvDwEoEWK/Y3Tlakk?= =?us-ascii?Q?csg4zCGXla1uoSZEhbv9lkwglUNHc9hrwdOkkJhpexfiZ0FBaQLiZjRBrE2x?= =?us-ascii?Q?/jvDbVVy9zJSR8zqYr1XDZFFyv0uMZrTCb5tE3UC?= X-OriginatorOrg: vivo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8f7f7f69-f217-45bc-4de9-08dd83a811b1 X-MS-Exchange-CrossTenant-AuthSource: PUZPR06MB5676.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Apr 2025 03:20:03.3638 (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: 0IHXr8tq+W0Pf4Wxgi4qqfW72ziYjQaJCKyfMYoMIHr1gm+u25V5u6IEGiNYcwPp00kWwFaPopClbkg5qL/hYQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: JH0PR06MB6604 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 4096B 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 (2312B) 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 2944bytes(include hw cacheline align), compare to 4096, it avoid waste. Signed-off-by: Huan Yang Acked-by: Johannes Weiner Acked-by: Shakeel Butt --- mm/memcontrol.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index e34216e55688..af1cd5adfd6c 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; =20 static struct kmem_cache *memcg_cachep; +static struct kmem_cache *memcg_pn_cachep; =20 #ifdef CONFIG_CGROUP_WRITEBACK static DECLARE_WAIT_QUEUE_HEAD(memcg_cgwb_frn_waitq); @@ -3601,7 +3602,8 @@ static bool alloc_mem_cgroup_per_node_info(struct mem= _cgroup *memcg, int node) { struct mem_cgroup_per_node *pn; =20 - pn =3D 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 @@ -5062,6 +5064,9 @@ int __init mem_cgroup_init(void) memcg_cachep =3D kmem_cache_create("mem_cgroup", memcg_size, 0, SLAB_PANIC | SLAB_HWCACHE_ALIGN, NULL); =20 + memcg_pn_cachep =3D KMEM_CACHE(mem_cgroup_per_node, + SLAB_PANIC | SLAB_HWCACHE_ALIGN); + return 0; } =20 --=20 2.48.1