From: Joshua Hahn <joshua.hahnjy@gmail.com>
To: Gregory Price <gourry@gourry.net>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Alistair Popple <apopple@nvidia.com>,
Byungchul Park <byungchul@sk.com>,
David Hildenbrand <david@redhat.com>,
Matthew Brost <matthew.brost@intel.com>,
Rakie Kim <rakie.kim@sk.com>,
Ying Huang <ying.huang@linux.alibaba.com>,
Zi Yan <ziy@nvidia.com>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
kernel-team@meta.com
Subject: [PATCH 1/2] mm/mempolicy: Simplify weighted interleave bulk alloc calculations
Date: Thu, 26 Jun 2025 13:09:33 -0700 [thread overview]
Message-ID: <20250626200936.3974420-2-joshua.hahnjy@gmail.com> (raw)
In-Reply-To: <20250626200936.3974420-1-joshua.hahnjy@gmail.com>
Simplify the math used to figure out how many pages should be allocated
per node. Instead of making conditional additions and deletions, we can just
make them unconditional by using min(). No functional changes intended.
Signed-off-by: Joshua Hahn <joshua.hahnjy@gmail.com>
---
mm/mempolicy.c | 15 ++++++---------
1 file changed, 6 insertions(+), 9 deletions(-)
diff --git a/mm/mempolicy.c b/mm/mempolicy.c
index 3b1dfd08338b..78ad74a0e249 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -2645,18 +2645,15 @@ static unsigned long alloc_pages_bulk_weighted_interleave(gfp_t gfp,
for (i = 0; i < nnodes; i++) {
node = next_node_in(prev_node, nodes);
weight = weights[node];
- node_pages = weight * rounds;
- /* If a delta exists, add this node's portion of the delta */
- if (delta > weight) {
- node_pages += weight;
- delta -= weight;
- } else if (delta) {
- /* when delta is depleted, resume from that node */
- node_pages += delta;
+ /* when delta is depleted, resume from that node */
+ if (delta && delta < weight) {
resume_node = node;
resume_weight = weight - delta;
- delta = 0;
}
+ /* Add the node's portion of the delta, if there is one */
+ node_pages = weight * rounds + min(delta, weight);
+ delta -= min(delta, weight);
+
/* node_pages can be 0 if an allocation fails and rounds == 0 */
if (!node_pages)
break;
--
2.47.1
next prev parent reply other threads:[~2025-06-26 20:09 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-26 20:09 [PATCH 0/2] mm/mempolicy: Cleanup and optimization for weighted interleave Joshua Hahn
2025-06-26 20:09 ` Joshua Hahn [this message]
2025-06-26 21:51 ` [PATCH 1/2] mm/mempolicy: Simplify weighted interleave bulk alloc calculations David Hildenbrand
2025-06-27 4:31 ` Gregory Price
2025-06-27 7:38 ` Rakie Kim
2025-06-27 7:45 ` Oscar Salvador
2025-06-26 20:09 ` [PATCH 2/2] mm/mempolicy: Skip extra call to __alloc_pages_bulk in weighted interleave Joshua Hahn
2025-06-27 4:28 ` Gregory Price
2025-06-27 16:13 ` Joshua Hahn
2025-06-30 15:39 ` Joshua Hahn
2025-06-30 20:05 ` Kees Bakker
2025-06-30 20:21 ` Joshua Hahn
2025-06-30 22:35 ` Andrew Morton
2025-06-30 23:01 ` Joshua Hahn
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250626200936.3974420-2-joshua.hahnjy@gmail.com \
--to=joshua.hahnjy@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=apopple@nvidia.com \
--cc=byungchul@sk.com \
--cc=david@redhat.com \
--cc=gourry@gourry.net \
--cc=kernel-team@meta.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=matthew.brost@intel.com \
--cc=rakie.kim@sk.com \
--cc=ying.huang@linux.alibaba.com \
--cc=ziy@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox