From: Joshua Hahn <joshua.hahnjy@gmail.com>
To: Oscar Salvador <osalvador@suse.de>
Cc: gourry@gourry.net, hyeonggon.yoo@sk.com,
ying.huang@linux.alibaba.com, honggyu.kim@sk.com,
akpm@linux-foundation.org, rafael@kernel.org, lenb@kernel.org,
gregkh@linuxfoundation.org, rakie.kim@sk.com,
dan.j.williams@intel.com, Jonathan.Cameron@huawei.com,
dave.jiang@intel.com, horen.chuang@linux.dev, hannes@cmpxchg.org,
linux-kernel@vger.org, linux-acpi@vger.kernel.org,
linux-mm@kvack.org, kernel-team@meta.com
Subject: Re: [PATCH v5] mm/mempolicy: Weighted Interleave Auto-tuning
Date: Wed, 12 Feb 2025 07:18:33 -0800 [thread overview]
Message-ID: <20250212151852.526233-1-joshua.hahnjy@gmail.com> (raw)
In-Reply-To: <Z6b--rdWJD3UQDI-@localhost.localdomain>
On Sat, 8 Feb 2025 07:51:38 +0100 Oscar Salvador <osalvador@suse.de> wrote:
> On Fri, Feb 07, 2025 at 12:13:35PM -0800, Joshua Hahn wrote:
[...snip...]
> Hi Joshua
>
> > diff --git a/drivers/base/node.c b/drivers/base/node.c
> > index 0ea653fa3433..16e7a5a8ebe7 100644
> > --- a/drivers/base/node.c
> > +++ b/drivers/base/node.c
> > @@ -7,6 +7,7 @@
> > #include <linux/init.h>
> > #include <linux/mm.h>
> > #include <linux/memory.h>
> > +#include <linux/mempolicy.h>
> > #include <linux/vmstat.h>
> > #include <linux/notifier.h>
> > #include <linux/node.h>
> > @@ -214,6 +215,12 @@ void node_set_perf_attrs(unsigned int nid, struct access_coordinate *coord,
> > break;
> > }
> > }
> > +
> > + /* When setting CPU access coordinates, update mempolicy */
> > + if (access == ACCESS_COORDINATE_CPU) {
> > + if (mempolicy_set_node_perf(nid, coord))
> > + pr_info("failed to set node%d mempolicy attrs\n", nid);
>
> Not a big deal but I think you want to make that consistent with the error
> pr_info? that is: "failed to set mempolicy attrs for node %d".
Hi Oscar, thank you for reviewing my patch!
That sounds good to me. Then that line can be replaced with
pr_info("failed to set mempolicy attrs for node %d\n", nid);
> Also, I guess we cannot reach here with a memoryless node, right?
I think that they should not reach this line, but since memoryless
nodes do not have any memory bandwidth / latency information, it should
be fine. With that said, I think a check like the following would
make this more explicit and possibly guard against any unexpected
calls to mempolicy_set_node_perf:
- if (access == ACCESS_COORDINATE_CPU) {
+ if (access == ACCESS_COORDINATE_CPU && !node_state(nid, N_MEMORY)) {
> > diff --git a/mm/mempolicy.c b/mm/mempolicy.c
> > index 04f35659717a..51edd3663667 100644
> > --- a/mm/mempolicy.c
> > +++ b/mm/mempolicy.c
> > @@ -109,6 +109,7 @@
> > #include <linux/mmu_notifier.h>
> > #include <linux/printk.h>
> > #include <linux/swapops.h>
> > +#include <linux/gcd.h>
> >
> > #include <asm/tlbflush.h>
> > #include <asm/tlb.h>
> > @@ -138,16 +139,18 @@ static struct mempolicy default_policy = {
> >
> > static struct mempolicy preferred_node_policy[MAX_NUMNODES];
> >
> > +static uint64_t *node_bw_table;
> > +
> > /*
> > - * iw_table is the sysfs-set interleave weight table, a value of 0 denotes
> > - * system-default value should be used. A NULL iw_table also denotes that
> > - * system-default values should be used. Until the system-default table
> > - * is implemented, the system-default is always 1.
> > - *
> > + * iw_table is the interleave weight table.
> > + * If bandwidth data is available and the user is in auto mode, the table
> > + * is populated with default values in [1,255].
> > * iw_table is RCU protected
> > */
> > static u8 __rcu *iw_table;
> > static DEFINE_MUTEX(iw_table_lock);
> > +static const int weightiness = 32;
>
> You explain why you chose this value in the changelog, but I would either
> drop a comment, probably in reduce_interleave_weights() elaborating a
> little bit, otherwise someone who stumbles upon that when reading that
> code will have to go through the changelog.
I also think this feedback makes a lot of sense. Maybe something like:
/*
* 32 is selected as a constant that balances the two goals of:
* (1) Keeping weight magnitude low, as to prevent too many consecutive
* pages from being allocated from the same node before other nodes
* get a chance
* (2) Minimizing the error between bandwidth ratios and weight ratios
*/
Andrew -- I will send over a new v6 for this patch, if that is alright with
you. I will also probably wait a few days before sending it out, in case
there are other changes that folks would like to see. Please let me know
if this works for you / if there is something ele I can do to make this
process smoother.
Thank you again! Have a nice day!
Joshua
>
> --
> Oscar Salvador
> SUSE Labs
next prev parent reply other threads:[~2025-02-12 15:19 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-07 20:13 Joshua Hahn
2025-02-08 2:20 ` Andrew Morton
2025-02-08 5:06 ` Joshua Hahn
2025-02-12 0:17 ` Andrew Morton
2025-02-12 15:26 ` Joshua Hahn
2025-02-10 5:36 ` Gregory Price
2025-02-11 0:39 ` Andrew Morton
2025-02-11 2:14 ` Gregory Price
2025-02-08 6:51 ` Oscar Salvador
2025-02-12 15:18 ` Joshua Hahn [this message]
2025-02-12 2:49 ` Huang, Ying
2025-02-12 17:06 ` Joshua Hahn
2025-02-13 1:32 ` Huang, Ying
2025-02-14 15:45 ` Joshua Hahn
2025-02-16 0:40 ` Huang, Ying
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=20250212151852.526233-1-joshua.hahnjy@gmail.com \
--to=joshua.hahnjy@gmail.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=akpm@linux-foundation.org \
--cc=dan.j.williams@intel.com \
--cc=dave.jiang@intel.com \
--cc=gourry@gourry.net \
--cc=gregkh@linuxfoundation.org \
--cc=hannes@cmpxchg.org \
--cc=honggyu.kim@sk.com \
--cc=horen.chuang@linux.dev \
--cc=hyeonggon.yoo@sk.com \
--cc=kernel-team@meta.com \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.org \
--cc=linux-mm@kvack.org \
--cc=osalvador@suse.de \
--cc=rafael@kernel.org \
--cc=rakie.kim@sk.com \
--cc=ying.huang@linux.alibaba.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