20天持续压测,告诉你云存储性能哪家更强?

上个月,笔者对国内两大云厂商(阿里云和腾讯云)的云服务器、云数据库和云存储三种产品作了性能评测,算是对两家的部分计算和存储产品(数据库也可视做一种存储形式)作了简要对比。虽然评测文章在 V2EX 等社区的反馈还不错,但确实还存在很多缺失。除了很差评测的售后服务等指标外,还缺乏了对其余使用更为广泛的云存储产品。html

所以,笔者近期抽空完善《云计算产品性能测试指南》,新加入了对两种云存储产品(云盘)的性能和价格对比。本次测试总计耗时 20 多天,测试的强度和时间都很是充分,本文将记录这次测试的过程和对比结果。git

哪两种云盘?

云存储类别下,目前两大云产商提供了如下产品:github

  • 块存储(阿里云、腾讯云)数据库

  • 文件存储(阿里云)服务器

  • 对象存储(阿里云、腾讯云)网络

  • 内容分发网络(阿里云、腾讯云)分布式

  • 表格存储(阿里云)ide

  • 归档存储(阿里云)工具

能够看出,阿里云的云存储产品类别更为丰富,云计算先行者的优点突出。性能

在上述六种产品中,笔者上次已经对比过对象存储。内容分发网络(CDN)测试起来花的时间又特别长,进行有意义的比较须要的数据特别大,并且目前没找到自动化的工具,所以此次不考虑测试 CDN(欢迎推荐能够自动化测试 CDN 性能的工具)。

那么剩下的两家均提供的产品,就是块存储(Block Storage)了。块存储,简单来讲就是提供了块设备存储的接口,一个硬盘就是一个块设备。在云产商提供的产品中,所谓的普通云盘、高效云盘、SSD 云盘,都是块存储设备。

若是你对存储类型不太熟悉,建议阅读如下文章:

上一篇评测文章中,其实也对普通云盘的性能进行了对比,但包含在云服务器性能测试中。对于选择普通云盘作对比,有的读者也提出了异议。

V2EX 读者评论

确实,企业用户通常不会用服务器的本地存储保持核心数据,由于本地磁盘的数据迁移困难,而自建 raid5 磁盘阵列的数据持久性页不高,所以大多采用 SSD 云盘或高效云盘等分布式存储成为主流选择。一线云厂商比拼的也主要是分布式块存储,如 AWS 的 EBS 就是一种分布式块存储设备。

为了较为完整地比较两大厂商的块存储产品,笔者近期对两家的高效云盘和 SSD 云盘进行了压测,算是对上一篇的补充。期间犯了很多错,多花了很多冤枉钱,不过总算最终得出了比较可信、直观的数据。

厂商预期的性能

在介绍测试详情以前,先来看一看厂商对自家产品的描述。

在各自的产品介绍页面(腾讯云阿里云),均给出了详细的性能指标及具体的计算公式。

  • 阿里云:

    • 高效云盘

      • IOPS:min(1000 + 6 * 容量, 3000)

      • 吞吐量:min(50 + size * 0.1, 80)

      • 访问时延:1-3ms

    • SSD 云盘

      • IOPS:min(30 * 容量, 20000)

      • 吞吐量:min(50 + size * 0.5, 256)

      • 访问时延:1-3ms

  • 腾讯云:

    • 高效云盘

      • IOPS:min(1500 + 容量 * 8, 4500)

      • 吞吐量:min(75 + size * 0.147, 130)

      • 访问时延:< 3ms

    • SSD 云盘

      • IOPS:min(容量 * 24, 2400)

      • 吞吐量:min(150 + (容量 - 250) * 0.147, 260)

      • 访问时延:< 3ms

其中:

  • IOPS:每秒读写(I/O)操做的次数,数值越高越好。

  • 吞吐量:通常用MBPS,每秒传输的MB字节数来衡量,下文用英文 Throughput 替代。

  • 访问时延:访问时延,完成一个 I/O 请求所需的时间,下文用英文 Latency 替代。

上述三项指标中,两家只给出了 Latency 的数值范围。不过,这个能够说是最重要的性能指标。其余指标不变的状况下,Latency 为 1ms 的性能是 3ms 的 3 倍。

另外,从给出的计算公式中,没法直观地比较 IOPS、TP。所以,笔者用绘制了云盘性能与容量(volume)的关系图。

<img src="http://ww1.sinaimg.cn/large/0... alt="两大产生云硬盘预期性能对比">

上图中,红色虚线为腾讯云云盘,蓝色实线为阿里云云盘

因为腾讯云的云盘最大容量为 4000GB,而阿里云为 32678GB,可是为了方便查看,只绘制出了容量在 [0, 4000] 范围内的性能数据。另外,在图中以 Hybrid 代称高效云盘,下文同。

从上图来看:

  • 腾讯云高效云盘的预期性能遥遥领先于阿里云,尤为是最低吞吐量都比阿里云的峰值要高;

  • 可是在 SSD 云盘方面,阿里云的预期性能优点比较大,只有在容量 1TB 以上时才低于对手

不过,以上只是厂商预期的性能数据,不表明产品的真实性能就是如此。产品实际表现如何,与预期性能差距有多大,还须要咱们亲自测试、使用才可得知。

测试准备工做

在开始测试以前,笔者在两家产商分别购买了测试服务器及云盘。

测试所使用的虚拟机配置为:

  • CPU:4核 Intel Xeon

  • 内存:4GB DDR3

  • 操做系统:Ubuntu 14.04 64位。

选取的测试云盘以下:

  • 高效云盘:50GB、400GB

  • SSD 云盘:250GB、500GB

测试阿里云的 500GB SSD 云盘时碰到了两个大杯具,首先是余额不足致使测试程序中断,一切重来。。第二个杯具和 SSD 云盘的性能有关,具体下文中会提到。。。

下文中,笔者不会具体介绍测试步骤,只说明执行了哪些测试及测试结果,具体步骤请看此前在 Github 上分享的项目:CloudTesting/test_cbs

执行哪些测试

通常来讲,块存储性能主要看 IOPS、Throughput 和 Latency三个指标,厂商也大多提供这三个指标的峰值做为购买参考。

上一篇评测中,笔者就是使用 fio 对普通云盘进行测试,对比了三个指标的差别。不过如今回过头来看,测试的压力还不够大,使用的块大小、队列深度还不够全,虽然最终结果差别或许并不会太大

所以,此次针对高效云盘(HDD+SSD)和 SSD 云盘的测试,笔者将根据 SNIA 发布的企业级SSD评测规范(Solid State Storage Performance Test Specification Enterprise v1.1)进行,如下简称该规范为 PTS 。

SNIA 是存储网络行业协会(Storage Networking Industry Association,SNIA)的简称,这是一个由厂商和大学成立的行业组织,致力于开发和推广存储系统标准。

除了 IOPS、Throughput 和 Latency 三项基础测试外,PTS 还包含了如下五种测试:

  • Write Saturation (WSAT):持续应用工做负载,测试性能随着时间如何变化。

  • Demand Intensity Response Time Histograms (DIRTH)

  • Cross Stimulus Recovery (XSR)

  • Host Idle Recovery (HIR):测试宿主机闲置时间对性能恢复的影响。

  • Enterprise Composite Workload (ECW)

SNIA 官方有提供测试服务,可是收费,并且也不适用于云存储设备。

所以,笔者选择了一家云计算公司根据 PTS 规范实现的自动化测试库(代码地址:https://github.com/cloudharmony/block-storage),其中包含了 IOPS、TP、Latency、WSAT 和 HIR 五类测试,其余的没有实现。

SSD 云盘的测试中没有 WSAT 和 HIR 两项,具体缘由后面会提到。

注意,PTS 测试中全部 fio 命令的队列深度均为 64。具体测试细节请看官方提供的 PDF 文件。

PTS 测试耗时长

根据 PTS 规范,每项 SSD 性能测试须要通过一、净化、二、准备工做负载、三、进入稳态、四、测试等四个环节,所以整个测试过程用时很是长,并且云盘容量越大,耗时越长。笔者在测试时,平均每块云盘大概花了 2 天的时间。因为各类缘由,此次至少买了 10 块云盘作测试,所以也就有了标题中“ 20 天持续压测”的说法。**

以腾讯云 500G SSD 云盘的测试时间为例说明:

<img src="http://ww4.sinaimg.cn/large/0... alt="测试时长说明">

这次测试采用的是第三方提供的自动化测试库,整个步骤都是可重复的,对测试数据有疑问的同窗可自行验证。在这里说明下测试所需时间,是为了提示你们启动测试程序后该干吗就干吗,同时保证帐户中有充足的余额(尤为是后者)

在介绍测试结果以前,说明一下对两家厂商测试过程的差别(云盘均为直接格式化,未分区)。

  • 腾讯云因为不支持单独购买按量付费的服务器,所以开了 4 台 VM,每台配一种测试云盘。

  • 阿里云支持单独按量购买云盘,所以只开了 2 台 VM,每台挂载 2 块云盘,测试时针对每一个云盘单独启动一个测试程序。

性能测试数据

通过漫长的时间,上周末终于完成了对 6 块云盘的 IOPS、TP、Latency、WSAT、HIR 五项测试。

测试数据大约 190MB,下载地址为:https://pan.baidu.com/s/1i5BJZCD,提取码:e2xd。其中,文件夹的命名规律为:厂商_云盘类型_容量。除了 aliyun_ssd_500xaliyun_ssd_250x 外,每一个文件夹下均有一个 report.pdf 文件,为测试程序自动生成,里面包含了测试结果、数据和图表。

另外,笔者用 Highcharts 制做了一些可交互图表,可用来查看汇总后的各项数据。地址以下:http://www.codingpy.com/specials/cbs_test/

阿里云的一个大坑

笔者在本文撰写快要结束时,看到阿里云 SSD 云盘的性能比预期的差不少,回头去调查缘由。这才猛然发现阿里云 SSD云盘必须搭配 I/O 优化实例才能给发挥最大性能。当时就想破口大骂。。。

踩过这个坑的朋友不知道有多少?

阿里云 SSD云盘必须搭配 I/O 优化实例

所以,以前的 SSD 云盘数据(即 aliyun_ssd_500xaliyun_ssd_250x 两个文件夹下的数据)就不具有可比性了。笔者只好重开 ECS 进行测试,为了节约时间,SSD 云盘将只测试 IOPS、Throughput、Latency 这三个基础指标

本文先对比高效云盘,从新测试完后,过几日再与你们分享具体的 SSD 云盘性能对比。

高效云盘性能对比

下面咱们来看看高效云盘的测试性能,与产商预期的性能值之间是否存在差别,差别又有多大。

先来回顾一下厂商预期的性能,请看下图左边部分。

<img src="http://ww1.sinaimg.cn/large/0... alt="两大产生云硬盘预期性能对比">

上图显示,腾讯云高效云盘的预期性能遥遥领先于阿里云,其中最低的吞吐量都比阿里云的峰值要高。

可是真实测试数据如何?请看下面的测试结果。

基础指标测试

首先是 50GB 容量的 IOPS、Throughput、Latency 三项指标的数据(可点击图片查看大图,或查看交互式图表):

<img src="http://ww4.sinaimg.cn/large/0... alt=""> <img src="http://ww2.sinaimg.cn/large/0... alt="">
<img src="http://ww3.sinaimg.cn/large/0... alt="">

400GB 容量的性能对比(可点击图片查看大图,或查看交互式图表):

<img src="http://ww4.sinaimg.cn/large/0... alt=""> <img src="http://ww3.sinaimg.cn/large/0... alt="">
<img src="http://ww3.sinaimg.cn/large/0... alt="">

图注:RW Ratio 指的是 I/O 操做中的读写比例,0/100 表示顺序写, 100/0 表示顺序读。

从上述图表对比来看, 能够得出结论1:

在 50GB、400GB 两个容量级别上,腾讯云高效云盘的各项性能指标表现均优于阿里云,并且优点也比较明显

接下来,咱们比较一下测试值与预期值之间的差别。因为预期值都是理论状况下的峰值,咱们从测试数据中提取出各自的峰值。

<img src="http://ww2.sinaimg.cn/large/0... alt="高效云盘性能对比">

看完上面的数据,你至少会有这两个疑惑:

  1. 腾讯云的测试峰值怎么接近预期值的两倍?

  2. 阿里云 400GB 高效云盘的延迟怎么那么高,离预期的 1-3ms 差距很大?是否是数据有误?

第一个疑惑,腾讯云两个容量的测试峰值均为预期值的两倍。产品首页中没有直接说明,只能去翻产品文档,最终在 CBS 使用约束页面中找到了一段解释:

产品文档中承诺的IO性能,如1TB的SSD云硬盘,随机IOPS能达到24000IOPS。含义是读写可同时达到24000IOPS,4KB/8KB的 IO均可作到,16KB的IO大小,则没法作到24000(因为吞吐已经达到了260MB/s的限制)。

简单来讲,就是腾讯云高效云盘的读写操做可同时达到预期性能峰值(数据块 16KB 如下)。这样,腾讯云的数据就能够解释的通了。

笔者选择的测试峰值是数据块 512b、50/50 读写比例下的数据,这时读写均达到了预期的 IOPS 峰值,总 IOPS 接近预期峰值的 2 倍。而顺序读、顺序写的值都接近预期的峰值。

阿里云方面,读写没法同时达到预期性能峰值

第二个疑惑,阿里云 50GB 高效云盘的 Latency 在正常范围,怎么 400GB 的就超标了?笔者一开始还觉得数据错了,为此重开了虚拟机,用 ioping 作了简单的比对。结果以下图:

<img src="http://ww4.sinaimg.cn/large/0... alt="高效云盘Latency对比">

从新测试以后,笔者确信了此前自动测试库跑出的数据应该是没问题的。至于高时延背后的缘由,多是“邻居”比较多、IO 操做比较活跃吧。 Latency 的自动测试大概跑了 4 个多小时,从新测试时性能也没有变化,阿里云这个算不算违反了服务协议(SLA)呢?

解决上面的疑惑以后, 咱们能够得出如下结论:

  • 结论2:腾讯云达到了预期的性能;阿里云部分没有达到,400GB 容量的时延太高。

  • 结论3:腾讯云高效云盘的时延在 1ms 如下,IOPS、吞吐量的优点更加突出。

WSAT、HIR

下面来看 WSAT 和 HIR 测试的状况。上面提到,WSAT测试是指在持续应用工做负载,测试性能随着时间如何变化。

WSAT 自动测试最终得出的是一段时间内,IOPS 的平均值,结果以下:


<img src="
http://ww2.sinaimg.cn/large/0... alt="WSAT 测试">

上述数据,与两家厂商预期的峰值很是接近,说明两家的高效云盘可以长时间达到 IOPS 性能峰值。可是这里看不出性能如何随时间变化,必须从生成的 PDF 中查找,笔者截图以下:

<img src="http://ww4.sinaimg.cn/large/0... alt="四种云盘 WSAT 测试">

从上述 4 张趋势图来看,能够得出结论4:

两家高效云盘的 IOPS 表现均比较稳定,几乎呈一条直线,只有阿里云的 400GB 云盘有些略微波动

最后来比较 HIR 测试的结果。HIR 主要测试宿主机闲置时间对性能恢复的影响。

<img src="http://ww1.sinaimg.cn/large/0... alt="四种云盘 HIR 测试">

从上述 4 张趋势图来看,能够得出结论5:

容量越大,彷佛闲置时间对性能恢复的影响越明显;阿里云 400GB 高效云盘的性能波动受闲置时间影响较明显。

综合上述五项测试的结果,能够认为腾讯云高效云盘的综合性能应该是阿里云高效云盘的2倍以上(结论6)。

加入价格因素

延续上一篇的风格,在比较完性能指标以后, 咱们再加入价格因素。

<img src="http://ww4.sinaimg.cn/large/0... alt="高效云盘价格对比">

上图中,腾讯云高效云盘按量计费的价格,为根据官方产品页面给出的订价计算,包年包月价格为单独购买云盘时系统显示价格;阿里云高效云盘的价格根据其给出的费用规则计算。这里说明一点,腾讯云在单独购买云盘时,还只有包年包月这种模式,不够灵活。

从上图对比来看:

  • 结论7:腾讯云和阿里云的包年包月价格相同;

  • 结论8:腾讯云的按量计费价格比阿里云贵,约为 1.8 倍;

  • 结论9:阿里云按量计费与包年包月的价格相差很小。

通常来讲,数据盘中存储的多为持久性数据,以按量付费方式购买的企业用户应该并很少。因此,在包年包月模式下,腾讯云高效云盘的性价比很是高

不过因为阿里云两种模式之间价格差别小,使得用户在云盘使用方式上更加灵活。在笔者看来,按量计费和包年包月的核心并不在如何收费,而在于云计算产品的使用方式。价格差会使用户倾向于以某一种方式使用产品,而不是根据有业务状况自由选择。

结语

上文中,咱们分别从 IOPS、Throughput、Latency、WSAT、HIR 五项测试指标,对腾讯云、阿里云的 50GB、400GB 容量的高效云盘进行了性能对比。

通过对测试数据进行分析,笔者主要得出了如下结论:

  1. 腾讯云高效云盘的各项基础性能指标均优于阿里云,且优点明显;

  2. 腾讯云高效云盘达到了预期的性能,而阿里云部分云盘没有达到,400GB 容量的时延太高;

  3. 阿里云大容量高效云盘的 IOPS 性能受宿主机闲置影响较大;

  4. 包年包月模式下,腾讯云高效云盘的性价比很是高;

  5. 阿里云高效云盘不一样计费模式下费用差异不大,选择时灵活性更高。

若是你正在考虑采购这两家产商的高效云盘,但愿本文对你有帮助。若是你考虑的厂商不是腾讯云或阿里云,能够参考本文中使用的自动测试库进行全面测试。不过别忘了,要想得到最大的云盘性能,则必须购买相应厂商的云服务器,不然云应用的性能反而可能降低。关于如何测试云服务器的性能,请看笔者上一篇评测

下一篇笔者将对比腾讯云和阿里云 SSD 云盘的性能。

参考连接

相关文章
相关标签/搜索