[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <78c976ba-1eaf-47b7-a310-b8a99a3882e2@suse.cz>
Date: Wed, 2 Apr 2025 18:06:51 +0200
From: Vlastimil Babka <vbabka@...e.cz>
To: Oscar Salvador <osalvador@...e.de>,
Andrew Morton <akpm@...ux-foundation.org>
Cc: David Hildenbrand <david@...hat.com>, linux-mm@...ck.org,
linux-kernel@...r.kernel.org, Hyeonggon Yoo <42.hyeyoo@...il.com>,
mkoutny@...e.com, Dan Williams <dan.j.williams@...el.com>,
Jonathan Cameron <Jonathan.Cameron@...wei.com>
Subject: Re: [PATCH 0/2] Implement numa node notifier
On 4/1/25 11:27, Oscar Salvador wrote:
> Memory notifier is a tool that allow consumers to get notified whenever
> memory gets onlined or offlined in the system.
> Currently, there are 10 consumers of that, but 5 out of those 10 consumers
> are only interested in getting notifications when a numa node has changed its
> state.
> That means going from memoryless to memory-aware of vice versa.
>
> Which means that for every {online,offline}_pages operation they get
> notified even though the numa node might not have changed its state.
>
> The first patch implements a numa node notifier that does just that, and have
> those consumers register in there, so they get notified only when they are
> interested.
What if we had two chains:
register_node_notifier()
register_node_normal_notifier()
I think they could have shared the state #defines and struct node_notify
would have just one nid and be always >= 0.
Or would it add too much extra boilerplate and only slab cares?
> The second patch replaces 'status_change_normal{_normal}' fields within
> memory_notify with a 'nid', as that is only what we need for memory
> notifer and update the only user of it (page_ext).
>
> Consumers that are only interested in numa node states change are:
>
> - memory-tier
> - slub
> - cpuset
> - hmat
> - cxl
>
>
> Oscar Salvador (2):
> mm,memory_hotplug: Implement numa node notifier
> mm,memory_hotplug: Replace status_change_nid parameter in
> memory_notify
>
> drivers/acpi/numa/hmat.c | 6 +--
> drivers/base/node.c | 19 +++++++++
> drivers/cxl/core/region.c | 14 +++----
> drivers/cxl/cxl.h | 4 +-
> include/linux/memory.h | 37 ++++++++++++++++++
> kernel/cgroup/cpuset.c | 2 +-
> mm/memory-tiers.c | 8 ++--
> mm/memory_hotplug.c | 82 +++++++++++++++++++++++++++++----------
> mm/page_ext.c | 12 +-----
> mm/slub.c | 22 +++++------
> 10 files changed, 146 insertions(+), 60 deletions(-)
>
Powered by blists - more mailing lists