From: Jonathan Cameron <jonathan.cameron@huawei.com>
To: Akinobu Mita <akinobu.mita@gmail.com>
Cc: <linux-cxl@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<linux-mm@kvack.org>, <akpm@linux-foundation.org>,
<axelrasmussen@google.com>, <yuanchu@google.com>,
<weixugc@google.com>, <hannes@cmpxchg.org>, <david@kernel.org>,
<mhocko@kernel.org>, <zhengqi.arch@bytedance.com>,
<shakeel.butt@linux.dev>, <lorenzo.stoakes@oracle.com>,
<Liam.Howlett@oracle.com>, <vbabka@suse.cz>, <rppt@kernel.org>,
<surenb@google.com>, <bingjiao@google.com>
Subject: Re: [PATCH v3 1/3] mm: memory-tiers, numa_emu: enable to create memory tiers using fake numa nodes
Date: Thu, 8 Jan 2026 15:47:38 +0000 [thread overview]
Message-ID: <20260108154738.00000e47@huawei.com> (raw)
In-Reply-To: <20260108101535.50696-2-akinobu.mita@gmail.com>
On Thu, 8 Jan 2026 19:15:33 +0900
Akinobu Mita <akinobu.mita@gmail.com> wrote:
> This makes it possible to create memory tiers using fake numa nodes
> generated by numa emulation.
>
> The "numa_emulation.adistance=" kernel cmdline option allows you to set
> the abstract distance for each NUMA node.
>
> For example, you can create two fake nodes, each in a different memory
> tier by booting with "numa=fake=2 numa_emulation.adistance=576,704".
> Here, the abstract distances of node0 and node1 are set to 576 and 706,
> respectively.
>
> Each memory tier covers an abstract distance chunk size of 128. Thus,
> nodes with abstract distances between 512 and 639 are classified into the
> same memory tier, and nodes with abstract distances between 640 and 767
> are classified into the next slower memory tier.
>
> The abstract distance of fake nodes not specified in the parameter will
> be the default DRAM abstract distance of 576.
>
> Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
> ---
> v2:
> - fix the explanation about cmdline parameter in the commit log
A couple of comments on includes, with those resolved LGTM.
Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
>
> mm/numa_emulation.c | 26 ++++++++++++++++++++++++++
> 1 file changed, 26 insertions(+)
>
> diff --git a/mm/numa_emulation.c b/mm/numa_emulation.c
> index 703c8fa05048..a4266da21344 100644
> --- a/mm/numa_emulation.c
> +++ b/mm/numa_emulation.c
> @@ -6,6 +6,9 @@
> #include <linux/errno.h>
> #include <linux/topology.h>
> #include <linux/memblock.h>
> +#include <linux/memory-tiers.h>
> +#include <linux/module.h>
> +#include <linux/node.h>
I can't immediately spot why the new code needs node.h
Should also include
linux/notifier.h for the notifier_block definition.
> #include <linux/numa_memblks.h>
> #include <asm/numa.h>
> #include <acpi/acpi_numa.h>
> @@ -344,6 +347,27 @@ static int __init setup_emu2phys_nid(int *dfl_phys_nid)
> return max_emu_nid;
> }
>
> +static int adistance[MAX_NUMNODES];
> +module_param_array(adistance, int, NULL, 0400);
> +MODULE_PARM_DESC(adistance, "Abstract distance values for each NUMA node");
> +
> +static int emu_calculate_adistance(struct notifier_block *self,
> + unsigned long nid, void *data)
> +{
> + if (adistance[nid]) {
> + int *adist = data;
> +
> + *adist = adistance[nid];
> + return NOTIFY_STOP;
> + }
> + return NOTIFY_OK;
> +}
> +
> +static struct notifier_block emu_adist_nb = {
> + .notifier_call = emu_calculate_adistance,
> + .priority = INT_MIN,
> +};
> +
> /**
> * numa_emulation - Emulate NUMA nodes
> * @numa_meminfo: NUMA configuration to massage
> @@ -532,6 +556,8 @@ void __init numa_emulation(struct numa_meminfo *numa_meminfo, int numa_dist_cnt)
> }
> }
>
> + register_mt_adistance_algorithm(&emu_adist_nb);
> +
> /* free the copied physical distance table */
> memblock_free(phys_dist, phys_size);
> return;
next prev parent reply other threads:[~2026-01-08 15:47 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-08 10:15 [PATCH v3 0/3] mm: fix oom-killer not being invoked when demotion is enabled Akinobu Mita
2026-01-08 10:15 ` [PATCH v3 1/3] mm: memory-tiers, numa_emu: enable to create memory tiers using fake numa nodes Akinobu Mita
2026-01-08 15:47 ` Jonathan Cameron [this message]
2026-01-10 3:47 ` Akinobu Mita
2026-01-09 4:43 ` Pratyush Brahma
2026-01-10 4:03 ` Akinobu Mita
2026-01-08 10:15 ` [PATCH v3 2/3] mm: numa_emu: add document for NUMA emulation Akinobu Mita
2026-01-08 15:51 ` Jonathan Cameron
2026-01-08 10:15 ` [PATCH v3 3/3] mm/vmscan: don't demote if there is not enough free memory in the lower memory tier Akinobu Mita
2026-01-08 19:00 ` Andrew Morton
2026-01-09 16:07 ` Gregory Price
2026-01-10 13:55 ` Akinobu Mita
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=20260108154738.00000e47@huawei.com \
--to=jonathan.cameron@huawei.com \
--cc=Liam.Howlett@oracle.com \
--cc=akinobu.mita@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=axelrasmussen@google.com \
--cc=bingjiao@google.com \
--cc=david@kernel.org \
--cc=hannes@cmpxchg.org \
--cc=linux-cxl@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lorenzo.stoakes@oracle.com \
--cc=mhocko@kernel.org \
--cc=rppt@kernel.org \
--cc=shakeel.butt@linux.dev \
--cc=surenb@google.com \
--cc=vbabka@suse.cz \
--cc=weixugc@google.com \
--cc=yuanchu@google.com \
--cc=zhengqi.arch@bytedance.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