From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qk1-f171.google.com (mail-qk1-f171.google.com [209.85.222.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DF45B3128AD for ; Thu, 18 Dec 2025 19:35:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.171 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766086528; cv=none; b=goCzyncrNS4bVBeuJVAxM6Mg4YQ5rcn1leGuC5obODIENNTpvQK8AH+0IitwIsG8jkXbRLEJIy+RlCBF8K2U9ZFlmsbtMWNjh6MdPN9aVROaQTfwTHTx/cz9PNwmNsua/dEoMKVPLwD9dcRcvS9iItAGuxbOqnbMyHa5bIFlNe8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766086528; c=relaxed/simple; bh=AeRUnVSLBxudFNfBpzB0+EZem8poFPfFlXMJekLVoxM=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=dzqbSpQAlo5v1VF+F4Dg/GajMoQXbZMndh4wQesnxc78feco4sTaW3jClccB6ErU7lm1/QWCsnRnMhUUSo9d1ik6IdZtb3InOMYSztKwuxVmk7Rgt8rhcr2eCQ5yubCQ99TlyDpougyLWLoZoZW00jbcng3PWgB6B3EgGfuybMM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=cmpxchg.org; spf=pass smtp.mailfrom=cmpxchg.org; dkim=pass (2048-bit key) header.d=cmpxchg.org header.i=@cmpxchg.org header.b=GLDDvxvq; arc=none smtp.client-ip=209.85.222.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=cmpxchg.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=cmpxchg.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=cmpxchg.org header.i=@cmpxchg.org header.b="GLDDvxvq" Received: by mail-qk1-f171.google.com with SMTP id af79cd13be357-8b1e54aefc5so84444985a.1 for ; Thu, 18 Dec 2025 11:35:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cmpxchg.org; s=google; t=1766086525; x=1766691325; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=tPnsmUEwE96LPEw+aBOKcLpOvJxYDMMIS4oPaZPwqVM=; b=GLDDvxvqAlGhpCNYJW8kskvwLdcZAinPvx1XPGHxy79CiKZSb8mJJq3jqSJ9//XwSD wENqvL5ta5aLXuRMHvxG2m5fLIKqf9gk/9Nke6TKNNZ3mwq/YG1nEZlNBr6F3hsPGe0n zPSALYWC/2y7ZjY/mhMZiptVQV/YY4auY3HaGpm9EuJc6yrX/fjCiWE3z9/uZ+pwstot DVim32HovbsxGI/UzfixWhoq0a2WJF/9L5BjqMX/yIoQkh/p1h+gQUR3Rq2oFIdTpgGm +KuNI1kAIMSQk9QUpi/9UZZp4Jb8EHzIi0C6NV4qQLkBT3ahAN8l/0hRllkgJ9hqCHI8 e5FA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766086525; x=1766691325; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tPnsmUEwE96LPEw+aBOKcLpOvJxYDMMIS4oPaZPwqVM=; b=WzHPi4KxjKaAJ6Gdem12OG4s0BcId2ScvxLYJvbxFKOK/Ced8tUVEL1ZlY0XDxMmv5 JJZAazOAQFKBHsf7k9MddhxNiZzImAJ34GzvFOMtH/H+WhOBGY+5aQbUmgl2texiv9Gk yp/+VeL6UsYutPnMLHik90OeZM1TXeACLX+GCPrPTt/4niCQL+maSWNbVc5jNz8VyD8k jO2uf2ojVmwYvveDh3VJYozSFfNmK/oUhZrJjqtmjquLxf/D6B4dkyff9BouvvrcNoYt NTe02Dt0cenDwK3FhW/YSAUYdX/sRcEW2rU16csQmp4zvoHSbpBqiwDq2A9zYHhUjKvs mDEw== X-Forwarded-Encrypted: i=1; AJvYcCXCEQAXVrxCvQkTf2PpFJR0vjSV4QNW1h0u3ZefIgNyj2qMdhIewTqXVjFfwO4UVp7vWgmyHrfFv46o1rc=@vger.kernel.org X-Gm-Message-State: AOJu0YyIih6Dht0w9Slo8F1Tvotgk9r/aTq2EIx2ZG5+g69oCBPa5y6m qmZ1e3NKd0dz5pxofTkUZdt8fD1nMyMdxwBVdb5yexb6Q8oBNrV+zCOaf1CFZ5q0Ct0= X-Gm-Gg: AY/fxX527MnTthqm+NMbPmJi7t4HGnuq5scehwb4tfpr5weRvsMRKIE7IQMZa7pbqHa MJh5Kp9m7Ve3xi0xz2s+EDXQKcSwrkjkHcQ/7W9/FGwbjekQwqeRnPGjnVaK4j+EDerQSqTv6ej PHLtlBLP+6sn3M6QFJVErCkf4N5D4j4ldLSabyUIJyAid1K99xpqDfs8JLkIIvSt8z9lNl2YwsJ 3FV8asjggADM6mRTBPlSOl6XFe4PhuIzw1rhwsYGJRxLRFDvghPzHw1WPe9IWvarPEeTSjwWAHu qKy1Vinrkz29E8xXLfvvfLiz/B4rM2ddTWUvStt+VPhtroCjfOwquDkEqmEtMGndmHfC089pF8F ZffXPKqIMT4WTTbh9iZxFUFFqUMrWUPBpMhJOCYGwvSENvnhuQhbDPvKcXcBMUlL1w4xUjhyWD1 HFOJbDR83ONoXM67mvUHnq X-Google-Smtp-Source: AGHT+IGrs4VbkhCQleHuOleoIRCMYVO7M0a0Znkj6dsun+tRNVpTnsDf9xzduXpABdyrpmhuuHhdgg== X-Received: by 2002:a05:620a:4689:b0:8b2:eb79:d380 with SMTP id af79cd13be357-8c08f650f54mr136659785a.5.1766086524574; Thu, 18 Dec 2025 11:35:24 -0800 (PST) Received: from localhost ([2603:7000:c01:2716:929a:4aff:fe16:c778]) by smtp.gmail.com with ESMTPSA id af79cd13be357-8c0971ed974sm12132785a.30.2025.12.18.11.35.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Dec 2025 11:35:23 -0800 (PST) Date: Thu, 18 Dec 2025 14:35:19 -0500 From: Johannes Weiner To: Gregory Price Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, kernel-team@meta.com, akpm@linux-foundation.org, vbabka@suse.cz, surenb@google.com, mhocko@suse.com, jackmanb@google.com, ziy@nvidia.com, richard.weiyang@gmail.com, osalvador@suse.de, rientjes@google.com, david@redhat.com, joshua.hahnjy@gmail.com, fvdl@google.com Subject: Re: [PATCH v5] page_alloc: allow migration of smaller hugepages during contig_alloc Message-ID: References: <20251218190832.1319797-1-gourry@gourry.net> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20251218190832.1319797-1-gourry@gourry.net> On Thu, Dec 18, 2025 at 02:08:31PM -0500, Gregory Price wrote: > @@ -7099,8 +7099,30 @@ static bool pfn_range_valid_contig(struct zone *z, unsigned long start_pfn, > if (PageReserved(page)) > return false; > > - if (PageHuge(page)) > - return false; > + /* > + * Only consider ranges containing hugepages if those pages are > + * smaller than the requested contiguous region. e.g.: > + * Move 2MB pages to free up a 1GB range. > + * Don't move 1GB pages to free up a 2MB range. > + * > + * This makes contiguous allocation more reliable if multiple > + * hugepage sizes are used without causing needless movement. > + */ > + if (PageHuge(page)) { > + unsigned int order; > + > + if (!IS_ENABLED(CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION)) > + return false; > + > + if (!search_hugetlb) > + return false; > + > + page = compound_head(page); > + order = compound_order(page); > + if ((order >= MAX_FOLIO_ORDER) || > + (nr_pages <= (1 << order))) > + return false; If you keep searching past it, you can step over the whole page to speed things up a bit: i += (1 << order) - 1;