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 B811AC3ABC5 for ; Wed, 7 May 2025 09:16:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D347F6B000A; Wed, 7 May 2025 05:15:58 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CE4F86B0083; Wed, 7 May 2025 05:15:58 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B363C6B0085; Wed, 7 May 2025 05:15:58 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 8CB986B000A for ; Wed, 7 May 2025 05:15:58 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 66CA31417DB for ; Wed, 7 May 2025 09:16:00 +0000 (UTC) X-FDA: 83415554880.02.DFDEB1F Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by imf07.hostedemail.com (Postfix) with ESMTP id E989040010 for ; Wed, 7 May 2025 09:15:56 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2025-04-25 header.b=BZZhDfDD; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=H8MyuoPw; dmarc=pass (policy=reject) header.from=oracle.com; spf=pass (imf07.hostedemail.com: domain of harry.yoo@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=harry.yoo@oracle.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1746609357; a=rsa-sha256; cv=pass; b=CswDii4R5/019DI1gZcFB+c0wpnkGng2xLylI8wVbKz5zyW+J2TgiSNiCBLFv8NLwgG1w/ CAyrpkBzm0iG0EgjzG7d6+8w+pqbXh+8arV0XGXq0c7ocdRcNKgXP9IQgzSdufhJ+sy2qZ hH61DdelguRladgBDKQLRAGeKrSoW8Y= ARC-Authentication-Results: i=2; imf07.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2025-04-25 header.b=BZZhDfDD; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=H8MyuoPw; dmarc=pass (policy=reject) header.from=oracle.com; spf=pass (imf07.hostedemail.com: domain of harry.yoo@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=harry.yoo@oracle.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1746609357; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=4AWtiVLwnYl7W2/t9djWcFyEuFj9D93/Ipfh4pLaHZs=; b=roEoTWWJebj0XavDSw8lPMRS0KoMfTgAbHMt57EPR6HwNUYOJIibt9osShTyWGR4DRTw8F qEnCXUTlvI6LKRoPFpm41qMG4Cxasy29keBtQiBk36UWz3LIBYmfU16NBnO/9tH4sHfuCM nFUbfyKYe0hu+BYYC8GbmLyBAI252jY= Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 547921i7006455; Wed, 7 May 2025 09:15:53 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to; s=corp-2025-04-25; bh=4AWtiVLwnYl7W2/t9d jWcFyEuFj9D93/Ipfh4pLaHZs=; b=BZZhDfDDxPEwilB4QMbB+u3kjQeapzPm9H 1GzCIU5dB5ksGNLfyjhZ85u5ns4DbqSsToOYiw8jyBorTDGHJQrmYbxm3aUgPdNn pRhF7qet9FEGf9cxdfcjhsNj7HBT3hOxGGi1YElrmXrfvHLBOFYUyWgntR7NsYi+ b/4t5dJb/d9VG7RQJ7BrRCrO8FO0osLJvZkJebN71Tb+YAaOaaf390E3dcKBD2qv X7M29Nccuzn98J0zFvu5EUylTbVRyA3QScvezzK7opTPO/W9zcPfzIByj21Oi12V cYdgCcEQFkUG93/UmWV68xHNOEW6UyYvSsmA4Rh36rr3+hT5dY9A== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46g4hf01m7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 07 May 2025 09:15:53 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5478INTX035351; Wed, 7 May 2025 09:15:52 GMT Received: from dm1pr04cu001.outbound.protection.outlook.com (mail-centralusazlp17010007.outbound.protection.outlook.com [40.93.13.7]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 46d9kgd3jk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 07 May 2025 09:15:51 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=HsOSxOsMSSQO8xblgUbptI4b7PItvJCrP9n1ycO6blrdJWgbhCsmK7nZ1uPwowse7ut127j1/EaCzNRnj94dp9+YSCx9rGUH121JI7Mrl0TwQTT+MsfXwFkIqkddgX7hQVSgaSPwQGSm8hmxeBgUGBjDUuWwfo6sxf/UNdGvXYlSpRqisAP1LbLF5ONgbqu28PEM0p0BiYI3VuacAFQrzts2xXntsv9C46CfHoL27iZhekzvLJL6q1wFWR4tlvs+cqOpkvNI9cZl7BCmDgO4ShnoaoRA8sTN0Boqe7LgPd7Fm0Cn+cBmfpkRI5JEufvFfjj694ff8LfeTrG2lRYmOQ== 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=4AWtiVLwnYl7W2/t9djWcFyEuFj9D93/Ipfh4pLaHZs=; b=FXw87wre09yFV7cV1r5TYO1V2HjSGxyKmfdUqUlkA40zguhhPYQToZT/2n/IofLOQgXh9MX8GvYaYfc58RWZWuOMCzTQx4LDmR1iJxBi/CmY8GZi1ueP8+c04dmlVvu/e+6E0SAiuD1l1iIwQCwyaJ9I5EqBekdBjYFAwQI018lcv4wC/hgj3zu4PyqwMRT2+oU9SkIlDjnXP60zZyheulMPEOyBSkTVvGDEiq4HIlAQM8ES27+PoFDH79UMYgl+mVtigqQ9T/ZIJrZiV2TV8QinH8YkmFbe/9Je2FTu7Rv3q+2lQwRSrKJd3md7Gu1zYVqtTnMn8AsRwa9eb2pTRg== 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=4AWtiVLwnYl7W2/t9djWcFyEuFj9D93/Ipfh4pLaHZs=; b=H8MyuoPwiz9gwDTNdyjbRxOGNjqbWNpKclWdxULL1gQddUE/JykYaXxZAcftJ2NNMwd/Y2r7Tvy7lnT/juxROLYGpNUnZEAIotv0Kbwhxllo3CTzhD4ZWRGYpIuliYUEAN5Mew70hy1gdxphWqU2fOIs5iT3L/HN1+7uQsQyOT4= Received: from CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) by IA0PR10MB6913.namprd10.prod.outlook.com (2603:10b6:208:433::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.26; Wed, 7 May 2025 09:15:42 +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.8699.022; Wed, 7 May 2025 09:15:42 +0000 Date: Wed, 7 May 2025 18:15:34 +0900 From: Harry Yoo To: Vlastimil Babka Cc: Suren Baghdasaryan , "Liam R. Howlett" , Christoph Lameter , David Rientjes , Roman Gushchin , Uladzislau Rezki , linux-mm@kvack.org, linux-kernel@vger.kernel.org, rcu@vger.kernel.org, maple-tree@lists.infradead.org Subject: Re: [PATCH v4 3/9] slab: sheaf prefilling for guaranteed allocations Message-ID: References: <20250425-slub-percpu-caches-v4-0-8a636982b4a4@suse.cz> <20250425-slub-percpu-caches-v4-3-8a636982b4a4@suse.cz> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250425-slub-percpu-caches-v4-3-8a636982b4a4@suse.cz> X-ClientProxiedBy: SE2P216CA0196.KORP216.PROD.OUTLOOK.COM (2603:1096:101:2c3::6) To CH3PR10MB7329.namprd10.prod.outlook.com (2603:10b6:610:12c::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH3PR10MB7329:EE_|IA0PR10MB6913:EE_ X-MS-Office365-Filtering-Correlation-Id: d9d1081b-1b43-409f-b678-08dd8d47bda8 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: =?us-ascii?Q?bNHlcY7Sfdh7IIk1FpYV2NwBBXhOUoSZ356YZNXxi7Sl7gHbRGimRv0HWqbG?= =?us-ascii?Q?XNWvTAsiDp/e3qkdpqgcUCntYrI+KzPj486TK38OPM+Sn8xSRrL+mq9NYpEa?= =?us-ascii?Q?dOxfPnuQhF1N1Dq7N33g9Ws4dKIi1OMyYTJNDbupJhF3ACAIxzzRIrxcZa6L?= =?us-ascii?Q?DtfYGn4AFbQg7xlMClgAwPLdKHkxQ6sgqznNQE5G83Zqs6mYXxgFxa7zzUF2?= =?us-ascii?Q?UTgytVGlvbGNWonSh45Jt6IyrvJ7Wfab/gcPbjbyUBlwDJQUE29ya0TgmNAF?= =?us-ascii?Q?mklPcZ5tx2IHHOgq1LxwkX1MjaLZfL67ovIQl6ZHJK3XDi5hsZDHgGu9++sW?= =?us-ascii?Q?6OADywKX7PXYd7XSfCLSBJ4d9vufcZmKncdURD9GwQwyfTKXQhx3VMP8bqeE?= =?us-ascii?Q?40nsf5U7piA20lNJDRQoVTgqavZ7cSfdgHwOXKTp92NP1EyR1Dp9Sb2P3FNf?= =?us-ascii?Q?Q9KgXp9tgbtsXlEu7BsZyLKyR8tk5f48OKuRjsbSRT4o6NTEefmNi1EY/5Xs?= =?us-ascii?Q?weNlVz75NKL0NFtATmyQbA7vgKT3nivI1/oGq16Rqv2TPOS/KNUCZCGDuUF4?= =?us-ascii?Q?1etFnavYOHgxMPopqZ2tVZBDWCmILChpet+xMaofF5S83DJUgd6Bkf9Jf3r+?= =?us-ascii?Q?0pG7lAB9KMBlahgbeS1lnq3/l4CIHoYGRdvKZKWRQzW0f2713/MyyuTUTQ9t?= =?us-ascii?Q?jlKwi+VXF58v8tktTHpQYHdVn+eYsozqr2Lf0Rxfos+wmcDxYaqGsmCxoc2G?= =?us-ascii?Q?tPqg32FN58vUuySXjxLASYCvFtt77Fc4ke2zvQ+lvlFFe5VmRHs8iseOzXEu?= =?us-ascii?Q?PnVcCxUvGBG3QMMwGF2CbuSYxlFoZ3GAaEyfYIijp84qqkOXWjioZBEWYEeO?= =?us-ascii?Q?NLJVsJTw486jBWOwjHMu8fs6eVcgsUqWXllnAtQKIy7nxlH0dJ6rIEwghpFl?= =?us-ascii?Q?GIm8ZUHoADdCzcMBeQ2I9M+2Ie4XJioCv+mI83LPiigR2huzXn2sfcLtyEyS?= =?us-ascii?Q?Ca3uqB6DDE73VXRt/qI6ou1Gl24Ew6lfD25dQNY+S0OFxICDugUr8LkGXKlh?= =?us-ascii?Q?xsWG15I0oWKlWpEw/fQhLHs9VVQ5WlV4XRoT9yoBwo1BfjHUCAqEVoK6Mv+u?= =?us-ascii?Q?WSi2E7AMCrLD4totwJCohfchFfz/SdkPmw+vuGX35zWyTqcx1QYR24oIl/mi?= =?us-ascii?Q?mDLJAUAsfK+7IGFpHGGyglwCkp7eELzondKtRZSuLr9BXhvFhTtE1t1QvYFM?= =?us-ascii?Q?LnzJwUICnC8ugBVCmoSxxS3q+gSby/Jaw4gWHU4XH2LY7xt/ul4nTAFeRJRU?= =?us-ascii?Q?8Wgq5/VZDBR4nK69P4yFCzL861BV9asD2VGpjsDS6Ku/FFHx2PyMr1TGxyOE?= =?us-ascii?Q?g/IGzf2HINlir2v1OBtg7U7evHL6uGcildsGPL1r+KuibuV1FHcSPaf62Nz+?= =?us-ascii?Q?a6OF8pGqUbI=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: =?us-ascii?Q?n0LWkGzZ1uxN3qrlEj3W+lbvRmpI/vU1+nCBh2njiKc9Xne1UD3wXctEC3hA?= =?us-ascii?Q?eGxVW8WMtaUT+6B0PJEv5zfhUOgx8mNgXRIC6jzRjbpvc5jztjtvzjKeurFH?= =?us-ascii?Q?EdLJcRLNt4D815wVtOJncaeJUVwUee60/b5KSqOGQRJL9GK/q0qdHTUhUV3X?= =?us-ascii?Q?4edhvZ3IFJLSq4LlJUzi3l0POwGwgz/2quFwjMwqD1Lndjkm5DKkalUJWPw4?= =?us-ascii?Q?ozhAuKHlc+F8V2sqJInCI0Wg0dJ9bVPQ1YHoWpe/Tue6Uh95VJ1UNyCyl6LU?= =?us-ascii?Q?b8zz9hTZr9y9yzBxXC29KcOieZCLeJ076oWeocdFedLeUlzsnMdiiXICAH+P?= =?us-ascii?Q?firmtUzqZY5LEqe/8VSVGVr5nrlJYwRTvaMsCQTjGphaqmgJoyk3cAylFPGt?= =?us-ascii?Q?AdKHRINzp90jiIkgUOc4XqZykoJsRs02EnADHmONr20kszGxlrTeqs9RjK//?= =?us-ascii?Q?5m/SPdKcfUOiKDxCrvMhB2kQkQOemfB7pnv6U2OfXt2PNccysMyadEa+KCg0?= =?us-ascii?Q?NQS06JaqKZT1rw6eWa5kF9nttJ4M/ukEMei+ujjZY0GPoPozxtydcoRSG9W7?= =?us-ascii?Q?xT0V1iOdc3+sTfH6HLKz90cO37fBmRt/oeT4uSlnKvE7FtPOOXfrgNa6QHvg?= =?us-ascii?Q?cF9vwrzECEXIEVr91jtwG+WSiAo8AjRi3F+rIeQRMSp1xHboDGndJn6dmKYK?= =?us-ascii?Q?+hHGpvsoK88o4WQEdVbgzZ/PYHh1wNtzFFl53+edg1Op57cF2zPhqq783C+C?= =?us-ascii?Q?wyBsYhrg9eOsk5jVq2zgI2Z1AvhmFf0akTxBnVpeRGgmh48+oCUiLRdV//N7?= =?us-ascii?Q?PGa+PIQ6dUqBshIdRuTKrDlV+2MdukYoQP888JCKQZ+imnPFWv2lc2uJ8zai?= =?us-ascii?Q?CSpHOlFwStKTkIM5+FjkP5Bp8clf4tx67v2sbBtDVU/04rA5F+rEwnTt10R6?= =?us-ascii?Q?7dqS00sNy0/i/y8mgE8ONUoX2+IEoZEvqXon3U+P6PeZavjdWujS0ld9Wgeh?= =?us-ascii?Q?eF7CLj9d+8r+GOT/LaiFM17jtUPydDBO0VlHUymzl2gM08MtbbNIyMhRrgq8?= =?us-ascii?Q?B/RckL7dnxwK/O/TRF14vxl/WqbbmalfZwQx+0zCr8syCLk7C2q9EFVyk+tf?= =?us-ascii?Q?2rW2uMoo4QTmGjVBBuswvhRwccqflvIsLJnRozPzCBplhKHX0gbFPqjJHXpL?= =?us-ascii?Q?vSM0UucucBVYL3xLc+gsWhBnUrEYJQ0vGGcJHdn/D43J/BP4ToW4cfLOfSwz?= =?us-ascii?Q?4s5BJ5a5D0nphtXi7pqVfuPsnphPdwxVVa19WHKbr2t3woWSWVBRnvkPV5VC?= =?us-ascii?Q?lcCPg1211iA7BaYpQ0bJ4xNY/OqpXQwmWmnABfibv80TRnRNqXsFlGSETwJo?= =?us-ascii?Q?DMpF5tSUDAEIU8iReFAQMeTSJs0k+5aN0hpxsUtUgL+V0IS2EiZ5NdippQy7?= =?us-ascii?Q?pOgy4VVH9q96QursXoLy860LGNaWT+aEC7DJzhd13EC6bfMCTNuvcdEHMnD6?= =?us-ascii?Q?pqqZ9Rqey/h/y3aMNX908caJEayFjUDT4k0v98ksS9EzL1ucZ78VSbYPq3lt?= =?us-ascii?Q?iU0N44T31JZi34Y0S+BgZF8nZHc5aECZiYSENW8u?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: wod5h1ztPPe1oW+m5g+tylfTRrT0f24IvvPJrcx3ZiV9+OJdMUkP265eAZ3NQpmZdLWAZmjbZjNKI+MMatbRH6GPu3cGZUNM6diCsmqZTN8KNAbXtp4gUlIKYHbLLi+vuvYxB8+5ZB9cQ7SZvI0nkstCnAWgt50Do1v7WyJSzatxk/0jhJmdyqjybhVhphjspRhTNRUzQwohZL3mk1qFtxwbpcue0R4wXvtCW4YQgs/MrPDqdOyZsq5uzx/IT5IdwE8IHXQREGlnGmAz5cVpkTnJNG/2whas+B0pxATa6tlj0IpNAFo5Sv/Z71gNi/xwT9RUyF6Zb9fNzIEcZkjIjnn9BEgx/7+e8J1Bvt8hvs3jrGebhHn8BXn0LF+qwZr/03YqN9kJdXPcEXFZVb99SOCYfHJZBbf6e80ohjesxGoKyyyG1NDkaDOs4gUwl5o6pa64nxN6AivxlhMFIcPBZZZUMF+NQe/Yrevpg/McuLyEdCBeewRLbE6KHpvMr407eLI9686rLl3V9LYRwfQZPLAxkrZ+n/p6OshbuJMPivMh+ASoZLWLPweezwmq7d3elYfot8NVfZDeFJGGMgFPxJeX+X7Q6T+kExW2VYJqEgk= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: d9d1081b-1b43-409f-b678-08dd8d47bda8 X-MS-Exchange-CrossTenant-AuthSource: CH3PR10MB7329.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 May 2025 09:15:42.3756 (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: bTAHfrAdj3JxNpR3sJH/9zskcX4gl1AcSG/EOGWr3XEyH5pTcTXfloDFyGgVtaaNslFx7pYmtS7NEKTDRMDBew== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR10MB6913 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-05-07_03,2025-05-06_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 bulkscore=0 suspectscore=0 malwarescore=0 mlxscore=0 spamscore=0 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2504070000 definitions=main-2505070085 X-Authority-Analysis: v=2.4 cv=R5ADGcRX c=1 sm=1 tr=0 ts=681b24c9 b=1 cx=c_pps a=qoll8+KPOyaMroiJ2sR5sw==:117 a=qoll8+KPOyaMroiJ2sR5sw==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=kj9zAlcOel0A:10 a=dt9VzEwgFbYA:10 a=GoEa3M9JfhUA:10 a=1XWaLZrsAAAA:8 a=yPCof4ZbAAAA:8 a=QOL_H-a4InYEQcX7BWwA:9 a=CjuIK1q_8ugA:10 cc=ntf awl=host:13186 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTA3MDA4NCBTYWx0ZWRfXzYpVC66oPwwG ziLi7+21U+16pHQh6iQuMsz8PQgVYtnqDl4gaLq1+SHyzwEb9SkDDce6UPVr13qzzHapHeMyByI wB2QJ0yXXDPhPi1jrwTGc6lNj8fX7nDwOum0f10S7nzr+21YrhhtupvSdb1GpAoK/mcdYgcTjLK XVHiBHpc3L8mFP/8lTsKBurKUBrdMnzCFkM0HdDiFnra9ZhvyUZ4aQHYbjNZeJA9vBlayAc/e0u R6osYZ4ETVTYhOdwfuGPlLPu61BaCnIeXNj8sCeI2PIeluHgyKwu7E0/3iy27ygEPef9ChC3AuI loKuCFBs0dDjBCLG6W8QmymVDIt8EMZNi3zJZcJAlGOYM/b7Ket/1LHoDt6PsMFFSr8d1PIdIgw w9+9qYczNN7WFOOWlgzPeXurgVL8pBCFYMkq8PMnI2tfAH/6rKJfDF8rhZmD47oqjk0ogiEr X-Proofpoint-GUID: DL37EzRgGg0k8iEfHEz-zeRnCIz1YuAN X-Proofpoint-ORIG-GUID: DL37EzRgGg0k8iEfHEz-zeRnCIz1YuAN X-Rspamd-Queue-Id: E989040010 X-Stat-Signature: 7wcccdt1frxbhyhegaxama83utw3ougd X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1746609356-205376 X-HE-Meta: U2FsdGVkX19A5PFw16is2CFJYxOAmJWCzzwpOzXjpmgDCljqHH9IjdNqIw+PBGxV+8qG691TSQMIh5yEdkMziEKKceeMbkMn2zD4T+UTl6sxAlPH98EiE3uDJ5oGHlT2EA+Rg7kNmqzNs89B7Z2e8LQ7BePvLxQp4PVWs88ht8fezQz+9D21ZzxnDeSY5bw7S0CIruD6IOZwJuffdqEiq9EfHKafeDdrBAeYsYipv++294Uj4fMiiSqW84byHTRIITsnLxx/O9vxcgcwqZu/rWx4RHRotMerpaY5NSUh10kJy1pOseFNodS1czAVMjkViED3Nm7deyMxA7ZtzttZW73ItzA2pXI9l3wPISaDGOfTfG6sEETVvAJYt2dzAY2HgZWNBnacKEjBBY/hFtmab+B4nRvfYMO0C0eWN/W3hRbn9VFdYQqGPBewWhtBshUr9dMIwkvx7rPYkXbHD56LFfssWnqv14XEhadJW+PjVPxe30zavWE26Zz8qA/WDeBPFoXgQ7ykJUAXH1izI/wfaJJetmF+e31gLb0kVy3TSVMZA3zFPjb7s8u189c75SsLCecrBxwyxnIs62LQlbtPxWKa6s0J8TiI2RMis2ipEsuo7jr/aXcjXYz3jp+O6EjYajIC7/V4K6RnqydI04PHGzIIWtEkNlTWg3jX0/U3ushf6+sXqAR0tVwplXUoJpO11u00RKVtSbG5gsaWwcqErvSVbH8eh/czPsqs0+rKPMIecr+IOo+oP71NjZXSy9kIfILPB1RjRpgJzZn4x5KcaWIHO57eXz8r2XeaZgcD2p9Cn5VumAF/vWyG8N0ESEyVji58CI+NCziPNKF6QOWDMldoVIqmR2PMua7bFWD38st9JA27nAJRZheAyFA8KlG3azRtfgOvE2K+7iEgV3jfbyxHOMCayIkq212BwnNg9WMc5+QtFCDhHeCiFRbB3KzNw1wluljwgzwBFcOgYnK 7PFRky7z 7q8/oWNuDAVuq0/Wxf6XIYWNrVYZmQNFDkK81Ge53QU3enWaIQdVan23IaDQJSVWnk1lDxnfO/Uq98B7O76ZN9fq8Nn3pe/sFDUifj3LWVMPi3zrDIcm3fA6s/F9pmYAWrDmMEEsrqoZKD3CZqDcpMVnKhMkCoB66aANwBA+ycPPRC6QJAEEv8NxhUpkjHo7K0c3RLoRXMIWI4m/GZaJaOC4o7AybwpdLOwe6tKBkYDY/0TYNC6OF+XLpXs4is10bjYU8dlHDxqPor00EEpg38bPIJMTZAVj5HRltW8lArHRsc8xGLc0pzXLYkdgCpYwItrG3QpyaHiKr4RDNXb4K2j4t4C3EhePFnjGyDIm0r8pWKnldnh5GJEZyZHNwe903OHD78QWug1h4mDd9nKT5YPP4gz0TnJM5WEZ1Xb0fTnl0K6DYWRB9uriMzwPENVEJ1HQwwkhebcA99YqML5Jc8x/p8ySNa8R006I/npo3ziQwpz9DdL2rR0P4yG+QHTAmHMj6TlEpVMV8K0tvmFbBK96n9HHuO4wSK/bZTcjHQA2Q4XIxkPS0VuUMcP0ZRj5swzMag6SbqAiSViIcr02f8+uIi+kxXojvxVYmRxmoXrg2dQhWImRdHFTdjgnM7fyYN03vR6Y3FopsV/Sm2naxIW4CPUYE0BqIqtyDDEy7lJY5IjvmCqUSzAyy3A== 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, Apr 25, 2025 at 10:27:23AM +0200, Vlastimil Babka wrote: > Add functions for efficient guaranteed allocations e.g. in a critical > section that cannot sleep, when the exact number of allocations is not > known beforehand, but an upper limit can be calculated. > > kmem_cache_prefill_sheaf() returns a sheaf containing at least given > number of objects. > > kmem_cache_alloc_from_sheaf() will allocate an object from the sheaf > and is guaranteed not to fail until depleted. > > kmem_cache_return_sheaf() is for giving the sheaf back to the slab > allocator after the critical section. This will also attempt to refill > it to cache's sheaf capacity for better efficiency of sheaves handling, > but it's not stricly necessary to succeed. > > kmem_cache_refill_sheaf() can be used to refill a previously obtained > sheaf to requested size. If the current size is sufficient, it does > nothing. If the requested size exceeds cache's sheaf_capacity and the > sheaf's current capacity, the sheaf will be replaced with a new one, > hence the indirect pointer parameter. > > kmem_cache_sheaf_size() can be used to query the current size. > > The implementation supports requesting sizes that exceed cache's > sheaf_capacity, but it is not efficient - such "oversize" sheaves are > allocated fresh in kmem_cache_prefill_sheaf() and flushed and freed > immediately by kmem_cache_return_sheaf(). kmem_cache_refill_sheaf() > might be especially ineffective when replacing a sheaf with a new one of > a larger capacity. It is therefore better to size cache's > sheaf_capacity accordingly to make oversize sheaves exceptional. > > CONFIG_SLUB_STATS counters are added for sheaf prefill and return > operations. A prefill or return is considered _fast when it is able to > grab or return a percpu spare sheaf (even if the sheaf needs a refill to > satisfy the request, as those should amortize over time), and _slow > otherwise (when the barn or even sheaf allocation/freeing has to be > involved). sheaf_prefill_oversize is provided to determine how many > prefills were oversize (counter for oversize returns is not necessary as > all oversize refills result in oversize returns). > > When slub_debug is enabled for a cache with sheaves, no percpu sheaves > exist for it, but the prefill functionality is still provided simply by > all prefilled sheaves becoming oversize. If percpu sheaves are not > created for a cache due to not passing the sheaf_capacity argument on > cache creation, the prefills also work through oversize sheaves, but > there's a WARN_ON_ONCE() to indicate the omission. > > Signed-off-by: Vlastimil Babka > Reviewed-by: Suren Baghdasaryan > --- Looks good to me, Reviewed-by: Harry Yoo with a nit below. > +/* > + * Use this to return a sheaf obtained by kmem_cache_prefill_sheaf() > + * > + * If the sheaf cannot simply become the percpu spare sheaf, but there's space > + * for a full sheaf in the barn, we try to refill the sheaf back to the cache's > + * sheaf_capacity to avoid handling partially full sheaves. > + * > + * If the refill fails because gfp is e.g. GFP_NOWAIT, or the barn is full, the > + * sheaf is instead flushed and freed. > + */ > +void kmem_cache_return_sheaf(struct kmem_cache *s, gfp_t gfp, > + struct slab_sheaf *sheaf) > +{ > + struct slub_percpu_sheaves *pcs; > + bool refill = false; > + struct node_barn *barn; > + > + if (unlikely(sheaf->capacity != s->sheaf_capacity)) { > + sheaf_flush_unused(s, sheaf); > + kfree(sheaf); > + return; > + } > + > + local_lock(&s->cpu_sheaves->lock); > + pcs = this_cpu_ptr(s->cpu_sheaves); > + > + if (!pcs->spare) { > + pcs->spare = sheaf; > + sheaf = NULL; > + stat(s, SHEAF_RETURN_FAST); > + } else if (data_race(pcs->barn->nr_full) < MAX_FULL_SHEAVES) { > + barn = pcs->barn; > + refill = true; > + } > + > + local_unlock(&s->cpu_sheaves->lock); > + > + if (!sheaf) > + return; > + > + stat(s, SHEAF_RETURN_SLOW); > + > + /* > + * if the barn is full of full sheaves or we fail to refill the sheaf, > + * simply flush and free it > + */ > + if (!refill || refill_sheaf(s, sheaf, gfp)) { > + sheaf_flush_unused(s, sheaf); > + free_empty_sheaf(s, sheaf); > + return; > + } > + > + /* we racily determined the sheaf would fit, so now force it */ > + barn_put_full_sheaf(barn, sheaf); > + stat(s, BARN_PUT); > +} nit: as accessing pcs->barn outside local_lock is safe (it does not go away until the cache is destroyed...), this could be simplified a little bit: diff --git a/mm/slub.c b/mm/slub.c index 2bf83e2b85b2..4e1daba4d13e 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -5043,7 +5043,6 @@ void kmem_cache_return_sheaf(struct kmem_cache *s, gfp_t gfp, struct slab_sheaf *sheaf) { struct slub_percpu_sheaves *pcs; - bool refill = false; struct node_barn *barn; if (unlikely(sheaf->capacity != s->sheaf_capacity)) { @@ -5059,9 +5058,6 @@ void kmem_cache_return_sheaf(struct kmem_cache *s, gfp_t gfp, pcs->spare = sheaf; sheaf = NULL; stat(s, SHEAF_RETURN_FAST); - } else if (data_race(pcs->barn->nr_full) < MAX_FULL_SHEAVES) { - barn = pcs->barn; - refill = true; } local_unlock(&s->cpu_sheaves->lock); @@ -5071,17 +5067,19 @@ void kmem_cache_return_sheaf(struct kmem_cache *s, gfp_t gfp, stat(s, SHEAF_RETURN_SLOW); + /* Accessing pcs->barn outside local_lock is safe */ + barn = pcs->barn; + /* * if the barn is full of full sheaves or we fail to refill the sheaf, * simply flush and free it */ - if (!refill || refill_sheaf(s, sheaf, gfp)) { + if (data_race(barn->nr_full) >= MAX_FULL_SHEAVES || + refill_sheaf(s, sheaf, gfp)) { sheaf_flush_unused(s, sheaf); free_empty_sheaf(s, sheaf); - return; } - /* we racily determined the sheaf would fit, so now force it */ barn_put_full_sheaf(barn, sheaf); stat(s, BARN_PUT); } -- Cheers, Harry / Hyeonggon