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 的主机内存用量。

  1. 可选: 使用 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
  2. 编辑虚拟机的 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>
  3. 如果虚拟机正在运行,请重启它以应用配置。
注意

为了获得最佳性能,最好遵守主机上每个 NUMA 节点的最大内存大小。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部