mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 06:05:27 +00:00
nodeinfo: Don't fail on non-contiguous NUMA topologies
nodeGetFreeMemory and nodeGetCellsFreeMemory assumed that the NUMA nodes are contiguous and starting from 0. Unfortunately there are machines that don't match this assumption: available: 1 nodes (1) node 1 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 node 1 size: 16340 MB node 1 free: 11065 MB Before this patch: error: internal error Failed to query NUMA free memory error: internal error Failed to query NUMA free memory for node: 0 After this patch: Total: 15772580 KiB 0: 0 KiB Signed-off-by: Peter Krempa <pkrempa@redhat.com>
This commit is contained in:
parent
ee777e9949
commit
6d986d9918
@ -1686,12 +1686,9 @@ nodeGetCellsFreeMemory(unsigned long long *freeMems,
|
||||
|
||||
for (numCells = 0, n = startCell; n <= lastCell; n++) {
|
||||
long long mem;
|
||||
if (numa_node_size64(n, &mem) < 0) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("Failed to query NUMA free memory for node: %d"),
|
||||
n);
|
||||
goto cleanup;
|
||||
}
|
||||
if (numa_node_size64(n, &mem) < 0)
|
||||
mem = 0;
|
||||
|
||||
freeMems[numCells++] = mem;
|
||||
}
|
||||
ret = numCells;
|
||||
@ -1712,15 +1709,12 @@ nodeGetFreeMemory(void)
|
||||
|
||||
for (n = 0; n <= numa_max_node(); n++) {
|
||||
long long mem;
|
||||
if (numa_node_size64(n, &mem) < 0) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
"%s", _("Failed to query NUMA free memory"));
|
||||
goto cleanup;
|
||||
}
|
||||
if (numa_node_size64(n, &mem) < 0)
|
||||
continue;
|
||||
|
||||
freeMem += mem;
|
||||
}
|
||||
|
||||
cleanup:
|
||||
return freeMem;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user