简介

在第一个中小企业和分支机构的HCI基准测试阶段,我们在12台Supermicro超级服务器组成的可用HCA集群上获得了670万IOPS,是理论上1320万IOPS的51%,这些服务器采用了英特尔® Xeon® Platinum 8268处理器、英特尔® Optane™ SSD DC P4800X系列硬盘和Mellanox ConnectX-5 100GbE网卡,全部由Mellanox SN2700 Spectrum™交换机和Mellanox LinkX®铜缆连接。这是我们生产型HCA的标准硬件配置,其中只有CPU进行了升级,以追求人机交互领域记录。

硬件

我们将集群的存储能力提高了一倍:我们又给每个节点安装了两块英特尔® Optane™ SSD DC P4800X系列硬盘。根据英特尔的建议,NVMe硬盘被配置为回写缓存。英特尔® SSD D3-S4510被用作主存储。现在,存储具有块级复制功能,但是,缓存没有被复制。这种配置适合SQL可用性组(AG)、SAP和其他数据库等应用,这些应用需要在共享存储和高速缓存之间进行数据同步(一致性检查)。

软件

在我们的设置中,StarWind HCA运行最快的软件:Microsoft Hyper-V(Windows Server 2019)和StarWind Virtual SAN服务应用程序在Windows用户区域中运行。 除避免中断驱动的IO外,StarWind还支持轮询,以通过将CPU周期转换为IOPS来减少延迟并提高性能。 我们还开发了TCP回送加速器,以绕过同一台计算机上的TCP堆栈,并开发了iSCSI负载均衡器,以将新的iSCSI会话分配给新的CPU内核,从而解决了Microsoft iSCSI Initiator老化的问题。

在我们的网站上,您可以了解有关由StarWind Virtual SAN支持的超融合基础架构的更多信息。

有12节点的StarWind HyperConverged Appliance群集规格

平台:Supermicro SuperServer 2029UZ-TR4 +
CPU: 2 个英特尔® Xeon® Platinum 8268 处理器 2.90 GHz。 Intel® Turbo Boost开启,Intel® Hyper-Threading开启。
RAM: 96GB
启动和存储容量:2个Intel®SSD D3-S4510系列(240GB,M.2 80mm SATA 6Gb / s,3D2,TLC)
回写缓存容量: 4个Intel® Optane™ SSD DC P4800X系列(375GB, 1/2 Height PCIe x4, 3D XPoint™). 安装了最新的可用固件
RAW容量: 5.7TB
可用容量 8.38TB
工作集容量: 5.4TB
工作集容量:1.32TB
联网: 2个Mellanox ConnectX-5 MCX516A-CCAT 100GbE双端口网卡
交换器 2个Mellanox SN2700 32个频谱端口100GbE以太网交换机

下图说明了服务器的互连情况。

注意: 在每台服务器上,每个NUMA节点都有1个Intel®SSD D3-S4510、1个Intel®Optane™SSD DC P4800X系列和1个Mellanox ConnectX-5 100GbE双端口网卡。 这种配置能够从每个硬件中挤出最大性能。 这样的连接不是推荐而是严格的要求。 为了获得类似的性能,不需要调整NUMA节点配置,这意味着默认设置是可以的。

软件设置

操作系统:在所有节点上安装了Windows Server 2019数据中心评估版1809,build 17763.404,并在2019年5月1日提供了最新更新。考虑到性能角度,电源计划被设置为高性能,所有其他设置,包括相关的侧通道缓解措施(应用了Spectre v1和Meltdown的缓解措施),都保持在默认设置。

Windows安装:Hype-V角色、MPIO和故障转移集群功能
为了使部署过程更快,我们制作了Windows Server 2019的图像,安装了Hype-V角色,并启用了MPIO和Failover Cluster功能。之后,该镜像被部署在12x Supermicro服务器上。
驱动程序安装。 固件升级
安装Windows后,将为每个硬件应用Windows Update,并为Intel NVMe SSD安装固件更新。

StarWind Virtual SAN. 每台服务器上均已安装了当前可用的StarWind VSAN版本(8.0.0.12996)。 整个群集的可用容量为9TB RAW容量的8.38TB。 Microsoft建议每个服务器节点至少创建一个群集共享卷。 因此,对于12台服务器,我们使用ReFS创建了12个卷。

ReFS向我们展示了便利的性能,超过了使用NTFS文件系统
每个卷具有340GB的容量,并使用了双向镜像弹性,并分配给两个服务器。 对于特定的工作集,我们以4.08 GB的可用总存储空间结束。 所有其他设置(例如列和交错)均为默认设置。 为了准确地仅测量持久性存储的IOPS,已禁用内存中CSV读取缓存。
StarWind iSCSI加速器(负载平衡器)。 我们将内置的Microsoft iSCSI Initiator与我们自己的用户模式iSCSI 启动器一起使用。 Microsoft iSCSI启动器是在“石器时代”开发的,当时服务器具有一个或两个插槽的CPU,每个插槽一个内核。 如今拥有更强大的服务器,启动器并没有发挥它应有的作用。 因此,我们开发了iSCSI加速器作为Microsoft iSCSI启动器和网络堆栈之间的筛选器驱动程序。 每次创建新的iSCSI会话时,都会将其分配给空闲的CPU内核。 因此,将统一使用所有CPU内核的性能,并且延迟接近零。 通过这种方式分配工作负载可确保智能计算资源的利用率:没有内核不堪重负,而其他内核则处于空闲状态。 StarWind iSCSI Accelerator(负载均衡器) 安装在每个群集节点上,以平衡Hyper-V服务器中所有CPU内核之间的虚拟化工作负载。

StarWind Loopback Accelerator. 作为StarWind Virtual SAN的一部分,StarWind回送加速器的安装和配置是为了在微软iSCSI 启动器通过环回接口连接到StarWind iSCSI Target的情况下显著降低延迟时间和CPU负载。这是在环回模式下的零拷贝内存,因此绕过了大部分的TCP堆栈。

注意: 由于StarWind Loopback Accelerator提供的快速路径,每个iSCSI LUN具有2个环回iSCSI会话和2个外部伙伴iSCSI会话。 设置了最小队列深度(LQD)MPIO策略。 该策略可最大程度地提高带宽利用率,自动使用具有最小当前未完成队列的活动/优化路径。
iSCSI/iSER (RDMA)模块 与StarWind HyperConverged Appliances一样,12节点HCI集群采用Mellanox网卡和交换机。在这项研究中,StarWind Virtual SAN利用iSER作为RDMA的主干链路,提供最大可能的性能。

注意: Windows Server 2019尚不支持iSER(RDMA)。 缺少所有RDMA会对CPU造成影响和限制性能的压力。 忽略本地Windows TCP / IP堆栈开销,StarWind的内置用户区域iSER启动器用于数据和元数据同步,并通过iSER(RDMA)确认“客人”写入。 内存中数据复制操作的延迟时间比我们预期的要长。 因此,4K IO模块的性能结果低于我们从存储中获得的结果。
因此,通过RDMA、环回中的DMA和TCP连接的组合,加快了IO性能。

NUMA节点。 考虑到每个群集节点上的NUMA节点配置,为了复制两台服务器之间的共享存储,使用位于同一NUMA节点上的网络适配器配置虚拟磁盘。例如,在集群节点3上,虚拟磁盘是在Intel Optane SSD上创建的,并且位于NUMA节点1上。所以,为了实现磁盘镜像,Mellanox ConnectX-5 100GbE网卡也位于NUMA节点1上。
对于12节点超融合群集,根据Microsoft的建议,在12个同步镜像的StarWind虚拟磁盘之上创建了12个群集共享卷。 Hyper-V虚拟机。 根据经验归纳,我们取12个虚拟机×每2个虚拟处理器=24个虚拟处理器,以使所有性能饱和。这就是12个服务器节点上总共144个Hyper-V Gen 2虚拟机。每个虚拟机运行Windows Server 2019标准版,并被分配了2 GiB的内存。 回写缓存。 Intel Optane NVMe SSD被配置为每个虚拟机的回写式缓存设备。

注意: 已禁用NUMA扩展,以确保虚拟机始终根据有关NUMA扩展的已知事实始终以最佳性能运行。

基准测试

在虚拟化和超融合基础架构中,通常根据每秒输入/输出(I/O)操作的数量或 "IOPS "来判断性能--本质上是虚拟机可以执行的读或写的数量。一台虚拟机可以产生大量的随机或顺序读/写。在真实的生产环境中,通常有大量的虚拟机,这使得数据流完全随机化。4 kB模块对齐IO是Hyper-V虚拟机使用的模块大小,所以它是我们选择的IO模式。

在业界,硬件和软件厂商经常使用这种类型的模式。换句话说,他们基本上是在最坏的情况下衡量可能的最佳性能。

在本文中,我们在测量Storage Spaces Direct性能时不仅执行了与Microsoft相同的基准测试,还针对虚拟化生产环境中常用的其他IO模式进行了额外的测试。

VM Fleet. 我们使用了GitHub上提供的开源VM Fleet工具。VM Fleet可以轻松地在数百或数千台Hyper-V虚拟机中同时协调DISKSPD(流行的Windows微基准工具)。

让我们仔细看看DISKSPD设置。 为了使环境性能达到饱和,我们为每个文件(-t2)设置了2个线程。 考虑到英特尔的建议,给定数量的线程用于大量存储IO测试。 结果,在每个线程32个未完成IO(-o32)下,我们在饱和点获得了最高的存储性能。 要禁用硬件和软件缓存,我们指定了无缓冲的IO(-Sh)。 我们为随机工作负载指定了-r,为4 kB模块大小指定了-b4K。 我们通过-w参数来改变读/写比例。

综上所述,以下是DISKSPD的调用方式。 .\diskspd.exe -b4 -t16 -o32 -w0 -Sh -L -r -d900 [...]

注意: 所有写操作都将首先缓存。 因此,我们修改了VM Fleet脚本进行基准测试。 我们希望VM Fleet从缓存和CSVFS中读取IO性能。

StarWind命令中心作为Windows Admin Center和庞杂的System Center Configuration Manager的替代方案,StarWind命令中心整合了复杂的操作面板,在一个屏幕上提供有关每个环境组件状态的所有重要信息。

作为一个单屏工具,StarWind命令中心能够解决管理和监控IT基础设施、应用和服务的所有任务。作为StarWind生态系统的一部分,StarWind命令中心可以管理管理程序(VMware vSphere、Microsoft Hyper-V、Red Hat KVM等),集成Veeam备份与复制和公共云基础设施。除此之外,该解决方案还集成了StarWind ProActive高级支持,可全天候监控集群,预测故障,并在事情发生之前做出反应。
例如,StarWin命令中心存储性能操作面板具有一个交互式图表,绘制了在 Windows 中 CSV 文件系统层测量的群集范围内的总 IOPS。DISKSPD 和 VM Fleet 的命令行输出中提供了更详细的报告。 存储性能的另一面是延迟--一个IO需要多长时间才能完成。许多存储系统在重度排队下表现更好,这有助于最大化堆栈每一层的并行性和繁忙时间。但是有一个权衡:排队会增加延迟。例如,如果你能在亚毫秒级延迟的情况下做到100 IOPS,如果你能容忍更高的延迟,你可能也能达到200 IOPS。延迟是要提防的:有时,最大的IOPS基准测试数只能通过延迟来实现,否则延迟是不可接受的。

在Windows中同一层测量的集群范围内的总IO延迟也被绘制在HCI操作面板上。

结论

任何提供容错的存储系统都必须对写入进行分布式拷贝,而写入必须穿越网络,并产生后端写放大。因此,最大的IOPS基准数字通常只在读取的情况下实现,特别是如果存储系统有常识性的优化,尽可能从本地副本中读取,而StarWind Virtual SAN做到了。

注意: 为了使其正确,我们向您展示VM Fleet结果和StarWind命令中心的结果,以及这些测试的视频。

操作1: 4К random read --> 4К random read --> .\Start-Sweep.ps1 -b 4 -t 16 -o 32 -w 0 -d 1500 -p r


通过100%的读取,群集可提供26,834,060 IOPS。 在理论上的26,400,000 IOPS中,这是101.5%的性能:每个节点具有四个Intel Optane NVMe SSD,每个执行550,000 IOPS。

操作2: 4К random read/write 90/10 --> .\Start-Sweep.ps1 -b 4 -t 16 -o 32 -w 10 -d 1500 -p r

通过90%的随机读取和10%的写入,该群集可提供25,840,684 IOPS。

注意: 自从StarWind Virtual SAN同步每个虚拟磁盘以来,我们观察到两次写入。 在StarWind命令中心可以清楚地看到这一点。

操作3: 4К random read/write 70/30 --> .\Start-Sweep.ps1 -b 4 -t 16 -o 32 -w 30 -d 1500 -p r

凭借70%的随机读取和30%的写入,该群集可提供16,034,494 IOPS。

注意:由于StarWind Virtual SAN同步了每个虚拟磁盘,因此在StarWind命令中心可以看到两次写入。

操作4: 2M sequential read --> .\Start-Sweep.ps1 -b 2048 -t 4 -o 8 -w 0 -d 900 -p s

在100%随机读取的情况下,集群利用网络吞吐量-116.39GBps。‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬

这是在理论112.5GBps的103.5%的性能。 操作5: 2M sequential write --> .\Start-Sweep.ps1 -b 2048 -t 4 -o 8 -w 100 -d 900 -p s

在100%随机写入的情况下,集群利用了所有的网络吞吐量--101.8GBps。


总结

本文介绍了第二个基准测试阶段的结果,重点介绍了一个12节点可用的StarWind HCA集群的性能。其中每台服务器均采用英特尔® Xeon® Platinum 8268处理器,英特尔® SSD D3-S4510系列作为主存储,英特尔® Optane™ SSD DC P4800X系列硬盘作为专用缓存以及Mellanox ConnectX-5 100 GbE网卡。

12节点全闪存NVMe集群提供了2683.4万IOPS,是理论上2640万IOPS的101.5%。

对于生产配置来说,这确实是突破性的性能,这是由于StarWind Virtual SAN作为共享存储并使用回写式高速缓存(使用不带RDMA的iSCSI用于客户端访问的iSCSI)和在iSER上运行的主干连接而成为可能的。 在我们的环境中,没有使用专有技术,这意味着使用iSCSI启动器,StarWind Virtual SAN和配置为缓存设备的Intel Optane的任何虚拟机管理程序都可以获得类似的性能。