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]

项目优先级

提议的变更

如果启用了 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

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

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

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

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

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

  • hw:numa_mempolicy=preferred|strict - 内存分配策略。

  • hw:numa_cpus.X=<cpu-list> - 将 vCPU N-M 映射到 Guest NUMA 节点 X,与主机 NUMA 节点无关。

  • hw:numa_mem.X=<ram-size> - 将 N MB 内存映射到 NUMA 节点 X。

可以使用带有“_”而不是“:”的等效镜像属性来定义。 (示例: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]。

开发人员影响

实现

负责人

主要负责人

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

历史