Hyper-V vNUMA 启用

https://blueprints.launchpad.net/nova/+spec/hyper-v-vnuma-enable

Windows Hyper-V / Server 2012 引入了对 Hyper-V 虚拟机中 vNUMA 拓扑的支持。此功能提高了配置了大量内存的虚拟机的性能。

问题描述

目前,不支持启用 vNUMA 的 Hyper-V 实例。此蓝图解决了这个问题。

用例

NUMA 可以提高在配置了大量内存的虚拟机上运行的工作负载的性能。此功能对于高性能的 NUMA 感知应用程序(例如数据库或 Web 服务器)非常有用。

Hyper-V 向虚拟机呈现虚拟 NUMA 拓扑。默认情况下,此虚拟 NUMA 拓扑经过优化,以匹配底层主机的 NUMA 拓扑。将虚拟 NUMA 拓扑暴露给虚拟机,允许来宾操作系统和其中运行的任何 NUMA 感知应用程序利用 NUMA 性能优化,就像它们在物理计算机上运行时一样。[1]

Hyper-V 相关限制

  • Hyper-V 无法创建具有非对称 NUMA 拓扑的实例。

  • Hyper-V 无法保证 CPU 固定。

提议的变更

如果启用了 VM vNUMA,Hyper-V 将尝试从单个物理 NUMA 节点分配该 VM 的所有内存。如果单个节点无法满足内存要求,Hyper-V 将从另一个物理 NUMA 节点分配内存。这称为 NUMA 跨越。

如果启用了 vNUMA,VM 可以分配最多 64 个 vCPU 和 1 TB 内存。如果启用了 vNUMA,则无法为 VM 启用动态内存。

可以查询主机 NUMA 拓扑,为每个主机的 NUMA 节点生成一个对象。如果结果只有一个对象,则主机不是基于 NUMA 的。结果 NUMA 节点对象如下所示

NodeId : 0 ProcessorsAvailability : {94, 99, 100, 100} MemoryAvailable : 3196 MemoryTotal : 4093 ComputerName : ServerName_01

主机 NUMA 拓扑必须由 HyperVDriver 在调用方法 get_available_resource 时报告。返回的字典将包含 numa_topology 字段,它将包含一个包含 NumaTopology 对象的数组,转换为 json。

调度程序已经得到了增强,可以在选择调度实例的主机时考虑 NUMA 资源的可用性。[2]

可以为每个单独的 VM 配置虚拟 NUMA 拓扑。可以配置每个虚拟 NUMA 节点中的最大内存量和最大虚拟处理器数量。

通过 flavor extra specs 请求启用 vNUMA 的实例 [2]

  • hw:numa_nodes=NN - 向来宾公开的 NUMA 节点数。

HyperVDriver 必须检查实例是否需要 CPU 固定或非对称 NUMA 拓扑。由于它们不受支持,因此应引发异常。

可以使用带有“_”而不是“:”的等效镜像属性来定义。 (示例:hw_numa_nodes=NN)。Flavor extra specs 将覆盖等效的镜像属性。

有关 flavor extra specs 和镜像属性的更多详细信息,请参阅参考部分 [2]。实现将以类似于 libvirt 的方式进行。

备选方案

没有,目前没有使用当前的 HyperVDriver 启用 vNUMA 的替代方法。

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

此功能可以帮助提高配置了大量内存的虚拟机上运行的工作负载的性能。

其他部署者影响

如果启用了主机 NUMA 跨越,虚拟机可以使用方法中可用的任何内存,无论其在物理 NUMA 节点上的分布如何。这可能导致 VM 重启之间 VM 性能有所不同。默认情况下启用 NUMA 跨越。

可以通过运行以下 Powershell 命令轻松检查可用的主机 NUMA 节点

Get-VMHostNumaNode

如果只显示一个 NUMA 节点,则表示该系统不是基于 NUMA 的。禁用 NUMA 跨越不会带来任何优势。

启用 NUMA 跨越和禁用 NUMA 跨越都有优点和缺点。有关更多信息,请参阅参考部分 [1]。

vNUMA 将通过镜像属性或 flavor extra specs 请求。Flavor extra specs 将覆盖镜像属性。有关如何请求特定的 NUMA 拓扑和不同用例的更多信息,请参阅参考部分 [2]。

在 Hyper-V 中使用 NUMA 拓扑创建实例时,需要考虑一些事项

  • Hyper-V 无法保证 CPU 固定。因此,nova HyperVDriver 不会创建具有将 hw:cpu_policy flavor extra-spec 或 hw_cpu_policy 镜像属性设置为 dedicated 的实例。

  • Hyper-V 无法保证非对称实例 NUMA 拓扑,nova HyperVDriver 不会创建它们。例如,如果实例需要在 NUMA 节点 0 中需要 2GB 内存,在 NUMA 节点 1 中需要 6GB 内存,则实例将不会生成。同样规则适用于 vCPU 的数量。

开发人员影响

实现

负责人

主要负责人

Claudiu Belu <cbelu@cloudbasesolutions.com>

工作项

如“拟议的变更”部分所述。

依赖项

测试

  • 单元测试。

  • 新功能将由 Hyper-V CI 进行测试。

文档影响

参考资料

[1] Hyper-V 虚拟 NUMA 概述

https://technet.microsoft.com/en-us/library/dn282282.aspx

[2] Virt driver guest NUMA 节点放置和拓扑

https://specs.openstack.org/openstack/nova-specs/specs/juno/implemented/virt-driver-numa-placement.html

历史

  • 已在 Liberty 中批准。

  • 添加了 Hyper-V 相关的限制。