Bug 1217537
Summary: | Unable to create a NUMA node with CPUs and 0 MB of RAM | ||||||
---|---|---|---|---|---|---|---|
Product: | Red Hat Enterprise Linux 7 | Reporter: | Daniel Berrangé <berrange> | ||||
Component: | qemu-kvm-rhev | Assignee: | Eduardo Habkost <ehabkost> | ||||
Status: | CLOSED NOTABUG | QA Contact: | Virtualization Bugs <virt-bugs> | ||||
Severity: | unspecified | Docs Contact: | |||||
Priority: | unspecified | ||||||
Version: | 7.2 | CC: | ehabkost, huding, juzhang, kchamart, virt-maint, xfu | ||||
Target Milestone: | rc | ||||||
Target Release: | --- | ||||||
Hardware: | Unspecified | ||||||
OS: | Unspecified | ||||||
Whiteboard: | |||||||
Fixed In Version: | Doc Type: | Bug Fix | |||||
Doc Text: | Story Points: | --- | |||||
Clone Of: | Environment: | ||||||
Last Closed: | 2015-07-29 18:27:32 UTC | Type: | Bug | ||||
Regression: | --- | Mount Type: | --- | ||||
Documentation: | --- | CRM: | |||||
Verified Versions: | Category: | --- | |||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
Cloudforms Team: | --- | Target Upstream Version: | |||||
Embargoed: | |||||||
Bug Depends On: | |||||||
Bug Blocks: | 1217144, 1662586 | ||||||
Attachments: |
|
Description
Daniel Berrangé
2015-04-30 15:13:35 UTC
Created attachment 1057120 [details]
Screenshot of what seems to be a guest kernel bug or limitation
As this was never supported before, marking as FutureFeature. Is this kind of NUMA topology really supported by Linux and numactl? The guest kernel is ignoring the CPU affinity entries in the SRAT table for the no-RAM nodes. I need to compare this with real hardware, to find out if this is really a guest kernel bug, a QEMU bug, or something that was never supported by Linux. Do we have any physical host having NUMA nodes with no RAM in our labs? Hmm, so perhaps this might be architecture dependant. This RFE came about as a result of a bug filed against OpenStack for not considering the possibility that NUMA nodes can have CPUS without any RAM, so tgis was on real physical hardware https://bugs.launchpad.net/nova/+bug/1418187 From the libvirt capabilities attached to that bug report you can see the real hardware config: https://launchpadlibrarian.net/196616667/capabilities.txt In particular though notice this is powerpc64 host hardware, not x86. So I guess it is conceivable that this might not be supported on x86 kernels. I'm not really sure if x86 takes different codepath than ppc64 when doing NUMA setup. (In reply to Daniel Berrange from comment #5) > So I guess it is conceivable that this might not be supported on x86 > kernels. I'm not really sure if x86 takes different codepath than ppc64 when > doing NUMA setup. The mapping of CPUs to NUMA nodes is arch-specific code inside arch/{x86,powerpc}, so this behavior is likely to be arch-specific. Just confirmed that there's x86-specific code in Linux that ignores nodes without enough RAM: At arch/x86/mm/numa.c:numa_register_memblks() for_each_node_mask(nid, node_possible_map) { /* [...] */ /* * Don't confuse VM with a node that doesn't have the * minimum amount of memory: */ if (end && (end - start) < NODE_MIN_SIZE) continue; /* alloc_node_data() will call node_set_online(nid) */ alloc_node_data(nid); } At arch/x86/mm/numa.c:init_cpu_to_node(): for_each_possible_cpu(cpu) { int node = numa_cpu_node(cpu); if (node == NUMA_NO_NODE) continue; if (!node_online(node)) node = find_near_online_node(node); numa_set_node(cpu, node); } |