18.6.4. 在虚拟机中配置 NUMA
您可以使用多种方法配置 RHEL 10 主机上虚拟机(VM)的非统一内存访问(NUMA)设置。
为便于使用,您可以使用自动化工具和服务设置虚拟机的 NUMA 配置。但是,手动 NUMA 设置可能会显著提高性能。
先决条件
主机是一个与 NUMA 兼容的机器。要检测是否是这种情况,请使用
virsh nodeinfo命令,并查看NUMA cell(s)行:# virsh nodeinfo CPU model: x86_64 CPU(s): 48 CPU frequency: 1200 MHz CPU socket(s): 1 Core(s) per socket: 12 Thread(s) per core: 2 NUMA cell(s): 2 Memory size: 67012964 KiB如果行的值为 2 或更高,则主机与 NUMA 兼容。
可选:您在主机上安装了
numactl软件包。# dnf install numactl
流程
自动方法
将虚拟机的 NUMA 策略设为
Preferred。例如,要配置 testguest5 虚拟机:# virt-xml testguest5 --edit --vcpus placement=auto # virt-xml testguest5 --edit --numatune mode=preferred使用
numad服务自动将 VM CPU 与内存资源保持一致。# echo 1 > /proc/sys/kernel/numa_balancing启动
numad服务自动将 VM CPU 与内存资源保持一致。# systemctl start numad
手动方法
要手动调整 NUMA 设置,您可以指定将哪些主机 NUMA 节点专门分配给某个虚拟机。这可提高虚拟机 vCPU 的主机内存用量。
可选: 使用
numactl命令查看主机上的 NUMA 拓扑:# numactl --hardware available: 2 nodes (0-1) node 0 size: 18156 MB node 0 free: 9053 MB node 1 size: 18180 MB node 1 free: 6853 MB node distances: node 0 1 0: 10 20 1: 20 10编辑虚拟机的 XML 配置,来将 CPU 和内存资源分配给特定的 NUMA 节点。例如,以下配置将 testguest6 设置为在 NUMA 节点
0上使用 vCPU 0-7,在 NUMA 节点1上使用 vCPUS 8-15。两个节点也都分配了 16 GiB 内存。# virsh edit <testguest6> <domain type='kvm'> <name>testguest6</name> ... <vcpu placement='static'>16</vcpu> ... <cpu ...> <numa> <cell id='0' cpus='0-7' memory='16' unit='GiB'/> <cell id='1' cpus='8-15' memory='16' unit='GiB'/> </numa> ... </domain>- 如果虚拟机正在运行,请重启它以应用配置。
为了获得最佳性能,最好遵守主机上每个 NUMA 节点的最大内存大小。