性能大比拼-真实世界工作负载vs实验室综合工作负载

验证存储系统性能是否强大通常会选择各种测试跑分看结果,然而对比性能就可以发现真实世界的工作负载与实验室综合工作负载差别极大,通过后者直接应用显然不太现实。而真实世界的工作负载则能够应用于优化,设计,验证应用软件,也可以针对真实的应用需求选择适合类别的SSD和数量。

SNIA固态存储技术小组主席Eden Kim(右一)和Trust-tek公司技术支持经理蒋伸亿

2018年12月12日,在中国存储与数据峰会,存储开发者论坛上,SNIA固态存储技术小组主席Eden Kim和Trust-tek公司技术支持经理蒋伸亿一起为大家带来《性能对比-真实世界工作负载vs实验室综合工作负载》。

以下为演讲实录:

存储系统遭遇到很大的压力时,会出现拥堵问题,不管是云计算应用还是云部署到设备上的应用,终端硬件本身的性能压力。因此前几位演讲人他们讲了很多的方法,通过很多的算法和架构的改变,软件的不同部署,来去解决这个网络拥堵的问题。

但我们介绍的主题是回归到基本原理,他们在解决拥堵问题的时候,最基本的出发点就是存储数据量的移动,它的真实负载到底是怎么样的,它的块大小和队列深度都是实时在变化的,所以如果能先从基本方向去了解它的工作负载内容,对后续解决拥堵的问题,肯定是更有效率的,因此我们今天会针对如何去分析真实世界工作负载,与实验室负载有什么样性能的差异向大家分享我们研究的结果。

第一个重点是所有现在的数据中心或云存储的性能,他跟真实的工作负载具有很大的相关性,这些所有的系统架构上为了要优化和设计阶段再验证的阶段需要考虑真实负载对系统的影响,以及对它未来采购SSD,如果得到性价比最高的SSD,应用在各种不同的应用服务上是很重要的事情。

所有的这些真实世界工作负载都可以在不同服务器上抓取,这些负载会按照不同硬件配置有不同的行为,所以性能测试真的跟真实负载有很直接的关系,现在最重要的就是真实工作负载会对你的系统造成很大的性能缺陷。

因此透过所有的真实工作负载,我们可以去了解,在长时间提供服务的整体情况下,你的实时负载变化,你可以透过这样的工作负载的内容去做一些东西,比如双十一的时候,可能流量会很大,如果去分解流量,或者说过年过节的时候,很多网络拥堵的问题,如何去解决?

另外进行软件的优化或者互联的测试,甚至对于一些实际遭遇的状况,我们都可以透过真实工作负载找到它的蛛丝马迹,来进行错误事项分析,最后可能对于服务器或者存储设备的合格验证也会用负载当做一个基础,通过这个基础来考验存储本身的性能。

这是一张很大的架构图,现在存储系统架构中,云的一些应用程序、进程、存储架构可能走不通的界面,像是fabric,或者是ethenet或者是infinband,所有的数据你可以想象终端用户在网页挑选的任何一个按纽,这个读写的请求经过以太网进入到云服务里,如何进入到本地,网络拥堵就是同时有太多人在本地敲下了读写的需求。

所以这个时候流量会非常大,这些流量可能在不同的时间点,在架构里每一个不同的硬件架构或者软件的开发层上都有不同的负载行为,所以我们的工具要能够去在不同的内容,按照每一个不同的系统开发商提供的不同解决方案,在不同的内容抓取它的负载,透过真实的工作负载,就可以对这一个拥堵问题去提供一些好的解决方案,甚至是设计一些很好的算法,来解决这些问题。

我们来看看真实的负载和随机生成的负载有多大的差距。

这是一家零售商网站的服务器,下面是一个windows系统,我们在IO上看它负载,可以看到它跟我们实验室的负载不一样,这个用的是不同系统,真正所有的主要特性在这里贡献了6%的IO行为。在24小时的负载里面,所有的IO在不断的变化,在凌晨的时间有一个备份动作,所以有一个很高的IO出来,其余的部分你可以想象在这个不同的离散时间点里面,有很多不同的用户登陆服务器做读写访问,所以通过IO我们可以理解真实负载跟实验室负载有很大的差别,我们不能单纯的在意4K或者64K和大流量148K做性能和流量的检测。

另一个,我们也做了另一个真实负载测试,这是一个GPS定位系统,在这个案例里,我们有9个IO流,这9个贡献了86%的IO,在24小时里,QD的深度变化是在9到368,这个真实负载跟刚刚前面看到的负载变异性比较大,它的IOPS或者深度放的比较大,这个级别是比较平缓的,所以你会感觉到很强烈,在不同的系统不同的应用中负载长的完全不一样。

工作负载的IO可以给我们很多的信息,以这个图表来看,它可以给你这些进程任何一个时间的IOPS和IO的总量和TRIMs,现在负载做TRIMs存储抹除的动作,会有很大的影响,会造成流量上的使用,这个使用会导致正常业务的一些IO在这个时间点的时延会增加,所以在这边抹除存储空间的时候,会有很大的吞吐量,但是相对来讲TRIM最大的时延会有14秒,所以可能会造成很大的影响,所以对负载应用很关心这样的行为,所以通过负载和IOmap地图可以获得很多在真正影响性能上的指标,通过这些指标可以提供更多的想法,让设计验证或者优化都可以有很好的一些主意和方向去做这些事情解决问题。

所以后面我们针对一些负载来对两个指标,一个IOPS,一个是时延,通过不同的测试,比如PM(持久性内存)或者NVMe,我们用真实的负载和综合负载,以及透过加压的方式,去提高深度来看看每一种不同的存储介质在面对不同的负载情况下,它的性能之间是不是有很大的差异,是不是我们想象的好的盘不管怎么样都有很好的性能,坏的盘会不会是性能不好,这个部分我们请Eden Kim介绍一下。

在柱状图中,黄色代表随机负载,它的块大小是8K,读写比例是读65写35,蓝色是我们真实世界刚刚看到的块IO,我们在不同两个条件下来看它的表现。各位可能对这个结果感兴趣,因为大家负责的工作就是设计,我们针对的测试对象是NVMe,还有AIC卡的,也有U.2的接口,还有M.2接口,我们有三个不同的颜色,黄色是合成的负载,第二部分真实负载,第三个是我们对真实的负载进行加压以后,加压队列深度五十倍以后看到的结果,不同的盘里面,蓝色的部分都可以提高很多,第一个AIC即使加压了,它的IOP还不是很高,所以你可以通过这样的测试得到很有效率的结果。

从NVMe角度来讲,我们的测试主要呈现支持负载里面,因为负载本身它的压力是比较轻的,所以我们现在透过QoS增加,看看平均的时延和QoS和IOPS的反应,IPOS随着加压可以呈现线性的增加,在时延QoS也是合理性的增加,这个盘可以让设计者很理解我的盘面对真实负载,所有的表现都符合,不管压力加大与否我可以有很好的稳定输出表现。

你可以看到在负载的情况下,它的性能是第一名,然后是ABC,分别是2,3,4名,当我们应用的是真实世界负载以后,你会看到这个排序是改变的,排序的表现已经不一样了。你也可以通过某种方式来看时延和QoS表现,加压在五倍的时候可以线性增加,但是加压五到十倍,因为可能达到的性能上的饱和,所以它的IOPS降下来了,但是它的扩展性也增加了,是一个很大的瓶颈点。

最后我们简单的总结一下,真实世界负载,不管在数据中心还是云存储的性能,在设计或者验证上都是很关键的,通过IO流和压力的变化,是对存储系统来讲有很大的相关性,通过真实世界负载来看看性能表现是很重要的,服务器或者在软件的层面,在存储和软件都应该通过真实世界负载合作,来配合做一些优化,大家如果感兴趣负载,可以看这个免费工具——www.TestMyWorkload.com来测试一下你的系统工作负载。