Hyper-v Server NUMA
在新的Windows 2012 R2 Hyper-V 4.0 中,Hyper-V可以在虚拟机级别提供对NUMA架构的支持,NUMA架构在中大型系统上一直非常盛行,也是高性能的解决方案,在系统延迟方面表现都很优秀。NUMA 系统通常是多处理器系统,其中的内存延迟随访问它的处理器不同而有所不同。内存被分成多个节点,CPU 和节点之间的延迟可能各不相同,并且每个 CPU 都被视为它可最快访问的那个节点的一部分。如果大家对NUMA不太认识,可以先对NUMA 结构认识认识。
通过使用 NUMA,处理器可以比访问远程内存(属于系统中其他处理器的内存)更快的速度访问来本地内存(直接连接到该处理器的内存)。现代化的操作系统与 SQL Server 等高性能应用程序在开发过程中就针对系统的 NUMA 拓扑进行了优化,会在线程调度或内存分配时考虑到 NUMA 的存在,借此改善性能。
通过将虚拟 NUMA 拓扑投射到Hyper-v虚拟机内部,能在大规模虚拟机环境中实现更优化的性能与负载扩展性。这样做可以让来宾操作系统与 SQL Server 等应用程序,或 IIS 充分利用 NUMA 优化性能。投射给 Hyper-V 虚拟机的默认虚拟 NUMA 拓扑通过优化可与宿主机的 NUMA 拓扑保持一致,如下图所示为客户机NUMA 拓扑默认与主机的 NUMA 拓扑匹配。
来宾 NUMA 确保可感知 NUMA 的重要负载能获得最佳性能,并充分利用底层硬件的性能与硬件本身的能力,通过硬件、软件,及应用程序领域的投资获得最大化收益。运行 SQL 与 IIS 的客户将通过来宾 NUMA 获得大量收益
Microsoft SQL Server 2012 与 Windows Server 2012 中的 Internet Information Services(IIS) (IIS) 8 等高性能应用程序可感知 NUMA,相比在不支持 NUMA 的平台和虚拟机中运行的虚拟化实例,可极大改善性能。对来宾 NUMA 的支持还可用于使用 Windows Server 2012 故障转移群集搭建的高可用解决方案。故障转移群集会在移动虚拟机前评估节点 NUMA 配置,确保目标节点能良好支持虚拟机中运行的负载。
如果将虚拟机配置为使用动态内存,则只有一个虚拟NUMA节点(即扁平 NUMA 拓扑)投射进来宾系统,实际上就禁用了虚拟NUMA支持。
使用如下命令查看宿主机系统是否基于NUMA:
Get-VMHostNumaNode:
打开Hyper-v管理器,点击右侧“Hyper-v设置”:
Hyper-V设置页面选择NUMA跨越,勾选“允许虚拟机节点”:
使用 PowerShell设置允许物理机跨越NUMA节点命令如下:
Set-VMHost -NumaSpanningEnabled $true
当在Hyper-V宿主机中设置启用NUMA以后,会影响运行在Hyper-V宿主机上的所有虚拟机。当宿主机上的内存不足以在虚拟 NUMA节点和主机的物理 NUMA节点之间执行最佳映射时,NUMA 跨越设置可确定虚拟机行为。此设置会影响以下虚拟机操作:启动、还原与迁移。
在 NUMA 跨越处于启用状态,并由于内存限制必须在两个或多个物理 NUMA 节点之间拆分一个或多个虚拟 NUMA 节点时,仍然可以启动虚拟机或将VM还原或迁移到其他宿主机。但是,此拆分将导致在虚拟NUMA和物理 NUMA 节点之间执行非最佳映射。NUMA 感知工作负载甚至也可能以非最佳方式执行;例如,虚拟机内显示为本地的内存访问实际上在主机的物理 NUMA 拓扑上可能变为远程。此外,因为将虚拟 NUMA 节点映射到物理 NUMA 节点可能会根据启动虚拟机时的内存可用性而有所不同,因此每次重新启动虚拟机后的性能可能不一致。
在以下情况中,可能会执行虚拟 NUMA 到物理 NUMA 的拆分:
1、配置虚拟机时使用的虚拟 NUMA 节点大于主机的物理 NUMA 节点。这可能是由手动配置虚拟机的 NUMA 设置导致的,或者是因为虚拟机最初在运行 Hyper-V 的服务器上创建,然后移动到具有不同物理 NUMA 拓扑的服务器。
2、 当前在物理 NUMA 节点上分配可用内存需要至少一个虚拟 NUMA 节点受到多个物理 NUMA 节点上的内存支持。可用内存分配不均可能由其他虚拟机的内存使用情况或主计算机系统导致。
当 NUMA 跨越处于禁用状态时,如果强制虚拟机在两个或多个物理 NUMA 节点之间拆分虚拟 NUMA 节点,则 Hyper-V 将不会启动、还原或接受虚拟机的实时迁移。这可确保始终以最佳性能运行虚拟机。每个虚拟 NUMA 节点都由一个物理 NUMA 节点支持,并且虚拟 NUMA 拓扑与物理服务器的 NUMA 拓扑完全一致。建议始终需要最佳性能的 NUMA 感知工作负载使用此设置,但它可能导致虚拟机无法启动、还原或迁移。
启用或禁用 NUMA 跨越的优点和缺点
1、启用:
优点:虚拟机可以利用在主机上提供的任何内存,而不考虑跨物理 NUMA 节点的分配。将启动虚拟机,而不考虑其虚拟 NUMA 拓扑,即使它与主机的物理 NUMA 拓扑不一致也是如此。
缺点:虚拟机性能在每次虚拟机重新启动后可能有所不同。虚拟 NUMA 一致性在每次启动后可能有所不同。NUMA 感知工作负载可能不会以最佳方式执行,因为虚拟 NUMA 拓扑可能与物理 NUMA 拓扑不一致。
2、禁用:
优点:NUMA 感知工作负载能够以最佳方式执行,因为虚拟 NUMA 拓扑与物理 NUMA 拓扑一致。虚拟机性能在每次重新启动后保持一致。
缺点:如果虚拟机的虚拟 NUMA 拓扑未配置为与目标主机的物理 NUMA 拓扑一致,则可能无法将虚拟机迁移到给定主机。启用了动态内存的虚拟机使用的处理器或内存不能多于单个物理 NUMA 节点中提供的数量。
虚拟NUMA
如果需要支持虚拟化较大的扩展工作负载,Windows Server 2012 R2中的 Hyper-V 将提供可扩展的虚拟机扩展限制。最多可以向单个虚拟机分配 64 个虚拟CPU和 1 TB 的RAM。在创建更大的虚拟机时,可能会使用宿主机系统上的多个 NUMA 节点中的RAM。在此类虚拟机配置中,如果虚拟处理器和内存继续从单个 NUMA 节点中进行分配,则工作负载将不会利用 NUMA 优化功能,并且性能将会降低。
在 Windows Server 2012 R2中,Hyper-V 将向虚拟机提供虚拟 NUMA 拓扑。在默认情况下,将优化此虚拟 NUMA 拓扑以匹配基础主计算机的 NUMA 拓扑。通过在虚拟机中公开虚拟 NUMA 拓扑,可允许来宾操作系统以及在其中运行的任何 NUMA 感知应用程序利用 NUMA 性能优化,就像在物理计算机上运行时的行为一样。
从工作负载的角度来看,虚拟和物理 NUMA 之间没有区别。在虚拟机中,当工作负载为数据分配本地内存并在同一个 NUMA 节点中访问该数据时,将在基础物理系统上快速访问本地内存结果。可成功避免由于远程内存访问而引起的性能损失。
在虚拟机中配置NUMA的方式如下:
右键虚拟机,选择设置,展开处理器,,点击NUMA:
在此我们可以使用硬件的NUMA拓扑,也可以自定义NUMA拓扑(在此不做介绍)。
有关Hyper-v Server NUMA拓扑有关的知识今天就给大家介绍这么多!有兴趣的朋友可以去微软的Technet上查看相关资料!
本文转自wuyvzhang 51CTO博客,原文链接:http://blog.51cto.com/wuyvzhang/1722668,如需转载请自行联系原作者