Windows Server “8” Beta:Hyper-V 和纵向扩展虚拟机,第 2 部分

今天的博文是为 Hyper-V 和扩展虚拟机群的讨论做一个总结。

本博文由 Windows Server 团队的资深项目经理 Jeff Woolsey 撰写。

 

虚拟化一族,你们好!

上篇博文中,我们讨论了 Windows Server “8” 如何将NUMA技术引入到虚拟机,以及 Hyper-V 如何在创建虚拟机时自动执行正确的操作。让我们来对此做进一步展开,探讨一下从 Windows 8 Developer Preview 到 Windows Server “8” Beta(以及 Windows 8 Consumer Preview 中的 Hyper-V 客户端)进行了哪些改进。

Developer Preview 版本经验总结
下面是 Windows Server “8” Developer Preview 中 Hyper-V 配置界面的 GUI 外观。

 

图 2:Windows 8 Developer Preview Hyper-V VM NUMA 设置

在开发过程中,我们发现您确实对这些 NUMA 设置很感兴趣并开始重新配置它们。(符合预期…)然而,当您试用完这些设置,可能不清楚如何恢复到正确设置。您所需要的是:

 

图 3:“重置”按钮

没错,这正是我们所执行的操作。如果您查看一下 Windows Server “8” Beta 中的 Hyper-V,会发现配置已经过重新设计。您还会看到一个新按钮(以绿色突出显示),按钮上显示 使用硬件拓扑 。单击此按钮时,Hyper-V 会将虚拟 NUMA 拓扑重置为物理硬件的拓扑。

 

图 4:Windows 8 Beta Hyper-V VM NUMA 设置

因此,如果不确定,就可以单击 使用 硬件拓扑 按钮来获取最佳设置。最后我要提醒您注意的是,您必须首先关闭虚拟机,然后才能进行任何 NUMA 配置更改或单击 使用硬件拓扑 按钮。据我所知,任何操作系统都不支持在虚拟机运行中更改 NUMA 配置。

Hyper-V 虚拟 NUMA 的另一个好处是使您能够长期获得投资回报。无论您是在此版本的 Hyper-V 上部署现有解决方案,还是构建供日后使用的解决方案,NUMA 在 今天 都十分流行,并且会得到越来越广泛的使用。实际上,Windows Server “8” 还有另一个很好的功能:IIS 8.0。

Windows Server “8” Hyper-V、IIS 8.0 和 NUMA
IIS 首次具备了 NUMA 感知功能。信息来源:https://learn.iis.net/page.aspx/1095/iis-80-multicore-scaling-on-numa-hardware/

IIS 8.0 通过在非一致性内存访问 (NUMA) 硬件上智能地分布和关联进程来解决此问题。

Windows Server 8 中的 Internet 信息服务 (IIS) 能够识别 NUMA,并能为 IT 管理员提供最佳配置。下文介绍在 NUMA 硬件上使用 IIS 8.0 实现最佳性能的不同配置选项。
IIS 支持以下两种工作负荷分区方法:

1.  在一个应用程序池(即 网络园)中运行多个工作进程。
如果您使用的是此模式,默认情况下,应用程序池配置为运行一个工作进程。为实现性能最大化,您应该考虑使运行的工作进程数量与 NUMA 节点数量相同,从而使工作进程与 NUMA 节点之间形成 1:1 关联关系。通过将 AppPool 设置中的 “最大工作进程数” 设为 0 即可实现此目的。使用此设置时,IIS 会确定硬件上可用 NUMA 节点的数目,并启动相同数量的工作进程。
2.  在一个工作负荷/站点中运行多个应用程序池
使用此配置时,工作负荷站点会划分给多个应用程序池。例如,该站点可能包含几个配置为在单独的应用程序池中运行的应用程序。这种配置会以有效的方式为该工作负荷/站点运行多个 IIS 工作进程,并且 IIS 会智能地分布和关联各个进程,从而实现性能最大化。

 

此外,在 IIS 工作进程即将开始运行时,IIS 8.0 会通过两种方式识别最佳的 NUMA 节点。

1.  最大可用内存(默认)
此方法的初衷是,具有最大可用内存的 NUMA 节点是最适合托管即将开始运行的额外 IIS 工作进程的节点。IIS 了解每个 NUMA 节点的内存使用情况,并使用此信息来对 IIS 工作进程进行“负荷平衡”。
2.  依赖Windows操作系统来配置
IIS 还提供了让 Windows 操作系统 做此决定的选项。Windows 操作系统使用循环法来实现配置。

最后,有两种不同方法可以将 IIS 工作进程中的线程关联到 NUMA 节点。

1.  软关联(默认)
通过软关联,如果其他 NUMA 节点具有循环,IIS 工作进程的线程可能被安排到无关联的 NUMA 节点。此方法有助于从整体上充分利用系统上的所有可用资源。
2.  硬关联
使用硬关联时,无论系统上其他 NUMA 节点的负荷如何,IIS 工作进程中的所有线程都会关联到使用上述方法选定的 NUMA 节点。

性能监控和虚拟 NUMA
您也许想知道:“我如何验证我正在运行的虚拟机使用的是本地 CPU 和内存资源,而不是远程资源?”Hyper-V 同样也提供了此功能。查看一下 Perfmon,您会注意到两个计数器:

1.  以绿色突出显示:对于虚拟处理器,提供带有 远程运行时间 计数器的 Hyper-V 虚拟机监控程序虚拟处理器
2.  以红色突出显示:在 Hyper-V VM VID 分区 下,您会看到新的 远程物理页面 计数器。
 

图 2:新的虚拟 NUMA 性能计数器

数字越小越好(理想数字为 0)。两个数字都为零(最理想的情况)意味着所有虚拟处理器和内存分配均是本地的。

总结
我们希望能够通过 Windows Server “8” 帮助您对业务进行云优化,使您能够在 Hyper-V 上托管绝大部分的工作负荷。我们还希望您能够长期从投资中获得收益,而这,正是此版本 Hyper-V 支持以下功能的原因:
     • 支持超大型扩展虚拟机
     • 引入虚拟 NUMA 并自动使用最佳方式配置虚拟机拓扑

最后,考虑到您当前可能没有大型扩展系统,我在此提供几张屏幕截图以供参考。谨启!-Jeff

 

图 3:Windows Server 2008 R2 SP1 作为具有 32 个虚拟处理器的来宾操作系统

 

 

图 4:Windows Server “8” Beta 作为具有 32 个虚拟处理器的来宾操作系统

 

 

图 5:Centos 6.2 作为具有 32 个虚拟处理器的来宾操作系统