Re: [PATCH v5 3/3] mm/page_alloc: Keep memoryless cpuless node 0 offline
From: Srikar Dronamraju <hidden>
Date: 2020-07-01 11:02:35
Also in:
linux-mm, lkml
* David Hildenbrand [off-list ref] [2020-07-01 12:15:54]:
On 01.07.20 12:04, Srikar Dronamraju wrote:quoted
* Michal Hocko [off-list ref] [2020-07-01 10:42:00]:quoted
quoted
2. Also existence of dummy node also leads to inconsistent information. The number of online nodes is inconsistent with the information in the device-tree and resource-dump 3. When the dummy node is present, single node non-Numa systems end up showing up as NUMA systems and numa_balancing gets enabled. This will mean we take the hit from the unnecessary numa hinting faults.I have to say that I dislike the node online/offline state and directly exporting that to the userspace. Users should only care whether the node has memory/cpus. Numa nodes can be online without any memory. Just offline all the present memory blocks but do not physically hot remove them and you are in the same situation. If users are confused by an output of tools like numactl -H then those could be updated and hide nodes without any memory&cpus. The autonuma problem sounds interesting but again this patch doesn't really solve the underlying problem because I strongly suspect that the problem is still there when a numa node gets all its memory offline as mentioned above. While I completely agree that making node 0 special is wrong, I have still hard time to review this very simply looking patch because all the numa initialization is so spread around that this might just blow up at unexpected places. IIRC we have discussed testing in the previous version and David has provided a way to emulate these configurations on x86. Did you manage to use those instruction for additional testing on other than ppc architectures?I have tried all the steps that David mentioned and reported back at https://lore.kernel.org/lkml/20200511174731.GD1961@linux.vnet.ibm.com/t/#u (local) As a summary, David's steps are still not creating a memoryless/cpuless on x86 VM.Now, that is wrong. You get a memoryless/cpuless node, which is *not online*. Once you hotplug some memory, it will switch online. Once you remove memory, it will switch back offline.
Let me clarify, we are looking for a node 0 which is cpuless/memoryless at boot. The code in question tries to handle a cpuless/memoryless node 0 at boot. With the steps that you gave the node 0 was always populated, node 1 or some other node would be memoryless/cpuless and offline. But that should have no impact by patch. I don't see how adding/hotplugging/removing memory to a node after boot is going to affect the changes that I have made. Please do correct me if I have misunderstood. -- Thanks and Regards Srikar Dronamraju