本月初,阿里云发布了全球首个100万iops的云盘—essd,号称单盘iops比上一代产品提速了50倍之多,是阿里云迄今为止性能最强的企业级块存储服务。
100万iops,看起来很梦幻,aws家ssd云盘标称iops也不过3万2,阿里云的essd真有这么强么?是骡子是马,拉出来测测才知道。
为此,笔者选取了几家主流云厂商的云盘产品,包括aws、azure、腾讯云和华为云等,购买各家速度最快的ssd云盘型号和最低容量(容量和性能程线性关系,所以在容量选择上,分别选取了能发挥云盘最大性能的最低容量,比如100万iops对应需要10tb。),用厂商推荐的标准开源软件fio进行测试,各家最终的成绩如何,跑分来说话:
先上评测结果:
实测阿里云essd云盘的iops高达101万,是第二名华为超高io云硬盘的30多倍,同时不到100us的时延也刷新了ssd云盘的最快记录,在具体业务场景下,可将postgresql数据库的写入性能提升26倍。
5家主流云厂商ssd云盘fio测试 阿里云高出第二名30倍
评测工具:fio ,fio是测试iops的非常好的工具,也是各大云厂商推荐的标准开源软件,用来对存储设备进行压力测试和验证,支持13种不同的i/o引擎,包括:sync,mmap, libaio, posixaio, sg v3, splice, null, network, syslet, guasi, solarisaio 等等。本次测试采用libaio异步i/o引擎,通过加大队列深度、提高并发的方式来压测出各家ssd云盘的最高性能。
阿里云官方宣称essd云盘比上一代ssd云盘iops提升了50倍,吞吐上限提升了14倍高达4000mbps,单路时延缩短80%,为100微秒。
我们申请了一块容量为10tb的essd 云盘,运行fio(4k数据块,高并发随机写)后成绩如下:
从测试结果来看,单盘能达到101万,与官网给出的100万性能基本一致,看来阿里云并非夸了大口,即使在百万iops级别下,时延也能控制在500微秒左右,非常适合oltp实时交易类的业务应用。
同时,我们也进行了单盘单路4k随机写时延测试,essd的表现非常出色,平均时延为97微秒左右,99分位时延为122微秒,整体时延能力控制的比较平稳,对于那些并发度比较低的单线程应用业务,相比阿里云上一代的ssd云盘上的表现,会有一个比较显著的提升。
作为对比,我们在aws的io1云盘上运行fio进行压测,最高iops测试结果如下
iops达到了3.09万,距离官方标称的3.2万差别不大,同时单路时延为577微秒,如下:
再来看看微软的azure,同样也是fio工具压力测试,最高iops只有7642,单路时延却高达2942微秒,很不理想,原因未知。
作为国内后起之秀,腾讯云和华为云的表现也不错,两者实测iops分别为23.3k和33.4k,但在时延上成绩并不出色,分别是848微秒和836微秒。
腾讯云:
华为云:
上述五家云厂商的成绩,我们放到一张图中来对比一下:
不管是iops还是单路时延,阿里云essd单盘性能的100万iops和100微秒,都超越了目前的san/全闪存厂商能够提供的最佳值,iops甚至比第二名的华为云快了30倍,背后的原因究竟是什么?感兴趣的朋友不妨参阅《大话存储》作者冬瓜哥在微信公众号上的文章:《阿里云单盘百万iops的背后》。冬瓜哥认为,25gb/s以太网+luna通信库框架+用户态驱动+append only等是性能提升的关键。
模拟真实业务场景 postgresql数据库写入提速26倍
跑分高还要在业务上实践才能发挥出价值。不难发现,essd云盘主要适合用于io密集型应用,比如oltp下的关系型数据库,或者nosql数据库等。这类应用有个共性的特点就是对存储io的要求比较高,同时对时延又比较敏感,特别是在电商、支付、交易等行业和场景中,实时性要求特别强。
基于这种特性,我们选择postgresql这一款近几年大热的开源数据库,模拟面向企业复杂sql处理的oltp在线事务处理场景,来进行标准化测试,同时我们选取阿里云上一代ssd云盘作为对比参考,看性能有多少提升。
测试用例一:tpc-b模型测试
测试目的:tpc-b 模型(measures throughput in terms of how many transactions per second a system can perform ),主要是为了模拟真实的数据库事务操作场景下,测试一秒可以处理的事务个数。
测试工具:pgbench
测试方法:pgbench -m prepared -n -r -p 1 -c 64 -j 64 -t 600
测试规格:
- ecs.g5.8xlarge 32c/128g + 2tb ssd云盘
- ecs.g5se.8xlarge 32c/128g + 2tb essd云盘
测试结果对比:
同等配置下的性能对比,采用essd云盘之后,整体tps比上一代提升了384%,平均时延降低了74%。
测试用例二:不含索引多表批量写入
测试目的:模拟一个非常典型的测试tp或ap场景,表示了数据实时灌入场景的能力。
测试工具:pgbench
测试方法:pgbench -m prepared -n -r -f ./test.sql -p 5 -c 56 -j 56 -t 300 (unlogged ,不带xlog 锁)
测试规格:
- ecs.g5.8xlarge 32核128g内存,ssd云盘为2tb
ecs.g5se.8xlarge 存储增强型32核128g内存,essd云盘为2tb
测试结果对比:
相同配置下的实例和云盘,从原来的每秒插入20w 行记录,提升到每秒插入523w 行记录,性能提升高达2660%。
从postgresql下的2个典型业务场景测试的结果来看,阿里云的essd云盘的确能给实际业务带来数倍乃至数十倍的性能提升。
价格方面,阿里云essd云盘保持了与原来ssd云盘相同的价格水平,依旧是每gb月使用成本1元钱(中国站大陆地域定价)。这样定价方式略显“激进”,但从历次降价来看,阿里云的普惠科技理念还是诚意满满的,希望国内其他云厂商也能跟进,让我们享受到更大的实惠。