11.2. 诊断
如果没有额外的设置,nova 不知道其他进程使用了一定数量的巨页内存。默认情况下,nova 假定所有巨页内存都可用于实例。如果假定这个 NUMA 节点仍有 pCPU 和空闲的巨页内存,Nova 将首先填满 NUMA 节点 0。这可能是因为以下原因造成的:
- 请求的 pCPU 仍适用于 NUMA 0
- 所有现有实例的合并内存加上实例的内存仍然被生成至 NUMA 节点 0
- OVS 等另一个进程在 NUMA 节点 0 上保存一定数量的巨页内存。
确保分配与巨页倍数相等的类别 RAM 量,以避免 [Errno 12] 无法分配内存
错误。
11.2.1. 诊断步骤 复制链接链接已复制到粘贴板!
检查
meminfo
。以下显示了每个 NUMA 节点有 2MB 巨页和 512 个可用巨页的虚拟机监控程序:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 NUMA 架构:
lscpu | grep -i NUMA
[root@overcloud-compute-1 nova]# lscpu | grep -i NUMA NUMA node(s): 2 NUMA node0 CPU(s): 0-3 NUMA node1 CPU(s): 4-7
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 OVS 保留的巨页。在以下输出中,OVS 会为每个 NUMA 节点保留 512MB 的巨页:
ovs-vsctl list Open_vSwitch | grep mem
[root@overcloud-compute-1 virt]# ovs-vsctl list Open_vSwitch | grep mem other_config : {dpdk-init="true", dpdk-lcore-mask="3", dpdk-socket-mem="512,512", pmd-cpu-mask="1e"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署具有以下类别的实例(1 个 vCPU 和 512 MB 或内存):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新实例将引导并将使用来自 NUMA 1 的内存:
nova list | grep d98772d1-119e-48fa-b1d9-8a68411cba0b
[stack@undercloud-4 ~]$ nova list | grep d98772d1-119e-48fa-b1d9-8a68411cba0b | d98772d1-119e-48fa-b1d9-8a68411cba0b | cirros-test0 | ACTIVE | - | Running | provider1=2000:10::f816:3eff:fe8d:a6ef, 10.0.0.102 |
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow nova boot --nic net-id=$NETID --image cirros --flavor m1.tiny --key-name id_rsa cirros-test0
nova boot --nic net-id=$NETID --image cirros --flavor m1.tiny --key-name id_rsa cirros-test0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个实例无法引导:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从计算节点,检查 NUMA 节点 0 上的空闲巨页是否已耗尽。然而,NUMA 节点 1 有足够的空间:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /var/log/containers/nova/nova-compute.log
中的信息显示实例 CPU 固定到 NUMA 节点 0:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在 numatune
部分中,nodeset="0" 表示内存将被声明从 NUMA 0。