Re: [7/8,v3] NUMA Hotplug Emulator: extend memory probe interface to support NUMA

Dave Hansen
2010-11-17T21:55:55Z

> On Wed, 2010-11-17 at 13:18 -0800, David Rientjes wrote:
> On Wed, 17 Nov 2010, Dave Hansen wrote:
> > The other thing that Greg suggested was to use configfs. Looking back
> > on it, that makes a lot of sense. We can do better than these "probe"
> > files.
> >
> > In your case, it might be useful to tell the kernel to be able to add
> > memory in a node and add the node all in one go. That'll probably be
> > closer to what the hardware will do, and will exercise different code
> > paths that the separate "add node", "then add memory" steps that you're
> > using here.
>
> That seems like a seperate issue of moving the memory hotplug interface
> over to configfs and that seems like it will cause a lot of userspace
> breakage. The memory hotplug interface can already add memory to a node
> without using the ACPI notifier, so what does it have to do with this
> patchset?

I was actually just thinking of the node hotplug interface not using a
'probe' file. But, you make a good point. They _have_ to be tied
together, and doing one via configfs would mean that we probably have to
do the other that way. We wouldn't have to _remove_ the ...memory/probe
interface (breaking userspace), but we would add some redundancy.

> I think what this patchset really wants to do is map offline hot-added
> memory to a different node id before it is onlined. It needs no
> additional command-line interface or kconfig options, users just need to
> physically hot-add memory at runtime or use mem= when booting to reserve
> present memory from being used.
>
> Then, export the amount of memory that is actually physically present in
> the e820 but was truncated by mem=

I _think_ that's already effectively done in /sys/firmware/memmap.

> and allow users to hot-add the memory
> via the probe interface. Add a writeable 'node' file to offlined memory
> section directories and allow it to be changed prior to online.

That would work, in theory. But, in practice, we allocate the mem_map[]
at probe time. So, we've already effectively picked a node at probe.
That was done because the probe is equivalent to the hardware "add"
event. Once the hardware where in the address space the memory is, it
always also knows the node.

But, I guess it also wouldn't be horrible if we just hot-removed and
hot-added an offline section if someone did write to a node file like
you're suggesting. It might actually exercise some interesting code
paths.

-- Dave