From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id A5665C71135 for ; Fri, 13 Jun 2025 07:11:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2CD1B6B008A; Fri, 13 Jun 2025 03:11:32 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2A4E86B008C; Fri, 13 Jun 2025 03:11:32 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 148F36B0092; Fri, 13 Jun 2025 03:11:32 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id E39296B008A for ; Fri, 13 Jun 2025 03:11:31 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 8B534C0425 for ; Fri, 13 Jun 2025 07:11:31 +0000 (UTC) X-FDA: 83549506782.04.D12BA06 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by imf16.hostedemail.com (Postfix) with ESMTP id 2E1FD180002 for ; Fri, 13 Jun 2025 07:11:27 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2025-04-25 header.b=Ap85A0xv; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=ibm4nxkz; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf16.hostedemail.com: domain of harry.yoo@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=harry.yoo@oracle.com; dmarc=pass (policy=reject) header.from=oracle.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1749798688; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=iIQnNRv9kFkN9H3YxcYvP+5R06mqxFfLlifreyU4ZxQ=; b=8rm6Z2xDlbYbJI/rBDa0c3HLjrUH3WRCPVRuWnHYOWEiUpjBUOengOXzVcJiz/Pe6cqFx/ kZGTpy8QqN7cbnW85rQHo5qQM6XabX21AbHqYrV3crB2dA+HTv4iYwg1PnmvwwLSDMtnVc et9vHybVuEa0bY3QO/z+XKXZkEo7lyg= ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1749798688; a=rsa-sha256; cv=pass; b=SHzQxp1nFcRxmz5VGEhms9jneuCpHJ+utrNqxpp+o5ld7qz7ConAil31p2cYhKATI76uGP mFAy0cFdNtTY9ogG03mCn6qvCtOfG8E6ebynIsm+K+1Q8qP0e3AMg+gM39S6c6qD2g6agc UEj5MH9Pp9QONFSTWN04iJgK4MVZPQo= ARC-Authentication-Results: i=2; imf16.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2025-04-25 header.b=Ap85A0xv; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=ibm4nxkz; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf16.hostedemail.com: domain of harry.yoo@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=harry.yoo@oracle.com; dmarc=pass (policy=reject) header.from=oracle.com Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 55D70adS030018; Fri, 13 Jun 2025 07:11:20 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=iIQnNRv9kFkN9H3YxcYvP+5R06mqxFfLlifreyU4ZxQ=; b= Ap85A0xvx/DgVjzRXOY6UsGWBWaMLyTTV9XsBc8fomVcjI9RdkGO8NKZd9/foXbN v0v0kBMTL3CJJ+qerb808aEYtgCJOj5nrI6hZA1B22pC3F4kYq+xANMkmgRpiyne 1z+LaKtobSrMUW0nEnR41ZIoYIwM3flds1owFBVRmgc0wdKdBoifSJyJsfjPiihX QhQZ5L5cfPSexV9TXOzT8biUyIASZq2LRfr9+UWQuLoOAlcHZb3nBxlGUi9H0ZPG EW4amFHfD9BJRGq9HJ4nzJuhagtypQ8uIK9aFgprCNDdZejszqijM9vpRJh9er+T EzQq8tFDM1qb0L0SGS1J+Q== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 474bufb0c8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 13 Jun 2025 07:11:19 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 55D6q6LS040793; Fri, 13 Jun 2025 07:11:18 GMT Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10on2046.outbound.protection.outlook.com [40.107.94.46]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 474bvdjmkp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 13 Jun 2025 07:11:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LC4lyssWMlx7UfKL4+N3VfOQnNfrZDQ1jRkfGO9pfWUxoefWHnF6czCkrnfQY7cmdNeJHZdfe6FPpRHRAUSDdx4GIcAtYWz8n+rip0XUCUjlNs5mhqlDuLMgKlEqAZzdCdI8UYoXEhuvqfFPNMVLJ+HKCI8U4O3IvN3VY3Ch3bEYQL+fY/OUPo4bZ3T2sqwnlkCxJrUgZfGm84/Hg2nNf0gfcswtX+Gs9291/H0PVU8FNJ1V5trtVfVBH0cYdrM1NgG34W4JJ5GVG7+1nYQ3aaso7z1JAEwtOBVlOTCudG877VQHdFu8TTkyAysiieGPkbLLSDasVkNbuxHJ4JRkEg== 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=iIQnNRv9kFkN9H3YxcYvP+5R06mqxFfLlifreyU4ZxQ=; b=CF32hewYMC3+jn5NffN1PPCQqhU09SjUBS71faXgwvkb9+sXY+IVOgpk2omUShqHQZpSQTRoSJnWoRhKKMh5/cxpd5PFoZ0SPlUw5VVXRTLnMff/owyzyt7Fa2S1eivJgNoQhqhz9gD4s/hZbfB+VaiunQcss0sA2WAspeyz8Js4wEzuRfuTCjO7b6wM3W0+Liqf0z1jfYTXxXbGbItYBfzg+6a2o8MWZsW9lSyi/VlzNj+ico0KbMjHkfJJvZh6fa/WAXGD6Tgkb1VJtXUebaEtD9gPy8tfCT+d3rFq3whTISTRIJZBfqXoomeFkHuSxlgqs/2zSCFNE1eosGIo1Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iIQnNRv9kFkN9H3YxcYvP+5R06mqxFfLlifreyU4ZxQ=; b=ibm4nxkzUs2mE4FDhc81YpwWxR00HJY+fNsNDjrYoLBymDcvwS3VVgwxlbyRG1Twe9KjHO174UJLGDD5yt4sPlzyeRs5j98EO+ks5Sa2RMftaRcdpyDWlGn2kTx7V5zlA1pI24dMC15ORVe6JbaMuJzHikHAiWMsdETGGHkQQKI= Received: from CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) by DM3PPFA9583E3CA.namprd10.prod.outlook.com (2603:10b6:f:fc00::c40) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8813.23; Fri, 13 Jun 2025 07:11:15 +0000 Received: from CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::f238:6143:104c:da23]) by CH3PR10MB7329.namprd10.prod.outlook.com ([fe80::f238:6143:104c:da23%4]) with mapi id 15.20.8813.022; Fri, 13 Jun 2025 07:11:15 +0000 Date: Fri, 13 Jun 2025 16:11:08 +0900 From: Harry Yoo To: Vlastimil Babka , David Rientjes , Christoph Lameter , Andrew Morton Cc: Johannes Weiner , Michal Hocko , Roman Gushchin , Shakeel Butt , Muchun Song , Suren Baghdasaryan , Kent Overstreet , Andrey Ryabinin , Alexander Potapenko , Andrey Konovalov , Dmitry Vyukov , Vincenzo Frascino , linux-mm@kvack.org Subject: Re: [RFC PATCH] mm/slab: save memory by allocating slabobj_ext array from leftover Message-ID: References: <20250613063336.5833-1-harry.yoo@oracle.com> Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20250613063336.5833-1-harry.yoo@oracle.com> X-ClientProxiedBy: SEWP216CA0091.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2bf::19) To CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH3PR10MB7329:EE_|DM3PPFA9583E3CA:EE_ X-MS-Office365-Filtering-Correlation-Id: d01370fc-8584-4d4f-a2e9-08ddaa497c4a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?B?UHlZRGlrb1ByY0RmQzR6ZUdkc0NhRjl5SEp3cWd2MG5EeXhTZ2QyOVhQZkw4?= =?utf-8?B?NjJMZUhDM1BvYXF1NEdKTkVFVlBIMGVqc2tzdStvUDB5c3BzUWpuTC9McnV5?= =?utf-8?B?aGNDRFRyVGRJbzhuL0xscVl5MzlyMVNoWXR0MGp6N1YvQTZKenA0b1I4RHRO?= =?utf-8?B?WHI0SWxIS3VWKzdaTjY5dWNsa3VMU2EvRDRUU0wwa0RoenZnN1dBMVRJTXl5?= =?utf-8?B?V0dnMWQxTU40SWM4d21NZnZxSlo3bTA2OTVhbmVvV2Q1RzdsbUkvVGhlU2hK?= =?utf-8?B?Ly9VTUNGSVFhclp0cjFuOXM1Q2RzSWprSmhjK0hZZUoxdEQzdWtNazFjVVNG?= =?utf-8?B?Z2paWWlzRTd3b2Uzd1VCT3BzUEphVG9NaDZXdXgwTDdjSGRTRzZiTHAwaHhQ?= =?utf-8?B?SmFHMmkwTm8ycFpuRnpJYzU3aGZLRE9nYnpKY01SQUxKU0k3MmQ4elBtQzc1?= =?utf-8?B?RWdSbmt1TWFPWmdvZ3UzazdrSHM1b3l4ajVvb2pNR2Uwcnl5ekZPcWpOYnhk?= =?utf-8?B?QjB4UG1CUTNweTh0bmg1L0xMMXJ4NUNrR0plZUxkMm9jWEtmMGhTczMzNnA3?= =?utf-8?B?MGNVb3d4YmZVL25xT0ZyVVp5N0hBRDhBZFJLU2dZaEdIQ1A0eWNDMkRSYkl0?= =?utf-8?B?U0JDN3M1cHM5dHRjS3c5OTNwSmc3eXhjZFV1aDZUeGdscEJjeGxmdHJ2bEJM?= =?utf-8?B?Z1NxZUJtd2RJUStCMGhpZHFrYnhvRlRLWjBiM3JsY1VnQkl0NWszTFVLclZI?= =?utf-8?B?dS9PYWtVSjV2UitiMm9FclpQUFFzVU51bjQ0S0dkMHBxSjMyYStjcGRNd0Nm?= =?utf-8?B?SzBiU3k5TmlnVlY0VCtPRnBaZlA0OGozZzVvSEM3cit4TTBWVWhCNGRUeUp4?= =?utf-8?B?QnN1WVlKMlJjSGJXNXFPeUFxN1ZCUmlwd0JUNWVZelE0NVJiVFpONEpPR1Vt?= =?utf-8?B?NDB2NENVVkViNlh0QXJsSlZGT1Z1WUV2bll2Zmxta2dlRllqYmhUREc2OHdC?= =?utf-8?B?VnpoL3BzY1FFTnVBWURDMHVjdHFyYmJ5ZXFYSGZjMDBmMEtWMGIyVmFNbk9S?= =?utf-8?B?WVJPbEVtbWovZFpDKzNpWWpGN0JKUVpjSEhmWE1qS0loczQ2ZFRvOWZ6YmZX?= =?utf-8?B?K0svaVZITVVxQndkd1ppeGo5ZkJwQ2E4L1pYbk5CRXFNL1JTUDRreG91UmhX?= =?utf-8?B?MjV5eDNnOEhORUJYVWxYLzg3QWZKOFVYYzVyWE1aNm9RRmxnQklIZWpYZitx?= =?utf-8?B?NjBEeS9IMjVDS1VUbmZya0hBWjJYbXJNNHZ1NWpiaDM3Q0VsRjR3UFl4bjlZ?= =?utf-8?B?QkZPYU5ESUU1VnppRkVlTkNrQnRJS2tWaFRQOWhPRHJqYm9qbkRkL2xnMEd3?= =?utf-8?B?bm9EWWNpZnlGZGxlalN5MXM2TnpnVUo2Rkl0clRhdXJEZ3hlNkdIa2RJdTY3?= =?utf-8?B?VzJ4S3VwaVJPN2tBNVM4eW5CdDMvZFcyVzBWa0VEYjhRSGxzZHM1bnlscUln?= =?utf-8?B?OXVKYnQwWndMdTEwaFhZZVNxKzBVN0Ztellnc29rMHRqM2k3VUZOM1BJQWZI?= =?utf-8?B?R1A0bVVTcCtFeTZPclZpdUtmVVpURktPWll3ZElLcXlsVmxRSlhGdVUxT1Zk?= =?utf-8?B?Uzc0aVpxYTRWVW1ITVZ5VmxPK1ZJOFdia2M4WExwdmp3Y3BocXF0S2lvRmF5?= =?utf-8?B?Tm5LVENaT2tnaGpQM1NFZGlibE5uTTlLU2s3YjNCNVBaWksveHY5YWVlcTVm?= =?utf-8?B?Q3dERWFFNmNBazF2SCtxU1JGSm1tcldBSDQ0NitnTjFQK3NJM0VhSEZlTmZl?= =?utf-8?B?RXVJeHhYQjJOc0RlRXNrUjRpTlRIaFE0ckFBSW9tb1k2VlliRy9uc3MzS3NH?= =?utf-8?B?c0M3aHRyYWc1V0dkWmViSkhsTWh6azZvWTU5ZDBDWTNkS3FRZUNZRkc2YUZP?= =?utf-8?Q?Zew3uLti9tY=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR10MB7329.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?b083eVpiUDJnZHRyVnRZMCt4SnFPbDdWbkdxOHVxK2g3b2w5dEpNUk5seXFY?= =?utf-8?B?dkFiaWkxSlY0MHFpMzE5MTRWdnNyR0o1eitDZVZRU1ZuL3FzZGg0eXB3dTRX?= =?utf-8?B?V2h5Y3VCQVpyUmxMektmNVFueC9UdkxXdWJIU3hlbVdBWlJuSGFPcXhCVFQx?= =?utf-8?B?VFlCcVBwclYwTU1ZV3gzRGpOeGdiZ0xCeWIyOWJNeGl1QmQzRFRySnNYOERR?= =?utf-8?B?WVhzbmdwcW4rZ284Q2o1SkVONysxTUNWZ2dVWjVWb0prSHRHR1A1dStVelBB?= =?utf-8?B?Z0szN3FVUWdIZlJ4WWYyUUFWZUdjSEpUOU5VbWJkdWJacDJkNkN5MFliT1dv?= =?utf-8?B?QWsxa1BMUVVXTS9XVG1TL2VrTnVCNjBhQ1c3ajVaNU1DMW1aeW82MXNqaFVK?= =?utf-8?B?a3dWbEd6cHVJNHg3MGM3M09LemFOMVBjanl5VUQxNXNIWHZlQXpiRCtGemM1?= =?utf-8?B?L3NhYytGUUVVL0pxbytBSVNtcUhSY3EzLzRIdk1QQ0trTmFUTEE3Z2I3RlBU?= =?utf-8?B?Q3hJMHRMaGlWVmF2TWNrVnRaY21FSjZhTU9xS3BibXZ6cm55M2RSZElBYktG?= =?utf-8?B?UnE3bEtpaDZkTDEwSFE2dWVobndQUFo5aXJzWWlUemtrcnliNWwvUHk0RG5l?= =?utf-8?B?Z3phWElHUUJRLzdkenR1SXBKaHJBREdEYVB5M3lOVndVUzhQNnN1TFlPVVhy?= =?utf-8?B?cVB5R0Y5R0tsWHFXaGJZYzdubWRIQXJaOE5NamxvSE9RVjV5Yng4SzhFKzVS?= =?utf-8?B?ZGRYamd6VTEvd3BaS3ptVUNrY2xHeExPdUpQdW1Kam05Z2twYVF2bTVMYU5T?= =?utf-8?B?Q2JqNytOMXozQnIyanBnQ2h0SjRRWFlYQnpLUFgwQW5EbVk2dDNQek1aK2Fr?= =?utf-8?B?SGplb2lScHg3M0orVUdVdzIrVFNrZGhMUnhkZTNYZkNFakZSbENGNzZFY2lt?= =?utf-8?B?bFoyZEY1ZUhDMGtGV040YmtFeUdXMTlVY0VBOUE3L2pwM3Y1UUdRR0Z4ejlo?= =?utf-8?B?c05xbHMxak9aVVh1UFI3cGpQN2ZaNElXQ3IveTkrMkQrVHdseUJodW5oZHRj?= =?utf-8?B?YWdSZVJ0cUp4TWVPb1lVVTZ6eDBWUjBRSEN2STRNTTV4VWdmL0dFVUtDUHpX?= =?utf-8?B?eFpRa3RaeDNGSVEzd1g3RHNRTDZKb1o5ZUFOYzZPOUEyam1sTXpQZ2s4RnIz?= =?utf-8?B?TFNHZkV3Ti8rWWMvczUwWjVIMjJCZCs4QmZUdFpOM1M3VU9SRUZhT2lkc0lZ?= =?utf-8?B?bmhWTXM4UXR4WHJCVUFsZ3p0dWRnc2l2TmpCSmFidjFtQVZyNURpS0ZOZmNj?= =?utf-8?B?Tk94ckk1YnJPNVpaOXF1L1VJNWVrOGd1NXpUcG9tTUlkNW9jbzdoN01HMlFV?= =?utf-8?B?aW5SelNZbzVMODAwTno1TXNWNll1dDhkMHJ0STZVclpRdXVMZnJUWngzUFBW?= =?utf-8?B?Uys1RDRIbERRNTdwNXRIdVY3MTBpMi9saUdiRFhibWJLdG9yQ0Q2UkQyTFFI?= =?utf-8?B?Ni9KQVo0MnQ0S1A1dWt1MTlSWUgyK2huTmJXbjhmcnBjVUJocGVSNTRmQUhZ?= =?utf-8?B?ZktUVXRXazk0enh2bE1DOUdYTTdhSUd3KzREbFhiVVh1MFYzUDV2QlpJd1Ro?= =?utf-8?B?blA4UVNvRkcvMjBDOW4rcnVKNkg1RGxmOGhPckhVSnd1dmUyZmcwOVlKYkdj?= =?utf-8?B?L1FNWmI2alJCN2xGTlF2S3d2NzZ1Qm1kd1hTeUlXblhyVnEwQjFLd2ZwQlhs?= =?utf-8?B?KzBiQ3B5YmZwMGZBT3lYRjE2MVZWZVNnYUZ2bS94RnMxYmx0VmlpSklWenlz?= =?utf-8?B?clJ5a0oyL3FYNzMyN052WHRBMGlmWXMvNlh2U0ltWW90dGJJaXJYVFIxeUgv?= =?utf-8?B?RXBQUEdwckRFUkEwWkgzTnA3anI0ZHVHeWlqUVEvc1JURUNLTHlYT0hwSUQx?= =?utf-8?B?K2U4SmsrRnREOTZhUHBya1REZGpmRjZSeWpMNTBZa2Q5UVptMm8zY2xPSFdq?= =?utf-8?B?N0x4R0tXV1liaHExajdqVFc3NDlTaXhHdVJzdW1QRUpuVGRWZ1RYeUpsZ0Jo?= =?utf-8?B?M0kvNlFRYlY3S2ZUTWdwZkdvbmlON3NmWmhuMHU4c0hKZDFJa2VDOUJZeU40?= =?utf-8?Q?E406b9/Ujv7MC8OUj3R5Pt19N?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: brHB1fTDqGfeBUAlSgIoMMzm9OO7wnAJoophwoDgG/JOX6vZUIfrV0bhuWoqMQbAlQTvIc0HHjK9BA0/L+2p0R1kW/3wbVn1SlBT6u9Pr6UreRrwwNzC4tyE7/KrgRhRkselFIhSNFX1hiuPYE8OJXmQNzfugeXPO9ADt2Hbz+1KExcrDmcVd+uXcMRad8lL96fTxW/DjmXTkOoFgEmhSYODRXOZq+F3S7BHjYDyt1w7XkyOy5TD3Nrx9s9HwVjfU1g0Out9KkDJToOvLMPArDPjJU8llo7r5ZGQvIFit63k2gaYookxtqZNkHQo3iH9gAFVYycnHIgxRjqvCtGLbnbDm6DCQuW/Q4kdW0n/+zvoNgeN6kwok6ffO/p2WBFSdy3XzW+iRNFm+7fT7PMrYhOUQlC0rMEClZUrX65SW0fFayEsJStmF9ME0hKnqJ3HT5MmIV3VxYKuqNOK/4I0x/3LM2AML7a/WmRG7iPSh5BljS1mViHRlRld3fOTNNTuUZC7SH9lsvWmD6e3KL9BMHWfV8C04TbaADPhN1JJtVSTdxO0Z1fjl/tTtmH6d6Ek8uzKsiW57AmYjoiytxPUlNc4YVOcG4yA31YkTCkIwcM= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: d01370fc-8584-4d4f-a2e9-08ddaa497c4a X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jun 2025 07:11:15.4130 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: GnGMfDT36CngKEAnydXqhV2aWAlmmqeI2yGn4sL+QUP3Gcva3/tpVmEZ7p4s2fllDMU21i0N2pyQPNdwdfKuZg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PPFA9583E3CA X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-06-12_10,2025-06-12_02,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 bulkscore=0 spamscore=0 phishscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2506130052 X-Authority-Analysis: v=2.4 cv=RZGQC0tv c=1 sm=1 tr=0 ts=684bcf17 b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=6IFa9wvqVegA:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=v5sGP3x8L9TVs6_n3S8A:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 X-Proofpoint-GUID: x11yUe_sQPnFTkE8HHFP3qndE3MzdRWA X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNjEzMDA1MiBTYWx0ZWRfXzGhAN0Fl3IjV jQnz9IPSXQNKqGNa8LFfMgWMu/mMovv2OXrWuGUa/BPtWdaghZAIxIv645Dv68yrW/LeVARNJN/ TQajW2pOKK2sN4x+HCgdlQ/tKKsUIOtbK6T65ISceshU4Na8xdnVpQCyY88r9eBeaJNUdBYxl2d 6vooE6QSryz/UGf0zVSlmcEbBxdsOoB4wqjZlSNFFm9AAcqpomkGu6yGzGF6baE9cEkd/oZBLqG Nu/1AiOibJakcBRaYTbJNP3uDAtHUhVr51P0/eNUvct3k4jdkgQQGC/8hjXUTGCuN8uDMQfK9fE AKjbrcdm0hu6AP5WYnZjc6C3zZ3Fq9bMG1gcfdUVa+kjiNYEACcYq9fZPxLth+cMS2e+sRSxieU 9ueVwko/8pJPr7b0D2SXrFKyaI9/awKF+eUPeostHHdMmG7L/Lk74eoozhRaNsspN3Pbpykq X-Proofpoint-ORIG-GUID: x11yUe_sQPnFTkE8HHFP3qndE3MzdRWA X-Rspam-User: X-Rspamd-Queue-Id: 2E1FD180002 X-Stat-Signature: 7q9e54pifnu1wc5r7uqurebggxdf6cx5 X-Rspamd-Server: rspam04 X-HE-Tag: 1749798687-246593 X-HE-Meta: U2FsdGVkX1+m8YtSaKukGHSCU0RwrxncGrcNKY1QDCPpF6dtB+oOBPlXKJqCSj8/JTsxfR9hIqUCP7arUlxAZWPiH4eF3bSH2YFvGiKojBr4B2yEYWDeQRJM4mKqDVTu4h/e0v6rw4mPPOcUqyfNW5lSKud7YGGmAgJLVDR+Yy+MYw+Tvi8PsoL59PVq6YOnwUeJPWH19FS7yTpK5KOZ9WKkZBG8cMHg9cm9GPjBO0p7y1rNxnNJL4zpBihFZhTGgr0Mq0JeyJ6BdC9cusWdbnZEQtFgFEyL3TC8bs98uxzlxci80jmAU1bIOWIosXgbkHiWYmxL4AdpuhUTdZEBdi9j/2f3XKl6eBZcGMsPIFkoEUxN7h2LkdZLkVoIpjYghGVn9Y1rR/XqH0VMSeW7PEKPvv4Ehsz9nwIN79xxlt38R0cd6xRGyjPPPdkGVxKVjufEi4Ews261PWX1eL0li68YsMQ/kgyqv5Ps3GJjpBROA6UbA+1ttNrH8Zx61Di0V5sgWWoYhpYpQjazxw9UesbtiV+ka3idVhgHjWkn9LhaUZG9F3jUGxVOwMq2LZY+6P8Z/GtyKFD5hRo8UiB+VuEaTgadu0mgzru0z8lIqQDV6G5aU0sVWlpYHq9gytY2o/k4Y0T+mGgIn92tUykQpYz03/lyOiDHt6QXvJnflN7VqoAbcZ07Y1zl/sME+dmiMF9IpFe5Wr2U6GZtMvZbNvuGs88uPMCU5NvmltBLbyHBZyjuYavQf1Ai1W1mVVZZbBy5KQV5szeR1AnZRuBzKdBIAs+Pt+YfXOdrqHnZE8CyyqOd1YhBmrVXSwAg8WDnAsbFv0kPXE0nA2ddHGP+8chfI5Mt3Tjc6jteG2+p/JEnjs5slrbDmgR/G9Uk9+8h/6uqmW2gc++7TfiT5fqP549sw+Vdg+Nza+bGZniNfKpLCCgsFGn7LHIDuCYgGh0D+sk7efEyDC62eq7KPBn R0nXlc/t SXgkmwlunoKO3IhEGjJh6UZIP34UimU1bxuKzv3kb4WBUaEqhmh4nS9bYDQCUA0WsRn7hTkeg34Jdu+0n7B8s8yxXLhRTqa6FBhUXcf8wW80cwQOJADIJqV56Zc4dpt2EM7m5fGf8Uiq4i16AJ3pYSUkw2uHPaCrjcjx+coKpm0bJK+xsSLbBO7VsUBn8Ye7mqPaxZmiTTedYkqSfzk9sXM2N5RilBhedUQE4aOqsgu1dO4WmiVAnWtuoSa6I9XaNJxb7hT1B8y0HBgJsQtkR+IFzUV5hmpYFKICZDKxAlXKNXQ4v3JovFSqg7BXZSjgcoJlfwuCoOH0NVe0/Dk2HTNRLvR0DN+Dcaosdu7giiLyUv/R0nBcWZYoB+X7jSekLoA8e91QWKJiIrBgD4id3ftoDq1CuiygdNOMSisdgcsBI3tAgsYhg+ECarvF+SLcp2Ua8M0y6IoxRzbhE1W3u+GLAApvg9M2aNNrVTC6Nfk4Oov3yrVf/PpQldvJ0Xkp2C5yJ0xSnzhFKt1PoshI1fXuDXbl39Y1TIQASfUcJHjI0DAv1F7ngXlT3fLZOtVi+1m+OFBqSLDTkR6E4AdJlwtRL38PilLAxXt2G91lCYbVGUX9Z0JsA9DBIzy6ODj6Es/J0VzKfhiqBaNBK3MmMQmmM3adSU6CRDOZ9UEelknI24N03VEG0SraMRq1Q1GEJ2Hon/MKt7NYR9+EmtYqMlMM7xMSScxVQeL8ex5n6BE/T22iBtLBUwgZ8wqt72Vg59fVkznIzyJfxIkOq3EDA1zD9MnSz3sYhUvW1Az2CgeQL0Zv1gDuemdw9ARzwW8NiltGG2GTwoAaPXqcvGttXYIg+92vEmdZoSal4qgm03CurT43jSAeQWPde9wbmnKJ6MGmA X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Fri, Jun 13, 2025 at 03:33:36PM +0900, Harry Yoo wrote: > The leftover space in a slab is always smaller than s->size, and > kmem caches for large objects that are not power-of-two sizes tend to have > a greater amount of leftover space per slab. In some cases, the leftover > space is larger than the size of the slabobj_ext array for the slab. > > An excellent example of such a cache is ext4_inode_cache. On my system, > the object size is 1144, with a preferred order of 3, 28 objects per slab, > and 736 bytes of leftover space per slab. > > Since the size of the slabobj_ext array is only 224 bytes (w/o mem > profiling) or 448 bytes (w/ mem profiling) per slab, the entire array > fits within the leftover space. > > Allocate slabobj_exts array from this unused space instead of using > kcalloc(), when it is large enough. > > Enjoy the memory savings! Oops, I put this sentence twice in the changelog ;) There's also a build error I missed when both MEMCG and MEM_ALLOC_PROFILING are not configured: hyeyoo@hyeyoo ~/slab-misc (slab/for-next)> make -j24 mm/slub.o DESCEND objtool CALL scripts/checksyscalls.sh INSTALL libsubcmd_headers CC mm/slub.o mm/slub.c: In function ‘unaccount_slab’: mm/slub.c:2682:23: error: ‘struct slab’ has no member named ‘obj_exts’; did you mean ‘objects’? 2682 | slab->obj_exts = 0; | ^~~~~~~~ | objects make[3]: *** [scripts/Makefile.build:203: mm/slub.o] Error 1 make[2]: *** [scripts/Makefile.build:461: mm] Error 2 make[1]: *** [/home/hyeyoo/slab-misc/Makefile:2011: .] Error 2 make: *** [Makefile:248: __sub-make] Error 2 Will fix it in the next revision, but let me wait a bit for some feedback. > [ MEMCG=y, MEM_ALLOC_PROFILING=y ] > > Before patch (run updatedb): > Slab: 5815196 kB > SReclaimable: 5042824 kB > SUnreclaim: 772372 kB > > After patch (run updatedb): > Slab: 5748664 kB > SReclaimable: 5041608 kB > SUnreclaim: 707084 kB (-63.75 MiB) > > [ MEMCG=y, MEM_ALLOC_PROFILING=n ] > > Before patch (run updatedb): > Slab: 5637764 kB > SReclaimable: 5042428 kB > SUnreclaim: 595284 kB > > After patch (run updatedb): > Slab: 5598992 kB > SReclaimable: 5042248 kB > SUnreclaim: 560396 kB (-34.07 MiB) > > This saves from hundreds of KiBs up to several tens of MiBs of memory > on my machine, depending on the config and slab memory usage. > > Enjoy the memory savings! > > Signed-off-by: Harry Yoo > --- > KASAN folks: Should we also poison the array before freeing the slab? > If so, which API would be appropriate to use? > > mm/slub.c | 95 ++++++++++++++++++++++++++++++++++++++++++++++++++----- > 1 file changed, 87 insertions(+), 8 deletions(-) > > diff --git a/mm/slub.c b/mm/slub.c > index cf3637324243..20f0f76f0c65 100644 > --- a/mm/slub.c > +++ b/mm/slub.c > @@ -785,6 +785,49 @@ static inline unsigned int get_orig_size(struct kmem_cache *s, void *object) > return *(unsigned int *)p; > } > > +#ifdef CONFIG_SLAB_OBJ_EXT > +static inline unsigned int obj_exts_size(struct slab *slab) > +{ > + return sizeof(struct slabobj_ext) * slab->objects; > +} > + > +static unsigned long obj_exts_offset(struct kmem_cache *s, > + struct slab *slab) > +{ > + unsigned long objext_offset; > + > + objext_offset = s->red_left_pad + s->size * slab->objects; > + objext_offset = ALIGN(objext_offset, sizeof(struct slabobj_ext)); > + return objext_offset; > +} > + > +static bool can_alloc_obj_exts_from_leftover(struct kmem_cache *s, > + struct slab *slab) > +{ > + unsigned long objext_offset = obj_exts_offset(s, slab); > + unsigned long objext_size = obj_exts_size(slab); > + > + return objext_offset + objext_size <= slab_size(slab); > +} > +#else > +static inline unsigned int obj_exts_size(struct slab *slab) > +{ > + return 0; > +} > + > +static unsigned long obj_exts_offset(struct kmem_cache *s, > + struct slab *slab) > +{ > + return 0; > +} > + > +static inline bool can_alloc_obj_exts_from_leftover(struct kmem_cache *s, > + struct slab *slab) > +{ > + return false; > +} > +#endif > + > #ifdef CONFIG_SLUB_DEBUG > static unsigned long object_map[BITS_TO_LONGS(MAX_OBJS_PER_PAGE)]; > static DEFINE_SPINLOCK(object_map_lock); > @@ -1307,7 +1350,15 @@ slab_pad_check(struct kmem_cache *s, struct slab *slab) > start = slab_address(slab); > length = slab_size(slab); > end = start + length; > - remainder = length % s->size; > + > + if (can_alloc_obj_exts_from_leftover(s, slab)) { > + remainder = length; > + remainder -= obj_exts_offset(s, slab); > + remainder -= obj_exts_size(slab); > + } else { > + remainder = length % s->size; > + } > + > if (!remainder) > return; > > @@ -2049,6 +2100,21 @@ static noinline void free_slab_obj_exts(struct slab *slab) > slab->obj_exts = 0; > } > > +static void try_to_alloc_obj_exts_from_leftover(struct kmem_cache *s, > + struct slab *slab) > +{ > + if (can_alloc_obj_exts_from_leftover(s, slab)) { > + void *addr = slab_address(slab) + obj_exts_offset(s, slab); > + > + slab->obj_exts = (unsigned long)addr; > + kasan_unpoison_range(addr, obj_exts_size(slab)); > + memset(addr, 0, obj_exts_size(slab)); > +#ifdef CONFIG_MEMCG > + slab->obj_exts |= MEMCG_DATA_OBJEXTS; > +#endif > + } > +} > + > static inline bool need_slab_obj_ext(void) > { > if (mem_alloc_profiling_enabled()) > @@ -2077,6 +2143,11 @@ static inline void free_slab_obj_exts(struct slab *slab) > { > } > > +static inline void try_to_alloc_obj_exts_from_leftover(struct kmem_cache *s, > + struct slab *slab) > +{ > +} > + > static inline bool need_slab_obj_ext(void) > { > return false; > @@ -2592,7 +2663,9 @@ static inline bool shuffle_freelist(struct kmem_cache *s, struct slab *slab) > static __always_inline void account_slab(struct slab *slab, int order, > struct kmem_cache *s, gfp_t gfp) > { > - if (memcg_kmem_online() && (s->flags & SLAB_ACCOUNT)) > + if (memcg_kmem_online() && > + (s->flags & SLAB_ACCOUNT) && > + !slab_obj_exts(slab)) > alloc_slab_obj_exts(slab, s, gfp, true); > > mod_node_page_state(slab_pgdat(slab), cache_vmstat_idx(s), > @@ -2602,11 +2675,16 @@ static __always_inline void account_slab(struct slab *slab, int order, > static __always_inline void unaccount_slab(struct slab *slab, int order, > struct kmem_cache *s) > { > - if (memcg_kmem_online() || need_slab_obj_ext()) > - free_slab_obj_exts(slab); > - > mod_node_page_state(slab_pgdat(slab), cache_vmstat_idx(s), > -(PAGE_SIZE << order)); > + > + if (can_alloc_obj_exts_from_leftover(s, slab)) { > + slab->obj_exts = 0; > + return; > + } > + > + if (memcg_kmem_online() || need_slab_obj_ext()) > + free_slab_obj_exts(slab); > } > > static struct slab *allocate_slab(struct kmem_cache *s, gfp_t flags, int node) > @@ -2647,9 +2725,6 @@ static struct slab *allocate_slab(struct kmem_cache *s, gfp_t flags, int node) > slab->objects = oo_objects(oo); > slab->inuse = 0; > slab->frozen = 0; > - init_slab_obj_exts(slab); > - > - account_slab(slab, oo_order(oo), s, flags); > > slab->slab_cache = s; > > @@ -2658,6 +2733,10 @@ static struct slab *allocate_slab(struct kmem_cache *s, gfp_t flags, int node) > start = slab_address(slab); > > setup_slab_debug(s, slab, start); > + init_slab_obj_exts(slab); > + /* Initialize the slabobj_ext array after poisoning the slab */ > + try_to_alloc_obj_exts_from_leftover(s, slab); > + account_slab(slab, oo_order(oo), s, flags); > > shuffle = shuffle_freelist(s, slab); > > -- > 2.43.0 > -- Cheers, Harry / Hyeonggon