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 95F73C83038 for ; Mon, 30 Jun 2025 20:21:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EE4CB6B00BE; Mon, 30 Jun 2025 16:21:20 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id EBC046B00BF; Mon, 30 Jun 2025 16:21:20 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DF8966B00C0; Mon, 30 Jun 2025 16:21:20 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id D13C76B00BE for ; Mon, 30 Jun 2025 16:21:20 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id C3C8114013D for ; Mon, 30 Jun 2025 20:21:19 +0000 (UTC) X-FDA: 83613186678.19.7A1EF97 Received: from mail-yb1-f178.google.com (mail-yb1-f178.google.com [209.85.219.178]) by imf20.hostedemail.com (Postfix) with ESMTP id D39991C000D for ; Mon, 30 Jun 2025 20:21:17 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=eeXzMxvK; spf=pass (imf20.hostedemail.com: domain of joshua.hahnjy@gmail.com designates 209.85.219.178 as permitted sender) smtp.mailfrom=joshua.hahnjy@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1751314877; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=HgXc86l3T23qZ79gfE3FKqPxMD3UW7tVI+PzzFMqzaw=; b=eCubRHjdowEXkJKytUL7l8ULKANWXLwNyuv4vezozQR6U12MKpfxxh7PwQefTss2FIJe0F dTU/MqC//EJ4a1DSZIlTJ/m2BU5dL29N7gnVCJSalJxBCYRwTalm4YoKWSATfET5n84MCR 3BwbukLPpb7lbv1aLOBRdoEW+AcCHsg= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=eeXzMxvK; spf=pass (imf20.hostedemail.com: domain of joshua.hahnjy@gmail.com designates 209.85.219.178 as permitted sender) smtp.mailfrom=joshua.hahnjy@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1751314877; a=rsa-sha256; cv=none; b=r4kqU6Q/s2FpCLtBpfir/BvoEH1wDX63PmdZVi9raMDJgmXUKsy0O2GyCOaqpJIl1hAuD0 qmRM91ze1GDhT+iPi49Xxcvu8+NTqOFs92pQuw7/4Cq/VJPMo+Lq7wOd1X0LquERvswpba t1E7kmifL6DVDPGFa+HUqKxa2iHE3Pc= Received: by mail-yb1-f178.google.com with SMTP id 3f1490d57ef6-e8259b783f6so2118162276.3 for ; Mon, 30 Jun 2025 13:21:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751314877; x=1751919677; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=HgXc86l3T23qZ79gfE3FKqPxMD3UW7tVI+PzzFMqzaw=; b=eeXzMxvKHNmZjVXN3eqBlfUn9EQfBVUqfBN0p6t/NZOOQf/unU8kG2GWs9VrSGt7rh 3J2Wa5f9QLQHTM9DnxpAFJCD+Xb8H0letkOApZMnTg0y8y6CVaLClFbKTJ38oHqel1Ux xLuB8Q1NrSOcNbaEp1lTPzYGBKJK2BTovggfcnmMJq+aY28v+0f1UL8jXkd6Bge7Zgor ruGXqWvnuAguWQ8xdTQcUYLepAiWyZCi/DS31hbdaoLZi97zFuTrHQdeafj2QOMZnOSd 9jCHI7xlZy9HWB0DgXKE/YG5kDB3gCpU8nvxyQLWGvalyDS1xxIsLcS0/J3Lmalu/Nyu QJQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751314877; x=1751919677; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HgXc86l3T23qZ79gfE3FKqPxMD3UW7tVI+PzzFMqzaw=; b=thd+mS+CHy3+n3whGVrurzR5yH9ITkUdoHtcvEqOyqBFAgSwPIXAP2UOb32MDYrOJL +ySzooLwVajUj4Ev9Uwc81Kz7UuZtHCYQtHMVE5RFnyhLLYxZpNScRa0NJeqc1NbWkok ZUh38uJ3WpHZAdwiqV3Mysdhn3BB5AsZ4wwTILva3PbXmA3Ae7RyFQF8s52NsbsT6bln OHbzxLiaXeqSQYUZkHi/SzHWLEBpNN2+ZI79EGIqG2thHxbRKFY/w9O9msrcDX/v9AbT 7XkxVSufI3Syg3rlj5KH50msNEXgdN8L3sVX4mKi5Lt6rTid0lM3KWSGsmnfHX5yJ4Ew pR8w== X-Forwarded-Encrypted: i=1; AJvYcCWUqPouFeJos2zCsYEdkwutAkOqJqDh4w2KPCfX6lfr1Ef/IYR4EFZSZNNZsqgqXM9RApcnNYURMg==@kvack.org X-Gm-Message-State: AOJu0YyXDeIZpFnAJIjgH/uo0YgttyNgTf+dGKbGRHme9Le3KRNudpKi fCD/MeThrIXpEU6hUr/DOVZfKJtpN/BdEyiFQ9Z47+tAbLhwoTjPDCNj X-Gm-Gg: ASbGnctROSDUpICDfBLjXo3YQd595rRmth5CGe0kAACitas8GnOOczmYkf6dWFZo626 Y5NSM3i6wJP2G/yyvarLN9B5WUoww/yxu3SzD3G4rvcdCniHGeUfvZrryGcIwfm6CaapGQeUwpL 5bOQXS4jRZ0aMscDFd0MyT1tGqqX0bFbPbttFIyFXs040BmINab/aVvGj5NVwT6BIpinXAIGFUZ CYwOJBV4HLLZicVAExJKlGWaLjt2TYqfovFJpMALo3zE3oAw1xq5F7uAF+QlvGDsNhjXiVJtxjq ceCmWCI4f5TF3WDOMCfhPkK+JpRaumMObFoLVz9N/nZiDiXxEFMQDzoEFZWQbQ== X-Google-Smtp-Source: AGHT+IEcvfcb6sMTAzxKd4/1cEnZ6U0v/7EgCWtGtwIPSedzt8CFdzKxTUX4M//4qdWXDFc3L2o1cQ== X-Received: by 2002:a05:690c:931c:10b0:714:586:8486 with SMTP id 00721157ae682-7151714d498mr149647047b3.9.1751314876673; Mon, 30 Jun 2025 13:21:16 -0700 (PDT) Received: from localhost ([2a03:2880:25ff:57::]) by smtp.gmail.com with ESMTPSA id 00721157ae682-71515cc52f3sm16757447b3.107.2025.06.30.13.21.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Jun 2025 13:21:16 -0700 (PDT) From: Joshua Hahn To: Kees Bakker Cc: Gregory Price , Andrew Morton , Alistair Popple , Byungchul Park , David Hildenbrand , Matthew Brost , Rakie Kim , Ying Huang , Zi Yan , linux-kernel@vger.kernel.org, linux-mm@kvack.org, kernel-team@meta.com Subject: Re: [PATCH 2/2] mm/mempolicy: Skip extra call to __alloc_pages_bulk in weighted interleave Date: Mon, 30 Jun 2025 13:21:14 -0700 Message-ID: <20250630202115.1439224-1-joshua.hahnjy@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <7c1180f4-923c-4138-b756-618cb5d597ac@ijzerbout.nl> References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: D39991C000D X-Stat-Signature: n4e4sdafi4be7nxxca9nmudxfwo6zoat X-HE-Tag: 1751314877-385599 X-HE-Meta: U2FsdGVkX18BvNZ5Fk5eCljY+YzKgOVPPVVCbna7shxnWCgS8xxMB9WiX/6KNRRYsa9WjOt80AA/FMHH483fZXv6HcRv1zNRwlpUcLvSqXfd2uNknIfwBv8BKh4T5jSsdl/RgLEyBlhhXeQuzp6vJcWOWehdHkB5ier+hBOuWpjLoRAPlOPzqYBlqqXgAQ2GbDJPCkJhQD+dPhVFPJDgMwOihzk6kV/xKuCTDN7kwiF8QyJe6y7gWmQ5l5q+orRNcntKf2SOd2nL5+wGZk/o9Ib0ScYT/BNo1AciLd4ntLtpSamp0lUBuoJVbC2hQgSgCHU8CV4Yjm5tKGpw9IcK0XcOVc4fxTxUSY9dyvTFQPPXNPuax2XNmHaQtUIdT4mKfLHIYVZ2vd0c1cjgimw7wYckIvEz/KEndq8jH4acgDgRW6lzLGfoyJrcC3vgVJYy9poGagHJAfxTYg8QZGGtoFN9a6yX9nJylQ42d7yWOEe4TklUj8n8tV5colsJdiGeGkSNh6sBCYMWcgVixqmPsjbU9ZVPAZZu00xKQwflSfSCwFHjElXQctshxRS4T+Ufwq3+AGH6gAOwxjX0q8gOhUEfsxswOPy2aPBJAf77LAbwrU1UzRAW4mEvVI/65hbhS7pen/rLeHovlzF6Yfpiol0Kw2IkyWpr6rcA4JzKm8TPoMfyGWpPkTb4GKKX71PSrtarfTFyXejfqixVFUQOEZqk6eBe+xc8V7eplv1/z/nJ/HrfedMNiWVlBoqt5AkFobUnJI1I+H3/mCsQCZsB0v8i0n53guPTEblQQuKnTjocQtJy/oSTCUM6HxbEJ5tRF9qI/1teaWD/mb8HDTjMh2AVxtDgXHcc61Fy2US4EvxVSlqNfMPOnhb5o+u2FoRH4A2p+vbxdaLuvbbxQMTTo8s4IEOe6XG5Xno8E+MADktdXkH14HWs0XYng+IAbLm8G6c2Chnd+Z1CkHMrNCr hn2AUGS7 d95lvHmzkJq935Y7JB/tmyJCKkVKhy5zlDFdgyZvmgBqgjGCsa/T2C2gbJFD8MxPTz6sVF+XfnUJfAXcVxnoT3XoxbA8qfVcptU/7/M2e981sBRQG1hQIpaPD+t/VtXIm0JfMpb3BSSqpbbXY7AT9d8kKkMO3qXCu+WbYB3nCYyjXpAnsON0uI8mKIkREt8LSMYrCM+3C14sETb8LFbN4obCfuW8UqHpFUCzAW0mUE4Sbwx0mbEz+n4d90zQYpg//XOHsqDBtXQBGpq9MkF4peKGpDy52xLGme2ab8s3f8YSddFigdQYpgTUmVXOL8H38EhMq28miDQUCL4AVVTHG6o7rDCUJ+UrvxK8PDc5Dta6WGt5PnVBqG2OEgkk4e++dY21VGJN4ZNkcNOFYoZwKHuxuy1iJg+wE/dSgx7RzeZB19DE2nP3ffkGuiw5n+RRnQ4BNI957WFhJ6u4j0O7xaz/j+QrBWAwVFGF8dNGrE8llANrPGVLRiG178z4OacmGMLVSTyvB32RDtec8+TinZYHC3UmsHaPEok89UmFYZvh+je2WCfzWaojzJZmye2i9oMrjfFwhHy2o+X372bGZ1+wHqJuV+rsssmD90aPIYJdOHFE/uYD8XfPOHYBvPRP/Z0VhMrsm44cBTNwPPa4LqoFJDjZJFH/c7m4VvawQIbUH8xE= 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 Mon, 30 Jun 2025 22:05:48 +0200 Kees Bakker wrote: > > mm/mempolicy.c | 39 ++++++++++++++++++++------------------- > > 1 file changed, 20 insertions(+), 19 deletions(-) > > > > diff --git a/mm/mempolicy.c b/mm/mempolicy.c > > index 78ad74a0e249..0d693f96cf66 100644 > > --- a/mm/mempolicy.c > > +++ b/mm/mempolicy.c > > @@ -2569,7 +2569,7 @@ static unsigned long alloc_pages_bulk_weighted_interleave(gfp_t gfp, > > unsigned long node_pages, delta; > > u8 *weights, weight; > > unsigned int weight_total = 0; > > - unsigned long rem_pages = nr_pages; > > + unsigned long rem_pages = nr_pages, carryover = 0; > > nodemask_t nodes; > > int nnodes, node; > > int resume_node = MAX_NUMNODES - 1; > > @@ -2594,18 +2594,12 @@ static unsigned long alloc_pages_bulk_weighted_interleave(gfp_t gfp, > > node = me->il_prev; > > weight = me->il_weight; > > if (weight && node_isset(node, nodes)) { > > - node_pages = min(rem_pages, weight); > > - nr_allocated = __alloc_pages_bulk(gfp, node, NULL, node_pages, > > - page_array); > > - page_array += nr_allocated; > > - total_allocated += nr_allocated; > > - /* if that's all the pages, no need to interleave */ > > if (rem_pages <= weight) { > > - me->il_weight -= rem_pages; > > - return total_allocated; > > + node_pages = rem_pages; > > + me->il_weight -= node_pages; > > + goto allocate; Hello Kees, Thank you for reviewing my code! > This is a goto into the middle of a for-loop. > What do you think is going to happen at the end of that loop? > > I think (only tested with a small C program) it will go to the start of > the loop, do the i++, check i Variable i is uninitialized at that point. In the loop it hits several > uninitialized variables. >From what I can see from my code, I think the only the goto statement leads to a second iteration of the for loop is if allocation fails. But otherwise, it should be ok since we always hit if (total_allocated == nr_pages) break; within the loop. For the branch that takes the goto, we set node_pages = rem_pages, then jump to the label and allocate. So nr_allocated = node_pages, and total_allocated = 0 + nr_allocated so total_allocated = node_pages total_allocated == node_pages == rem_pages == nr_pages, so we will break. Phew! To cover the case where allocation fails, I think we should be breaking anyways, so I can definitely add a new check for this. > Even if this is legal C code, it is pretty obscure. I agree that it not very clean. I did this to reduce the amount of repeated code there is. Even if this code works, it could definitely be written better to make it more readable and maintainable. As I noted in my second response to Gregory, I'm not planning on pursuing this version anymore, so if I decide to send a second version, I'll keep this in mind. Thank you again for taking the time to review this, and also testing it on your end! I hope you have a great day : -) Joshua Sent using hkml (https://github.com/sjp38/hackermail)