云主机vNUMA配置

vNUMA配置:通过CPU绑定透传关联的物理机NUMA节点(pNUMA Node)拓扑,为云主机生成vNUMA节点(vNUMA Node)拓扑,实现云主机CPU优先访问所在vNUMA节点本地内存,提高云主机性能。

相关定义

  • NUMA(Non-Uniform Memory Access):非一致性内存访问,是一种计算机内存设计架构。该架构下,CPU访问内存的时间取决于CPU与内存的相对位置。通过优先访问相对位置较近的内存可缩短延迟,从而可提升主机系统性能。
  • pNUMA节点(pNUMA Node):基于物理机NUMA架构预定义的NUMA节点,用于物理机CPU和内存管理。一台物理机可有一个或多个pNUMA节点,一个pNUMA节点主要由一个或多个物理CPU核(pCPU)和本地内存组成。
  • pNUMA拓扑(pNUMA Topology):CPU厂商基于NUMA架构预定义的物理机NUMA节点拓扑。
  • vNUMA节点(vNUMA Node):基于CPU绑定透传关联的物理机NUMA节点而生成的云主机NUMA节点,用于云主机CPU和内存管理。一个vNUMA节点主要由一个或多个虚拟CPU核(vCPU)和本地内存组成。
  • vNUMA拓扑(vNUMA Topology):基于CPU绑定生成的云主机NUMA节点(vNUMA Node)拓扑。
  • 本地内存:CPU(pCPU或vCPU)通过所在NUMA节点(pNUMA节点或vNUMA节点)非CPU核部件中内存控制器可直接访问的内存。相比非本地内存,CPU访问本地内存的延迟更低。

功能原理

ZStack Cloud 云主机vNUMA配置基于CPU绑定实现,CPU绑定将云主机的vCPU与物理机的pCPU严格关联,为云主机分配特定的pCPU。vNUMA配置时,云主机所有vCPU均绑定pCPU,同时单个vCPU所绑定的pCPU均处在同一个pNUMA节点中。

vNUMA配置后,云主机直接透传关联的物理机pNUMA节点拓扑,生成一个或多个vNUMA节点,构成云主机的vNUMA拓扑。云主机vCPU基于vNUMA拓扑优先访问所在节点的本地内存。

Figure 1所示:
Figure 1. 云主机vNUMA配置原理


配置vNUMA

ZStack Cloud主菜单,点击资源中心 > 云资源池 > 虚拟资源 > 云主机,选择目标云主机,点击总览vNUMA,进入配置 vNUMA页面。
Note: vNUMA会根据CPU绑定配置将云主机vCPU和内存进行分组,在为云主机配置vNUMA前,需关闭云主机高级设置计算规格在线修改
可参照以下示例进行vNUMA配置:
  • vNUMA:打开vNUMA开关,默认关闭。
  • CPU绑定:将云主机的vCPU与物理机的pCPU严格关联,为云主机分配特定的 pCPU,可选择按NUMA结构绑定和输入绑定两种绑定策略。
    • 按NUMA结构绑定:将vCPU按照物理机pNUMA拓扑绑定pCPU。支持手动绑定和智能绑定。
      • 手动绑定支持自定义为所有vCPU绑定pCPU。
      • 智能绑定按pNUMA节点ID从大到小的顺序,将该云主机vCPU与pNUMA节点中pCPU一对一绑定。当一个pNUMA节点中pCPU均已被该云主机vCPU绑定,将依序绑定下一个pNUMA节点中的pCPU。若所有pCPU均已被绑定,但仍有vCPU未绑定pCPU,将轮询至首个绑定的pNUMA节点继续一对一绑定。
      • 一个vCPU支持绑定一个或多个pCPU,同时一个pCPU支持被一个或多个vCPU绑定。
      • 支持展示各个pCPU过去15分钟平均使用率,助力选择最佳pCPU进行绑定。
    • 输入绑定
      • 点击添加CPU绑定按钮,可设置多条CPU绑定规则。
      • 左侧文本框中输入vCPU范围,在右侧文本框中输入pCPU范围。填写规则:“-”表示区间,“^”表示不包括,每条规则之间用“,”隔开。例如:
        • 0-2表示0、1、2号CPU
        • ^2表示不包含2号CPU
        • 0-2,^2表示0、1号CPU
        • 1-7,^2,^3,^4,10 表示 1,5,6,7,10号CPU
    Note:
    • 云主机所有vCPU均需绑定pCPU。
    • 单个vCPU所绑定的pCPU均需在一个pNUMA节点中。
    • vCPU范围取决于所选云主机计算规格,pCPU范围取决于云主机所在物理机的pCPU数量。
    • 如果一个vCPU有多条对应的CPU绑定规则,取其并集。
    • ZStack Cloud支持CPU超分,vCPU数量可以大于pCPU数量,但如果在CPU绑定规则中设置vCPU数量大于pCPU数量,将会大幅影响云主机性能,不推荐这样设置。
  • 重启云主机:选择是否重启云主机,默认不勾选。
    Note:
    • 配置vNUMA后重启云主机生效。
    • 重启云主机可能会导致云主机业务暂时中断,请谨慎操作。
Figure 2所示:
Figure 2. 配置vNUMA


vNUMA拓扑

云主机配置vNUMA并重启后,将生成vNUMA拓扑结构,可在云主机总览页查看:
  • vNUMA
    • 绑定了同一个pNUMA节点中pCPU的vCPU形成一个vNUMA节点,各个vNUMA节点均关联对应pNUMA节点。
    • 总内存为vCPU可直接访问的所在vNUMA节点本地内存总量。
  • pNUMA
    • 展示云主机所关联的所有pNUMA节点。
    • 总内存为pCPU可直接访问的所在pNUMA节点本地内存总量。
    • 空闲内存为pCPU可直接访问的所在pNUMA节点本地空闲内存。
    • 总内存和空闲内存均取自pNUMA节点真实硬件物理内存容量。
Figure 3所示:
Figure 3. vNUMA拓扑


功能优势

  • 系统提效增能:vNUMA通过CPU绑定为云主机生成vNUMA节点拓扑,实现云主机CPU优先访问所在vNUMA节点本地内存,从而提高系统性能和运行效率。
  • 配置方式灵活:支持多种CPU绑定方式,使得绑定配置可视化、智能化、便捷化,助力用户按照业务需求高效精准配置。

应用场景

vNUMA面向NUMA敏感类业务,主要适用于以下场景:
  • 数据库和编译服务场景:

    数据库服务(Oracle、SQL Server)以及编译服务需频繁访问内存,要求系统高性能快速响应。通过配置vNUMA,使服务优先访问本地内存,可大大缩短访问延迟,提高系统计算性能。

  • CPU密集型小应用场景:

    CPU密集型应用对CPU资源需求旺盛,若大量CPU密集型小应用跑在云主机上,可能会出现CPU资源争抢的情况。vNUMA将CPU资源按NUMA结构进行分组,使各个应用运行在特定的vNUMA节点上,从而避免资源争抢,提高系统性能。

功能限制

云主机开启vNUMA后,需注意以下几点:
  • 云主机不支持单独进行CPU绑定。
  • 云主机不支持设置计算规格在线修改。
  • 若在线更改云主机所在的物理机,需确保目的物理机和源物理机的pNUMA结构一致。
  • 若在线更改云主机所在的物理机和主存储,云主机将只迁移至与源物理机pNUMA结构相同的物理机。