Skip to contentSkip to conversation

numa: report all DIMM/NVDIMMs as plugged in "info numa"

PATCH In review David Hildenbrand 2 participants 2 messages Jun 28, 2018

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 numa: report all DIMM/NVDIMMs as plugged in "info numa"

Right now, there is some inconsistency between hotplugged and coldplugged memory. DIMMs added via "-device" result in different stats than DIMMs added using "device_add".

E.g. with the following QEMU cmdline:

    [...]
    -numa node,nodeid=0,cpus=0-1 -numa node,nodeid=1,cpus=2-3 \
    -m 4G,maxmem=20G,slots=2 \
    -object memory-backend-ram,id=mem0,size=8G \
    -device pc-dimm,id=dimm0,memdev=mem0 \
    -object memory-backend-ram,id=mem1,size=8G \
    -device nvdimm,id=dimm1,memdev=mem1,node=1

"info memory_size_summary" will correctly report:

    (qemu) info memory_size_summary
    info memory_size_summary
    base memory: 4294967296
    plugged memory: 17179869184

While "info numa" will not report DIMM/NVDIMMs as (cold)plugged memory.
(qemu) info numa
info numa
2 nodes
node 0 cpus: 0 1
node 0 size: 10240 MB
node 0 plugged: 0 MB
node 1 cpus: 2 3
node 1 size: 10240 MB
node 1 plugged: 0 MB

Make this consistent by reporting all hot and coldplugged memory a.k.a. DIMM and NVDIMM as "plugged".

With this change, the output of "info numa" is now:

    (qemu) info numa
    info numa
    2 nodes
    node 0 cpus: 0 1
    node 0 size: 10240 MB
    node 0 plugged: 8192 MB
    node 1 cpus: 2 3
    node 1 size: 10240 MB
    node 1 plugged: 8192 MB
Fixes 31959e82fb0 ("hmp: extend "info numa" with hotplugged memory information")

---

v1 -> v2:
- Tweaked patch description/sibject as requested by Igor.

 numa.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)
numa.c +2 -4
index 94f758c757..5f6367b989 100644
@@ -566,10 +566,8 @@ static void numa_stat_memory_devices(NumaNodeMem node_mem[])
 
             if (pcdimm_info) {
                 node_mem[pcdimm_info->node].node_mem += pcdimm_info->size;
-                if (pcdimm_info->hotpluggable && pcdimm_info->hotplugged) {
-                    node_mem[pcdimm_info->node].node_plugged_mem +=
-                        pcdimm_info->size;
-                }
+                node_mem[pcdimm_info->node].node_plugged_mem +=
+                    pcdimm_info->size;
             }
         }
     }
Signature · 1 line
2.17.1
Reviewed-by on v2 1/1
#1 lore raw
Quoted 44 lines · On Thu, 28 Jun 2018 11:00:11 +0200 David Hildenbrand <[email protected]> wrote:

Right now, there is some inconsistency between hotplugged and coldplugged memory. DIMMs added via "-device" result in different stats than DIMMs added using "device_add".

E.g. with the following QEMU cmdline:

    [...]
    -numa node,nodeid=0,cpus=0-1 -numa node,nodeid=1,cpus=2-3 \
    -m 4G,maxmem=20G,slots=2 \
    -object memory-backend-ram,id=mem0,size=8G \
    -device pc-dimm,id=dimm0,memdev=mem0 \
    -object memory-backend-ram,id=mem1,size=8G \
    -device nvdimm,id=dimm1,memdev=mem1,node=1

"info memory_size_summary" will correctly report:

    (qemu) info memory_size_summary
    info memory_size_summary
    base memory: 4294967296
    plugged memory: 17179869184

While "info numa" will not report DIMM/NVDIMMs as (cold)plugged memory.
(qemu) info numa
info numa
2 nodes
node 0 cpus: 0 1
node 0 size: 10240 MB
node 0 plugged: 0 MB
node 1 cpus: 2 3
node 1 size: 10240 MB
node 1 plugged: 0 MB

Make this consistent by reporting all hot and coldplugged memory a.k.a. DIMM and NVDIMM as "plugged".

With this change, the output of "info numa" is now:

    (qemu) info numa
    info numa
    2 nodes
    node 0 cpus: 0 1
    node 0 size: 10240 MB
    node 0 plugged: 8192 MB
    node 1 cpus: 2 3
    node 1 size: 10240 MB
    node 1 plugged: 8192 MB
Quoted 2 lines
Fixes 31959e82fb0 ("hmp: extend "info numa" with hotplugged memory information")
Quoted 25 lines

---

v1 -> v2:
- Tweaked patch description/sibject as requested by Igor.

 numa.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)
numa.c +2 -4
index 94f758c757..5f6367b989 100644
@@ -566,10 +566,8 @@ static void numa_stat_memory_devices(NumaNodeMem node_mem[])
 
             if (pcdimm_info) {
                 node_mem[pcdimm_info->node].node_mem += pcdimm_info->size;
-                if (pcdimm_info->hotpluggable && pcdimm_info->hotplugged) {
-                    node_mem[pcdimm_info->node].node_plugged_mem +=
-                        pcdimm_info->size;
-                }
+                node_mem[pcdimm_info->node].node_plugged_mem +=
+                    pcdimm_info->size;
             }
         }
     }