是什么
virsh nodeinfo 读取的是宿主(宿主机/物理节点)自己的资源画像:CPU 型号与主频、插槽数、每插槽核心数、每核心线程数、NUMA 单元数与内存总量。规划虚机规格、判断能开多少台虚机、排查虚机性能不达标时,先看这台命令的输出比凭感觉估算靠谱。它只反映宿主视角,看不到虚机内部的资源使用情况。
基本信息
| 总览 | virsh nodeinfo,输出 CPU 与内存的宿主级画像 |
|---|---|
| CPU 位图 | virsh nodecpumap,给出现在可用于分配的 CPU 集合 |
| NUMA 明细 | virsh numatune 与 numactl --hardware 查看节点与距离 |
| 内存明细 | virsh nodememstats,按 NUMA 节点列出内存总量与可用量 |
| 使用前提 | 在宿主机上以具备 libvirt 读权限的账号执行 |
典型使用场景
- 新建虚拟化节点后做验收:核对实际识别到的 CPU 型号、核心数与内存容量是否与采购一致
- 规划虚机规格:按 NUMA 单元与核心数推算单台虚机可用的 vCPU 上限
- 排查性能不达标:先确认宿主规格与线程配置,再判断问题出在虚机内部还是资源争抢
- 容量盘点:批量采集各节点画像,汇总集群可分配资源与剩余空间
- 设备更换或内存扩容后复核:对比改动前后的输出,确认新增资源已被识别
采集宿主信息
采集宿主信息
virsh nodeinfo # CPU 型号、插槽、核心、线程、NUMA 与内存
virsh nodecpumap # 可用于分配的 CPU 位图
virsh nodememstats | head -20 # 分 NUMA 节点的内存统计
numactl --hardware # 节点数量、各节点内存与跨节点距离
lscpu | head -20 # 与 nodeinfo 交叉核对,排除虚拟化层差异输出逐列读法
| 字段 | 含义 | 判读要点 |
|---|---|---|
| CPU model | 处理器型号与主频 | 与采购清单核对,型号不符说明主机被换过 |
| CPU frequency | 当前主频(MHz) | 明显低于标称值要查功耗策略与降频 |
| CPU socket(s) | 物理插槽数 | 决定 NUMA 单元的基本数量 |
| Core(s) per socket | 每插槽核心数 | 乘插槽数得到物理核心总数 |
| Thread(s) per core | 每核心线程数 | 为 2 表示开启了超线程 |
| NUMA cell(s) | NUMA 单元数 | 单元内的核心与内存才是低延迟资源池 |
| Memory size | 宿主内存总量 | 单位 MiB,注意与虚拟机内存预留的差额 |
规划虚机时用 core 数与 NUMA 单元数一起算:单台虚机的 vCPU 尽量落在一个 NUMA 单元内,跨单元分配会带来内存访问延迟,大内存虚机尤其明显。
nodeinfo 显示的是宿主总量,不等于还能开多少台虚机:要扣掉虚机预留内存、宿主自身开销与超分策略允许的额度,否则会在分配时报内存不足。