本月初,阿里云发布了全球首个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元钱(中国站大陆地域定价)。这样定价方式略显“激进”,但从历次降价来看,阿里云的普惠科技理念还是诚意满满的,希望国内其他云厂商也能跟进,让我们享受到更大的实惠。