揭秘VDI存储测试:4节点SDS模拟12000虚拟桌面

2023-10-13 04:20

本文主要是介绍揭秘VDI存储测试:4节点SDS模拟12000虚拟桌面,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

3节点超融合660个虚拟桌面;到4节点SDS上万VM模拟测试验证。

 

本文要点

1、如何将VDI存储I/O特征抽象化?

2Full CloneLink Clone桌面在启动和登录中的不同表现、成因分析

3、为什么说全闪存VDI系统,带宽可能成为瓶颈?

 

接上篇:《4节点近160IOPSSDS/超融合测试不能只看数字

12万邮箱ESRP测试:Exchange超融合存储设计漫谈

 

继基础性能、SQL Server I/O模拟和邮件服务器BenchMark之后,本文将向大家介绍微软S2DStorage Spaces Direct)在VDI桌面虚拟化应用中的测试表现。

 

首先我们将引用一份Dell HCI参考架构文档中的测试结果,然后再来介绍自己的测试内容。

 

Login VSI测试:每节点220桌面的超融合

 

下图来自《Dell EMC Storage SpacesDirect (S2D) Ready Nodes for Microsoft Remote Desktop Services (RDS) –Reference Architecture

链接:http://en.community.dell.com/techcenter/extras/m/white_papers/20444551/download

 


0?wx_fmt=png

 

这是一套3节点Windows Server2016 DataCenter超融合集群,存储部分用OS自带的S2D组建SSD+HDD混合存储池。每节点有2SSD用于Cache分层、4HDD作为容量分层,3副本镜像保护。节点间使用10GbRDMA万兆以太网互连。

 

0?wx_fmt=png

HCI参考架构中测试的硬件配置

 

这里的S2D Ready NodeB5”配置使用了Dell PowerEdge R740xd服务器,CPUXeon SP 5120 GoldMellanox ConnectX-4 LxQLogic 41262网卡支持25GbE,不过环境使用的交换机是Dell S4048万兆和S3048千兆,可能因为新一代25G交换机还没有正式上市销售。

 

由于我们自己测试的网络环境是“不差钱”的100Gb/s RDMA,有读者朋友关心与10/25Gb之间的性能差别。其实大家不难计算出2SATA SSD Cache盘的最大带宽——我认为大多数混合配置下10Gb应该够用了;而若是用NVMe SSDCache或者全闪存的S2D,有条件情况下推荐用25G或以上的网络互连。

 

当然,大家要注意微软S2DRDMA下的表现会好不少,这方面我在第一篇中列出过对比数字。

 

0?wx_fmt=png

这里的每主机桌面密度,与服务器CPU和内存配置直接相关

 

Login VSI测试验证了3种不同负载的虚拟桌面,平均每节点能够承载的VM数量分别为Task Worker——220个、Knowledge Worker——175个和Power Worker——155个,那么从3节点超融合集群的角度就应该乘以3

 

按照这个结果,我觉得Hyper-V 2016 + RDS的效率还不错,物理机上的内存消耗都超过了300GB,达到稳态后的每用户平均IOPS3.xx

 

注:VDI不同的桌面分配方式,完整克隆、链接克隆持久化桌面,以及即时克隆/RDS产生的存储压力和IO模型也不同,这一点后面我们还会重点谈。

 

显然在超融合架构下S2D分布式存储软件还远未达到瓶颈,即使你换成全SSD,服务器上的CPU和内存仍然限制着承载的桌面数量。

 

0?wx_fmt=jpeg

本次测试环境,还是上海戴尔客户解决方案中心(CSC)的微软S2DStorage Spaces Direct)集群,部署在4Dell PowerEdge R630服务器上,每个节点71.6TB SATA SSD,网络互连为100Gb/sRoCE

 

如果想跑更多虚拟桌面的Login VSI测试,几乎只能增加服务器。比如我看到一份2000桌面的测试报告中就使用了16个服务器节点,以此类推本次我们自己的测试(如上图4节点S2D集群)也面临同样问题,能否把VDI测试中的存储I/O负载单独剥离出来呢?直到我看到一份来自NetApp的文档。

 

VDI启动风暴、登录阶段存储I/O“抽象化”

 

这一段的内容引用自《NetApp All Flash FASSolution for Persistent Desktops with VMware Horizon View》(tr-4540),可能也是因为跑虚拟机的服务器数量不够多,在该测试报告的结尾处列出了Login VSI测试过程中从Hypervisor层面收集、统计出的存储I/O负载模型

 

0?wx_fmt=png

该模型仅针对Full Clone(完整克隆)VDI部署,下文中相同。如果是Link Clone(链接克隆)I/O特征将有所不同。

 

我们知道,启动风暴(Boot Strom)和虚拟桌面集中登录是VDI应用中最考验存储性能,也是最容易影响用户体验的地方,所以被公认为Login VSI测试中的重点。

 

如上图,在虚拟桌面OS启动过程中存储读操作的比例相当大,其中最主要的一部分是较大数据块(64KB48KB)顺序读,然后是32KB读和4K随机I/O等。

 

NetApp获取这个负载模型的目的是验证更多存储系统,既然N厂授人以渔,我们也拿该方法评估下微软S2D集群。当然大家都不会用到那么多的虚拟机,本身这个测试的目的就是要避开服务器的CPU和内存瓶颈。

 

0?wx_fmt=png

使用Iometer在这里有一点小限制,就是随机/顺序访问的比率精确不到0.1%,所以我们将对应几项的Random I/O比率提高到1%,实际测得的结果估计会比参考模型略低一点吧。

 

N厂使用的测试工具为VDBench,由于我们这次是Windows2016 Hyper-V环境,为方便起见选择了Iometer。而经过简单比较,两种压力工具测出的性能基本一致。

 

当并发启动数千个桌面时存储压力确实很大,不过我看到有同行朋友说Boot Storm可以提前或者分批进行(比如设定在晚上或者周末重启)也是一种办法。另外虚拟机通常不用每天都重启,下班或者不用时可以注销,所以许多时候VDI批量登录(包括Windows或者还有Office等启动)的速度对用户影响更为直接,这大概就是“Login VSI”命名的由来吧:)

 

0?wx_fmt=png

所谓周一上午(Monday morning)就是第一次登录,这里面比例最大的一项是4KB随机I/O,读只占36%了。当然16KB32KBI/O也还不少。

 

0?wx_fmt=png

前面说过虚拟机通常不需要每天重启,所以在周二(Tuesday)及接下来几天登录时,大部分需要读的数据已经在服务器内存里了,这时4KB随机写操作占据了所有存储I/O的一半。

 

下面我们来看看N厂的1,500桌面Login VSI基准测试结果。传统存储和SDS有各自的特点及适用场景,我们本意也是以此作为参考而非比较,所以为了避免不必要的争议,以下统一称之为“参考平台”并尽量淡化品牌型号。

 

Full CloneLink CloneVDI启动和登录中的不同表现

 

0?wx_fmt=png

上面这个表信息量有点大,咱们挑重点的说。首先,启动风暴期间峰值IOPS超过11万,平均每个虚机高达78.5Full Clone桌面的测试完成时间约12分钟。根据我看到的另一份4,000桌面Login VSI测试报告,Link Clone在峰值10IOPS下不到7分钟就可以完成启动。

 

这个背后的原因应该是黄金镜像(Golden Image)的数据更容易被内存缓冲,所以链接克隆在启动风暴中每桌面的IO压力小很多

 

然后再看周一(首次)和周二(后续)登录测试,按照峰值IOPS推算每个虚机平均20.714.6 IOPS(我们的评估也是以此为基准),每虚机的登录时间都在20秒左右。

 

0?wx_fmt=png

 

而根据我看到的另一份Login VSI报告,全闪存阵列在6,000用户测试中,链接克隆桌面在登录阶段产生的峰值IOPS要比完整克隆高出一倍多。估计是磁盘碎片化导致连续数据的分布被打散,同样数据量的访问需要更多次I/O。所以我觉得两种磁盘分配方式应该区别对待,测试成绩不应混在一起做横向对比。

 

全闪存VDI系统容易被忽略的带宽瓶颈

 

下面是我们在微软S2D集群上的测试结果。

 

0?wx_fmt=png

首先看IOPS,模拟启动风暴测试读写总和超过21万,大约是上文中参考系统(Full Clone 1,500桌面)峰值的2倍。可以预见的是,如果只考量这套S2D集群的存储性能,换成Link Clone的话能支持的桌面数量远不只3,000个。

 

模拟第一次登录测试也超过了21IOPS,约为参考系统的7倍;后续登录测试达到16IOPS,而这里列出的还不是我们看到的峰值。

 

0?wx_fmt=png

进一步分析带宽,我们发现启动风暴时达到了9GB/s左右,距离第一篇评测中的S2D集群顺序读最大带宽(见下图)已经相距不远。周二登录也是个典型代表,仅写入带宽部分就超过了2.2GB/s,我们的S2D3副本配置。

 

0?wx_fmt=png

由此我们认为,对于全闪存系统来说,VDI应用的存储瓶颈有可能出现在SSD及其接口带宽上。如果换NVMe Flash那效果自不必说了:)

 

0?wx_fmt=png

注:上表中数字为虚拟机内记录的满负载下延时

 

这个延时结果(毫秒)要是对比现有的Login VSI报告看似不太漂亮,不过别忘了我们模拟的是峰值性能,也就是说实际VDI测试过程中平均延时会低不少

 

0?wx_fmt=png


看看参考系统的平均IOPS和平均延时测试值,我们不难估计出峰值IOPS时对应的延时范围吧?

 

0?wx_fmt=png

 

上图引用自Microsoft Tech Summit 2017大会上分享的一页PPT,对比FC存储和S2D在每月第二周WnidowsUpdate大规模补丁更新时产生的IO压力,从数据中看出S2DIO性能是最好的。其中列出的测试数据是在实际生产环境中获得,供大家参考。


0?wx_fmt=png

 

同时我们拿到更进一步的对比数据(都是SSD+HDD混合配置):在虚拟机在线实时迁移上,S2D超融合因为具备RDMA网卡,所以VM迁移性能是之前的5倍。更重要的是虚拟机启动风暴的IOPS性能和平均延时对比,S2D也是大比例领先。150个桌面,S2D超融合大约10分钟能全部启动完成;而传统存储大约需要40分钟才能全部启动完成160个桌面。S2D超融合的低延时和高IOPS给用户非常好的使用体验。

 

为什么看重“周二上午登录”?

 

我们的测试只进行到周二登录,其实周三到周五也是类似的情况。我理解数据中心的服务器不会随便关机,所以VDI持久桌面用户每周重启一次Windows系统的应该占较大比例。在我们参考的文档中,N厂就是以“周二上午登录”的模拟测试结果,来评估不同存储系统能支持的VDI桌面数量。

 

0?wx_fmt=png


如上面图表,测试结果最高的一款全闪存阵列接近参考系统IOPS8倍,所以在这里被判定能够支持到11,000个虚拟桌面。

 

0?wx_fmt=png

VDI周二登录模拟测试

 

上图是我们的S2D集群,在周二登录的模拟测试中,于Windows Server 2016物理机OS的监控截图,可能还不是最高峰值的时候。

 

如果按照这个176,242 IOPS来计算,已经达到1,500桌面参考系统的8,那么该4节点S2D配置是不是可以支撑12,000虚拟桌面VDI的存储负载呢?

 

0?wx_fmt=png

VDI周一(首次)登录模拟测试

 

由于启动风暴压力可以被规划、分摊在非工作时间,如果是重度VDI用户(每天重启一次的),按照上面这张图中的225,582 IOPS,其首次登录性能应该也能达到10,000以上虚拟桌面的水平吧。

 

计算存储分离的SDS用于较大规模部署

 

0?wx_fmt=png

 

记得我们在第一篇评测中提到过这种非超融合的“Hyper-V集群和SOFS on S2D集群分离部署,应用主机和存储节点通过SMB3协议网络连接,依然可以使用RDMA。”

 

虽然理论上SOFS on S2D会比集群内访问会多一层开销,但我们本次模拟测试中Dell R630服务器的CPU还远未成为瓶颈。而这只是4节点总共28SATA SSD的表现(目前S2D最大支持16节点),软件定义存储的魅力大概就是如此吧:)

 

最后,再次感谢上海戴尔客户解决方案中心Tony Wang对本次测试的大力支持!

这篇关于揭秘VDI存储测试:4节点SDS模拟12000虚拟桌面的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/200717

相关文章

C语言中的浮点数存储详解

《C语言中的浮点数存储详解》:本文主要介绍C语言中的浮点数存储详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、首先明确一个概念2、接下来,讲解C语言中浮点型数存储的规则2.1、可以将上述公式分为两部分来看2.2、问:十进制小数0.5该如何存储?2.3 浮点

MySQL常见的存储引擎和区别说明

《MySQL常见的存储引擎和区别说明》MySQL支持多种存储引擎,如InnoDB、MyISAM、MEMORY、Archive、CSV和Blackhole,每种引擎有其特点和适用场景,选择存储引擎时需根... 目录mysql常见的存储引擎和区别说明1. InnoDB2. MyISAM3. MEMORY4. A

CSS模拟 html 的 title 属性(鼠标悬浮显示提示文字效果)

《CSS模拟html的title属性(鼠标悬浮显示提示文字效果)》:本文主要介绍了如何使用CSS模拟HTML的title属性,通过鼠标悬浮显示提示文字效果,通过设置`.tipBox`和`.tipBox.tipContent`的样式,实现了提示内容的隐藏和显示,详细内容请阅读本文,希望能对你有所帮助... 效

Golang基于内存的键值存储缓存库go-cache

《Golang基于内存的键值存储缓存库go-cache》go-cache是一个内存中的key:valuestore/cache库,适用于单机应用程序,本文主要介绍了Golang基于内存的键值存储缓存库... 目录文档安装方法示例1示例2使用注意点优点缺点go-cache 和 Redis 缓存对比1)功能特性

SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程

《SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程》本文详细介绍了如何在虚拟机和宝塔面板中安装RabbitMQ,并使用Java代码实现消息的发送和接收,通过异步通讯,可以优化... 目录一、RabbitMQ安装二、启动RabbitMQ三、javascript编写Java代码1、引入

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

Redis存储的列表分页和检索的实现方法

《Redis存储的列表分页和检索的实现方法》在Redis中,列表(List)是一种有序的数据结构,通常用于存储一系列元素,由于列表是有序的,可以通过索引来访问元素,因此可以很方便地实现分页和检索功能,... 目录一、Redis 列表的基本操作二、分页实现三、检索实现3.1 方法 1:客户端过滤3.2 方法

C++中使用vector存储并遍历数据的基本步骤

《C++中使用vector存储并遍历数据的基本步骤》C++标准模板库(STL)提供了多种容器类型,包括顺序容器、关联容器、无序关联容器和容器适配器,每种容器都有其特定的用途和特性,:本文主要介绍C... 目录(1)容器及简要描述‌php顺序容器‌‌关联容器‌‌无序关联容器‌(基于哈希表):‌容器适配器‌:(

Mysql虚拟列的使用场景

《Mysql虚拟列的使用场景》MySQL虚拟列是一种在查询时动态生成的特殊列,它不占用存储空间,可以提高查询效率和数据处理便利性,本文给大家介绍Mysql虚拟列的相关知识,感兴趣的朋友一起看看吧... 目录1. 介绍mysql虚拟列1.1 定义和作用1.2 虚拟列与普通列的区别2. MySQL虚拟列的类型2

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB