From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from BYAPR05CU005.outbound.protection.outlook.com (mail-westusazon11010025.outbound.protection.outlook.com [52.101.85.25]) (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 536B71509AB for ; Mon, 20 Apr 2026 01:40:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.85.25 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776649229; cv=fail; b=knnrkaGhA+5DCe2TsqX8FsS4yCeB3IHsrRo/McVqeVCMo2zlA+aAl0KAnOvh2C48T1zCOey85YqGx5UJMSRLuDOdA9hfpu0majZyF+fodSCavlNqY/yJ7uCd/qVrc0Ux0QNtKKjVawfk9S4csiDyu1Z5A9Tp42HUDNA7exaAxHs= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776649229; c=relaxed/simple; bh=IJikKu9eEdCvA8YaJhRDPSshRvBRfVgwc7YC4OrK9XE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=pRJtr0KTce+B0Fi9vkjiZgEbPdW/OT2i+Dq3QFYjI12DL70sM1/7EMP0GwY30EotSrekUvLXti6gYnGhUUWqufUbklHYw+lYNu6Ju3EFqlTLLJ6V73MgEJLjLzq16uDEK5c9A8swVbxRoQMHXV4ENCgm+7D9GCi/k0TGDD/oeFA= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=p3kMYcRa; arc=fail smtp.client-ip=52.101.85.25 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="p3kMYcRa" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=C6u5111LZKyO16fVsZvhWUK7tAF08uDsF963z3196ArG02Vwh+y+2OMRgIyekNPqfrGAYAF6UytNzfcYdVHDeR54MGrg2HtI4x52K9u2JMJEflUHriIyVtpObhEXpYw9KSfAeIU0QfefVRChXVBGD8ZW0qcP6kVMd37a7BRQ6m+5neJVi/LaIozJn7XsYapduJ7tN931oOCxFZgcE43hIF+Ses2q6+H3bbJNN6SV7hbDDFU+uFf4UzPIcJu7HBm5M1jxaWqRP/M064XOjAVajXZh9jDtMXYOl4btO+KKhwrIy4ZD/rYcZMsfhexBvCAFdmfb915ZN53ClxsiRa2rhg== 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=/bL641kLXVS3MO9pjfFZv+/CUSc0GapdElhnJ5HlU2I=; b=Z3fhbZ9ZCQxxINdw8Wx4Umpt07pvCxfHo2PloPCYunvrj2skEv/H7TXzWw7JY976PbXnmnH2LHYCQaHUP0ntzW7vesUOrgvKQLy7e9mNzLM1yNKl1mXFUt4wnHVXPHc2irhHf5X2BtX1XBBzNjrfjNfGtciETM6g01fGi5l1HhdHGNO1LHuMP9nG08WONBMjAYQArFATCXaD9Z7XYJ5ZnPnpO4fE0CArTd0Br4th8KjToMoi60HVzmOdonn1sTNE7UV7MzLA+r2HFfXd7nnoYDJrsweJkzx8UZyREcnUnYVc7e/VTkioBTCPu1RRB1rUoPdWC326FKinIS9woh98JQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/bL641kLXVS3MO9pjfFZv+/CUSc0GapdElhnJ5HlU2I=; b=p3kMYcRaLgpjUCzxD6rIGA6az+MIS084uprQlJghayITpV5+DB41sQsEmgwDF9m0MEC7jCtzIyvKNvZ7QrdgbMQ6X+0/aqvuPmaZYsKQMWViHVqK/6UQq0PYaULKon/9oLz2k1z4dVO7UFN+HbStJTshNvqehqUMyRw9XVYKZEnYZsQ/zz04XKnLXquOjLwiW78yx+m9ByoZKqRYhR0ahed7AfCZ63cjeVVYvkyaGr3Q/68zKjElT4ZbW+rjCICMnmfvcojk+4hmPTtT5wEqjFQqZh11SmqTuBcAEKx+6ozuZ/hmAV3czd7GWNha5y12+WR+CfbDxuAUJHDcQGVE1w== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by PH7PR12MB7332.namprd12.prod.outlook.com (2603:10b6:510:20f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.12; Mon, 20 Apr 2026 01:40:25 +0000 Received: from DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::f01d:73d2:2dda:c7b2]) by DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::f01d:73d2:2dda:c7b2%4]) with mapi id 15.20.9846.014; Mon, 20 Apr 2026 01:40:24 +0000 From: Zi Yan To: Johannes Weiner Cc: linux-mm@kvack.org, Vlastimil Babka , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Rik van Riel , linux-kernel@vger.kernel.org, Johannes Weiner Subject: Re: [RFC 1/2] mm: page_alloc: replace pageblock_flags bitmap with struct pageblock_data Date: Sun, 19 Apr 2026 21:40:23 -0400 X-Mailer: MailMate (2.0r6290) Message-ID: <20AA822C-F702-4EC4-B0A3-5C5CEB1D1952@nvidia.com> In-Reply-To: <20260403194526.477775-2-hannes@cmpxchg.org> References: <20260403194526.477775-1-hannes@cmpxchg.org> <20260403194526.477775-2-hannes@cmpxchg.org> Content-Type: text/plain X-ClientProxiedBy: BL1P222CA0022.NAMP222.PROD.OUTLOOK.COM (2603:10b6:208:2c7::27) To DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) 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: DS7PR12MB9473:EE_|PH7PR12MB7332:EE_ X-MS-Office365-Filtering-Correlation-Id: 47c231ab-a687-441b-728a-08de9e7dcafb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|366016|376014|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: Uy4h6bY+FrWY/i1PCS8qeJVceJ+xh/U7toEMImH3UPID/Gz7JztFqrTQKJwJHSmeuPbdmFtCVl+xvzPlIjl1JZREv8Bcw2XYuL9cUKDmGkyu2XiLstO7BswtC7RAcEIv1qXC0X5hY5OBEX5uTxwXbThO2G7oEikf8dTSVi1b/ihJWnCQK+zW6gjm+bdkMkJls17KiburggnqO+Km896sCoeMADxuE5WqVr2vnLAL56U8LPy7EGXX/TjHieJXRB/W+dzeqRgW9nVOPf7zVp1D5N1ntEj5zkBhXXaMerUsrb6cQZ0VX0xIbERNisroF9GOGybP+cOLAgCxgouv/ddeR8oxL5mbXB5+AkB7/5k+SzucFsYbgTcOYDWK9V7lsNHl47gavrLSb+szmSn6JN7Wg9wB0WfbQxtWh+1rhj5hF6gwz9fZfLw7a/vpgFbWSBfPKByyMbNN9qkJOGa2/zQ5PDRKvfLcvCgV9r81X9PVNlYnsAMsuZB9xLQA6wzzSrtCsXSv+H8LUQchEDegK5gpL7hnredZm8d85ixGlW0eNRr7vNKVK8nPN9xWlBoHF3tdBSgUBMCFVjdDA9lfCobn+huuKpLAmh6qWFbQI1D7H7jnzaVvwFtNZ6JaebhPOHSsYGn0Bn+Jv6SNYkpD+/k8Ri6ILDv4LL4rfHCY1N77ygFIH3XFABzE9VdbUWpXaYvfvzrOGU7Sl2tx4K02bpWh7x7bwCIZyOalGR87XPF+prY= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR12MB9473.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(366016)(376014)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?oaEjoaCpgABVfyUS4fXQsiZwzfKpg/rxnZFtaFR7tXaYhkhCzwuwhKK4e+gF?= =?us-ascii?Q?LyPlAUzKaKnY07lR+qPYKLLsCbj3D66RHTbLYO6+vDd4L7fQBYjbY2CHUMaT?= =?us-ascii?Q?bZMNEDgkJBR7HrF47Dl7MvbSF0vzF1mloa9ZU2zC+zKALLva1jBbFMmOl1rG?= =?us-ascii?Q?zYwde7hhmOwNONsYHezLuDKHB5+7L9uU71CL3rJoCXOohV8hfApm1bvALbpf?= =?us-ascii?Q?+S/sBII40ss8HIh5UY/NJsItkwUD074Ha7D2OxQwFqJG2E4VppQlN7OLbfON?= =?us-ascii?Q?FMUCw/8r9dmHkdeaDNbm9XFtExWnVHvkPjIY4m0+sk9F0qOIiyJGBS6NMu4a?= =?us-ascii?Q?/wbch8v1LshSlvE1FvEqm3EYTFOqKu7XzZVmMtCmcmBdGMJhkPWOKR8wYDIW?= =?us-ascii?Q?VUM1TlFk3iN9zMnk6xs9/ignFVNMHuLvrRa0vGWk9+hMydXjOIgumK3hE3rc?= =?us-ascii?Q?X46UiF+GM6qIQZ3sepTj8P/+u4klk6Valvs/8hB9r2goTW+NiDTK6FjaDc37?= =?us-ascii?Q?d5GSpzls79uScUpSCBUDYrOKvnoYjpQV5W9lwFRwCF5I/i8+t5gC6Dg5nf+m?= =?us-ascii?Q?Jjj21RQc1uPs13fqhbDvkJBi5DDonR9dD1W/OciwyCkX04f6Hq4OTO+yEKKn?= =?us-ascii?Q?uVenxCg1SoGwCQO3BIbr702haNMxFAvnPBEiyZeDHnZVyQixJp0AZJRAgC8O?= =?us-ascii?Q?B8ps1AKIDymIz8kl2S+GqG9DA/SVNepEz+p9Xc0XHPUKA+lfOwtpG1UW4Z5L?= =?us-ascii?Q?6UMP1XMBdbN+Tr+TxdLg5wqe3PGS/vdfVpqbd695C7jksbLEl/mHcodMSOZO?= =?us-ascii?Q?w6V5n73sLTba7s3S5riYwZC9wm3pO5Kvwm5kE1Jj+MUuzm9mSFMWJEiP7Ehw?= =?us-ascii?Q?XtvDhjsUiURF9RNvhIANTNlx0mMCJMSg5ic0Z6mDa7WwxffW86tYd/VN64DA?= =?us-ascii?Q?bJjktplXru9kXHSqXKduE+S4ToFgEWb1kSoAR+XUX0w0l74r+OLJAZPFizsM?= =?us-ascii?Q?yeasJU1ySJ0H3qHsuNS+T9c6KnfWQEY/bzgT9EOn+TJ9d460a/Lopfp6f9k2?= =?us-ascii?Q?FRFnEaZ19c6rW8IwFNpgwvdey9sYMh0/R0s99DtgoXMW5ltZ9xlYctxFaaMJ?= =?us-ascii?Q?voEvM1U4pqswyM1vy+GyxC8i5zg/1VwgZk3TPIv6cx/Rf43qZRRWhurjCU6D?= =?us-ascii?Q?fjggA6QldkNvgUYy/74NXT4PjNqszgggK+spEeinHqL4iETJCMeLYmb3/gwR?= =?us-ascii?Q?rMGVY0+pNTzdSLi/t9rAjeUI5c8ttUWJA1AeUNL3XRP/Px+DpSiBv6tgWiaA?= =?us-ascii?Q?1GN78BYJg+9yr7Srck320jJgM5SJKw7fPtTwwwzDuTfoZ1MB1TleehNnwOmV?= =?us-ascii?Q?scndZrA9YcJiIHrhBHbKx+tSkRlvJHvG7KYL9mdDzm4Bfu1GK2kemm2q8Daa?= =?us-ascii?Q?3jK0fZX/I5WUirvQ7pc9dt+OxF+NiSt6aCGt6YZPUyth7bs3/1wJKRK+K4ec?= =?us-ascii?Q?4AjWTeHFeMbsC4f9a6v8WJxOk/3G/WnVhvhi4776gapUv3uNl15vzPASOM7y?= =?us-ascii?Q?OCkyDO7RCvQsZjKlumHHJ5fnlkD0AZQodqog33uewiUuAwv87qsZDmqD0F9q?= =?us-ascii?Q?36YakfNYRzrqQKplf/RArTjEo4Z4SByc2PwodOoOA5rHMiLl58Nym7mAGvwM?= =?us-ascii?Q?URKCuK6QUxw6cVnKgbFlLfWaKN38P49o6imqAhyS68ay6rb3n4YzsbsWfRVj?= =?us-ascii?Q?P/GjKHRtPwbrma/Z6MbbgoXig7PPYztf+4HMqLQVdGAwsEg7GiAy?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 47c231ab-a687-441b-728a-08de9e7dcafb X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2026 01:40:24.8054 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: QcJJsqWHxVn9qS79mv35omW+TL9DT8s5KdXYWlACszVZdw4sGAcMISmeY8gofufD X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB7332 On 3 Apr 2026, at 15:40, Johannes Weiner wrote: > From: Johannes Weiner > > Replace the packed pageblock_flags bitmap with a per-pageblock struct > containing its own flags word. This changes the storage from > NR_PAGEBLOCK_BITS bits per pageblock packed into shared unsigned longs, > to a dedicated unsigned long per pageblock. > > The free path looks up migratetype (from pageblock flags) immediately > followed by looking up pageblock ownership. Colocating them in a struct > means this hot path touches one cache line instead of two. > > The per-pageblock struct also eliminates all the bit-packing indexing > (pfn_to_bitidx, word selection, intra-word shifts), simplifying the > accessor code. > > Memory overhead: 8 bytes per pageblock (one unsigned long). With 2MB > pageblocks on x86_64, that's 4KB per GB -- up from ~0.5-1 bytes per > pageblock with the packed bitmap, but still negligible in absolute terms. > > No functional change. > > Signed-off-by: Johannes Weiner > --- > include/linux/mmzone.h | 15 ++++---- > mm/internal.h | 17 +++++++++ > mm/mm_init.c | 25 ++++++------- > mm/page_alloc.c | 81 ++++++------------------------------------ > mm/sparse.c | 3 +- > 5 files changed, 48 insertions(+), 93 deletions(-) > > diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h > index 3e51190a55e4..2f202bda5ec6 100644 > --- a/include/linux/mmzone.h > +++ b/include/linux/mmzone.h > @@ -916,7 +916,7 @@ struct zone { > * Flags for a pageblock_nr_pages block. See pageblock-flags.h. > * In SPARSEMEM, this map is stored in struct mem_section > */ > - unsigned long *pageblock_flags; > + struct pageblock_data *pageblock_data; > #endif /* CONFIG_SPARSEMEM */ > > /* zone_start_pfn == zone_start_paddr >> PAGE_SHIFT */ > @@ -1866,9 +1866,6 @@ static inline bool movable_only_nodes(nodemask_t *nodes) > #define PAGES_PER_SECTION (1UL << PFN_SECTION_SHIFT) > #define PAGE_SECTION_MASK (~(PAGES_PER_SECTION-1)) > > -#define SECTION_BLOCKFLAGS_BITS \ > - ((1UL << (PFN_SECTION_SHIFT - pageblock_order)) * NR_PAGEBLOCK_BITS) > - > #if (MAX_PAGE_ORDER + PAGE_SHIFT) > SECTION_SIZE_BITS > #error Allocator MAX_PAGE_ORDER exceeds SECTION_SIZE > #endif > @@ -1901,13 +1898,17 @@ static inline unsigned long section_nr_to_pfn(unsigned long sec) > #define SUBSECTION_ALIGN_UP(pfn) ALIGN((pfn), PAGES_PER_SUBSECTION) > #define SUBSECTION_ALIGN_DOWN(pfn) ((pfn) & PAGE_SUBSECTION_MASK) > > +struct pageblock_data { > + unsigned long flags; Would it be better to make this uint32_t if !CONFIG_MEMORY_ISOLATION and uint64_t otherwise? MIGRATE_ISOLATE is the only reason to have 8 byte pageblock flag. > -#ifdef CONFIG_MEMORY_ISOLATION > - BUILD_BUG_ON(NR_PAGEBLOCK_BITS != 8); > -#else > - BUILD_BUG_ON(NR_PAGEBLOCK_BITS != 4); > -#endif We probably still need BUILD_BUG_ON(NR_PAGEBLOCK_BITS > sizeof(struct pageblock_data)); just in case in the future we add too many pageblock bits. Otherwise, this patch can be sent and merged separately. -- Best Regards, Yan, Zi