From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from CY3PR05CU001.outbound.protection.outlook.com (mail-westcentralusazon11013029.outbound.protection.outlook.com [40.93.201.29]) (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 1A6DE1B0439 for ; Sat, 15 Nov 2025 17:51:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.201.29 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763229103; cv=fail; b=tW4CR6w5PV7o5uckWpD8lN3DkNto4BRlm8OH/Xdna8QLrmcBYBFA979fzYCroqs0bWVzkJbHeiah9wQfYCjAj9AuHaTzs5JfoSi5J/ix7GZMEcn26Og8Di6hR8TY6tfaqdRfO46uGEPbQa1w23854BeUatwtBIq+27vTUHNEb3w= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763229103; c=relaxed/simple; bh=ZNop9cZbo6RPt60+9qfKSx0LSMGiF0n3X7X6c3LztBc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=KkztNbPpOsBcTaiKkWnEPgHfNbY4MCOR/1ieAoRYFr1kv2oyqZN5ukwbZXt0w1wLIPA8SBfC27dsnVVGT2dd1kjYoxuO9V5T9w5J3+6loBLxKKNvySI8CbhjVNG7fw+1+//rU/e5rhgP5ngKYdQlJ3VMHrm5utwiWwvJUnVOctY= 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=NzQJo2tC; arc=fail smtp.client-ip=40.93.201.29 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="NzQJo2tC" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CIffJTY3SPczD3/Ldf3RIKlZ+MZ5lBYZ8qJ468Z/Y48pFWtZ1T1dR1S+nGXOYcY70hMGa8qLXo0nbKtzLto0s4PQkmhSopRxq5AxzWBYyIlqt3Y9EXHOJZAD7+XU6lh18bj9jhAQKNuYLXRtCICHXpFNwB1Ml1J3fJrTEV+3nFxZGiMn0xuRuiBsytUjnk5DoUFy/EEPZ3fXN913T4u3G3E1jvKndnQhv3hEzklpr5Fj6O2xdDG9YJLM/r8S2y28AUzfBzbJxiehxtsQj7ovovUUtiSw50t0OEipnZXHhg8fjzxNeoFL+vNgR7eY4lya39n5e6x+6+KF/51pp5u8SQ== 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=bSAicikpbCT5Qt1fhaZ6Nsapj+ajo6yd6ehbJiPN1RQ=; b=HG67z7rBPTz/2mH4fEM3hnXyhioiwvKm81qu5r/F63eWP7nPeK5Gdeg8dQUSmpCaxkXpNPkafCumcDn6C79vpOk7dJuX3ODz1z28DETcJuFk0j1FlpOazbm8PCMe9dszAlKbr41Ue+M+/iJAiITJgzbvNC8fqRXsMmFrF63QGNKoymP0MeHXBUaVtM2k9Xix4a7mfGTC0C6hObtGcUhOjWc2a69ls9yYWycLmQmgEZsAGkyXTUf+XsR9yTrHl9oPPk4QXWGFIhikZ0Bih5xi+lsSVxYNYgQ31N0uZIIrccboSVxOUdShUOBd81OYNjQVry5x17Tlo8VMCFT17Pyq/g== 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=bSAicikpbCT5Qt1fhaZ6Nsapj+ajo6yd6ehbJiPN1RQ=; b=NzQJo2tCOjAACAO0vMlYdLiVbCQ4aEteE49DE+X/OvQBHK7XA3nCRem/9WNV5/fPEg2n2lUeU4pLfb8xeD8XepTQydZex/uwK3bS0LmVkoJ5I0vqQ3FprdIKucYi6SECW6on1kvvYSqcTzt1RROqwcJ8f3IfjhKrjrZKstlOvtX+qkBSQZqApOIj2pwYS71RYM+fYoE/zpnYwspcenesaN0KNknWDQWU9iob7Z5B44IHJbdo66/lozg/9n+JJlO63WP05qMRLOPna6UeUjc0fQgeKtI6VUwU8L1nO6Ikt7XIC0wnGMb8Zntp0ossFM0fY/TnE/GwNudX0RYDMVIevA== 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 IA0PR12MB7579.namprd12.prod.outlook.com (2603:10b6:208:43c::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9320.19; Sat, 15 Nov 2025 17:51:38 +0000 Received: from DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a]) by DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a%5]) with mapi id 15.20.9320.018; Sat, 15 Nov 2025 17:51:37 +0000 From: Zi Yan To: fujunjie Cc: akpm@linux-foundation.org, vbabka@suse.cz, surenb@google.com, mhocko@suse.com, jackmanb@google.com, hannes@cmpxchg.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2] mm/page_alloc: optimize lowmem_reserve max lookup using its semantic monotonicity Date: Sat, 15 Nov 2025 12:51:36 -0500 X-Mailer: MailMate (2.0r6290) Message-ID: <36C81D51-A931-44BA-B58D-223950FD370F@nvidia.com> In-Reply-To: References: Content-Type: text/plain X-ClientProxiedBy: MN2PR15CA0046.namprd15.prod.outlook.com (2603:10b6:208:237::15) 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_|IA0PR12MB7579:EE_ X-MS-Office365-Filtering-Correlation-Id: c6f7e804-803f-4468-1759-08de246f9fd0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?ouhm1VUt3bTXYjZEROqoHw4XCyrrXya6WOvIlgefck6C+l+Q0fkEjwc43/GW?= =?us-ascii?Q?6BVg6zxxvquiXJVInl05qzOLedxVk7Se2puOE2azfaEQ6bZNixOEDcgfzonn?= =?us-ascii?Q?/4htE1WHbVCjA+J3j12/YZ7flYs/0L2QG0MGxu4TM84TI2xs5yHHDe6oKluw?= =?us-ascii?Q?zQqUZ5dw5XtmukIVjlHNGCoY6O5SUaPXzHtaYpNCwQlNxREsY7JsV0GPH79s?= =?us-ascii?Q?K8FduOS6eONrtxiNvgdNh/IoOm0voHrDaaq/gVq73dmNzVbNuO4AsRMXHRIu?= =?us-ascii?Q?sTaGaNWb1jJli1x27M2kBeADFTyFhtLqehQoBA8pANIMFEjL3z8MM6FcDOCt?= =?us-ascii?Q?EXOQzhaVMjyp4jn/44U5y2V270vdv7vDWt6c0dng5MWlqCEpdkSGXZNtVZoQ?= =?us-ascii?Q?5yoxQingZqlDYTp6wsV6dqdbSH9NE/AlnYa16pYtv0OxXdHrlbpAwKydAxsc?= =?us-ascii?Q?iNZXrnVR3hnzbTAuBb3Pe5h/i+6ydsG8icXzc1YQlXuUIgjtR7SnYOTBfOgg?= =?us-ascii?Q?hk098znUpyEDBLwWhPjKDX+qO8lUvZ0kUj57+zx3fwL7MVfZ3lJWVDZrGzk9?= =?us-ascii?Q?0ztZjfsFinupaG6dneE6Rhc/tfe4OkDwjrC8VqJKEXxcFpSOwBj8hDAAXib+?= =?us-ascii?Q?pPIj3MRsNS/BbEKFfetLcRyH7BJfhgjoxg5Cv1WezI0KeDM+NHQIEfuq7huu?= =?us-ascii?Q?F76Sthzi2TXrg55duhqHuonp7JR5JdV9/hLOmreBZuX0ZQ2cWk9sK9tI2d4a?= =?us-ascii?Q?2HISZPBqoLlu7ikdXsZRRQPtVy4MChJS5sWheYxtozlufHJhVige/USdCcCn?= =?us-ascii?Q?9Gnite0rDz/kO4b+tK11jVkxMrNhARFWYuKkhvhUx8VC0rmaleuYri5p9cTX?= =?us-ascii?Q?E14qhWSMiAtq3CuVldngxWzTEG/ZXGWAUD8GRtoPYnVzwwGw5t40AcfhP8TV?= =?us-ascii?Q?sjkWPq5SL9nbaEmThn0ikgngfhKoc9xBlUCuAfffzRu8F0iP96UFbV+qV+fe?= =?us-ascii?Q?RYIHa3mghh/7yMe5APQFD9wHQZcgFeh90ULuVWofzmt4EMkz41EH3tR7D/pi?= =?us-ascii?Q?24g4u3PPh4dgIugR5IdgWzyM2l3yMpRqAHmWPnc4WV/7p5b3yeJCeOBbUdJ+?= =?us-ascii?Q?8oEmXl6WbviKEbR/diRfqqsI4yALzRD90rco8cJHx3xque51HaJl3SdTkKCU?= =?us-ascii?Q?sfH+xDWdAy1k2qQAZVQjFW76kElxJOJNTmlmvyF79RUmEt/REQOAltN02DGY?= =?us-ascii?Q?1ncVt0aq0SoWoRV9koJHYqmP/mD1N0ZPkiIrmZAyvpbQKDO+GVpunXyPuIw8?= =?us-ascii?Q?mR/SbNUMX+etSZsoonq75gsvgDL9Ivk+RUeAqNsNDStNTfnMcE8ZQEh227N0?= =?us-ascii?Q?iYy+JTQxonC025eGAJVdMprhRN/fuSIaBSTwyrkgFss1asMxI6gwftW5OqjS?= =?us-ascii?Q?cEgWaYOnVzVITjhYiCouPuJG5Fy0P/SI?= 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)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?gUfCbcTQUbtF3wss9VoCFwrwoK0IZmapGOwWlb7C1+Co8CXe0MxS/YYf0qCI?= =?us-ascii?Q?q9lOdJITqXBY+1dMoBPKNQyBmaYXZTMZXStOGpRau/hDB0czjvh+GAJDIuaI?= =?us-ascii?Q?V6r17OQ1z5KBb6AQRY+BN+yxhgz7aTN52z8pgRj2fyR6Nq8VX4x3lxKx1sAp?= =?us-ascii?Q?XN48xOfcSO/JsUtV6LZcsWp/YxwTDXjNaoy4JRklntXaqpVW9KMcA+cMgIyy?= =?us-ascii?Q?1bNh4E3cC0CZrAucz5o9T4tPlRJfq/px6h9QZFujKWW5e+8Q9tJN75N6v4+4?= =?us-ascii?Q?Mj7VnUtzOZkVt9KCs26C3/jhzP22nlpn16zgNZVPDP1QXz0ZeTATPyYaKYTb?= =?us-ascii?Q?YFKWXVywxleFX44JPUUom7HugDjuhChu6xgUS3tmbJ1tevSQ6mDVf8fXbG69?= =?us-ascii?Q?HE3dXmtmY5AhvkbvkYPJxS2FF3RKixr1n/VjMjcGQ6ydMLK1JtMcVTRumRum?= =?us-ascii?Q?N/KQn5LL6caUymd6H2ReO6x3Kwedvq3Km6PJsUAKTX/ySlgKYvO4vQP/ijH1?= =?us-ascii?Q?Vx6z0F1yJlxrM0qlj1lHPcjBx6xy9tH50B2mE8QISOCA3DasPSZgS0nWRs5P?= =?us-ascii?Q?Evr2Bh3gT/Wp1lO91UJavEnnDfgjyZTAKbPrIeO6jBn3i14InS/Z8BfnRrGx?= =?us-ascii?Q?Q2qnNmshAgKjapcF94zTWo83tiR1JBuJbVhpYD3k+MDDnXza3hAnbt6RREFv?= =?us-ascii?Q?k71kwoebm2W/rLtCI0PIRCo17a53nbNFPfCdKPTT0OCC9BTAdwph4x2odhyH?= =?us-ascii?Q?HK2zi0YGr0qqacTh0sGd85u9cQgbGhtjQ+ATnSk2DWvYJr6lZQzNC1jbaQ+T?= =?us-ascii?Q?5aogolhHwCPKoZFlpMRADZ4o4jR2QQQ0zTiyyQXJTmjWWtvJptaBzTEMtKTv?= =?us-ascii?Q?g6Y1PXWFZ687qVw6dWdMcbeSS8LIm06RqtCIFFgV5EkcN7SOokS2BNzaPP+i?= =?us-ascii?Q?AFC3XnPj88g8lTGAVMF1lZ0069EYu+6LkA3Pg6T4pamUI5E4GBe5KSchMYFF?= =?us-ascii?Q?BCaFi8LXq3rcXNyYff6BHEgfYbKlnaYUgjYFqd4UoP/sx16zjNXAyM1HcUWR?= =?us-ascii?Q?PngVZY2Xf2pX/IiKC2FubT6O/a5Ax1cWo2h3o/BXuh8zB386rroHsTWt9xPk?= =?us-ascii?Q?GE86g3veKlTQN0NU6ev8Vv+1QlEsmhYnw6UVraQ2LddmSzNKGDoRWGOLQLtH?= =?us-ascii?Q?zvBpCV4IFdlboZVrLYpoPNOEuPgj+ZJ/8WfFh3PmlpU0K35jD6itEVvocjZb?= =?us-ascii?Q?CCTeGMw89MDxzjJeP1uqv3iITsqEwlrLAX7H1mbHR24ovk8YQuMbi4Cs9n9a?= =?us-ascii?Q?s1JyYiMkKzIu38y2qe+atPyTxCsDcco3KIyG+GUV/fyWakIzQ/2qFt0ZMDXI?= =?us-ascii?Q?QrZNvdg2m3+s4j/Vb1PjryaBpX7RpGO4fgU0T5Q7ywdO63kvpCORbpvHwzhe?= =?us-ascii?Q?rIRBxkDajaI2NuWLY8wEk1nn8/YNBwHHPi8kfeiDFDbrZJayqAN/xBjaoJRB?= =?us-ascii?Q?p7JKqgEqk+Jw5Av8gk44EkaRn7WF/IVvc1HrQ2sqofBC9mx+x/VYUjO/aff0?= =?us-ascii?Q?3Mg/xCwq5mCUoz2yN34d5vvH48t7PVvUfgQSZ0ql?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: c6f7e804-803f-4468-1759-08de246f9fd0 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Nov 2025 17:51:37.5353 (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: oqQ2UcZ8iG/7/R+BTzIBbtMTS2n3JNcps6wVJ49a+LlsfblcHZq7eDLRgwM2BVU4 X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB7579 On 14 Nov 2025, at 22:02, fujunjie wrote: > calculate_totalreserve_pages() currently finds the maximum > lowmem_reserve[j] for a zone by scanning the full forward range > [j = zone_idx .. MAX_NR_ZONES). However, for a given zone i, the > lowmem_reserve[j] array (for j > i) is naturally expected to form a > monotonically non-decreasing sequence in j, not as an implementation > detail, but as a consequence that naturally arises from the semantics > of lowmem_reserve[]. > > For zone "i", lowmem_reserve[j] expresses how many pages in zone i must > effectively be kept in reserve when deciding whether an allocation class > that may allocate from zones up to j is allowed to fall back into i. It > protects less flexible allocation classes (which cannot use higher > zones) from being starved by more flexible ones. > > Viewed from this semantics, it is natural to expect a partial ordering in j: > as j increases, the allocation class gains access to a strictly larger > set of fallback zones. Therefore lowmem_reserve[j] is expected to be > monotonically non-decreasing in j: more flexible allocation classes must > not be allowed to deplete low zones more aggressively than less flexible > ones. > > In other words, if lowmem_reserve[j] were ever observed to *decrease* > as j grows, that would be unexpected from the reserve semantics' point of > view and would likely indicate a semantic change or a misconfiguration. > > The current implementation in setup_per_zone_lowmem_reserve() reflects > this policy by accumulating managed pages from higher zones and applying > the configured ratio, which results in a non-decreasing sequence. This > patch makes calculate_totalreserve_pages() rely on that monotonicity > explicitly and finds the maximum reserve value by scanning backward and > stopping at the first non-zero entry. This avoids unnecessary iteration > and reflects the conceptual model more directly. No functional behavior > changes. > > To maintain this assumption explicitly, a comment is added next to > setup_per_zone_lowmem_reserve() documenting the monotonicity expectation > and noting that calculate_totalreserve_pages() relies on it. > > Changes in v2: > - Reword the semantic explanation of lowmem_reserve[] monotonicity to > clarify that it arises naturally from its semantics. > - Maintain a minimal reference to the invariant in > calculate_totalreserve_pages(), with full documentation placed in > setup_per_zone_lowmem_reserve(). > > Signed-off-by: fujunjie > --- > mm/page_alloc.c | 33 +++++++++++++++++++++++++++++---- > 1 file changed, 29 insertions(+), 4 deletions(-) > Acked-by: Zi Yan -- Best Regards, Yan, Zi