AWS在reinvent2020中新推出了EBS gp3的固态硬盘类型。本文根据查阅资料与实际评测来分析新版gp3与gp2的区别。
https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ebs-volume-types.html
gp2的iops根据预置容量来设定,如果需要较大的io(例如数据库以及区块链全节点)则需要提高存储容量来获得性能的提升。
假设如果放置100GB的硬盘,在gp2的场景下除非使用io优化实例,否则无法支持高性能,只能使用临时突增到3000iops的burst时间内使用高io。如果顶级配置下最大吞吐量256MB
gp3将iops,吞吐量,以及硬盘大小三个维度隔离开,可以自由指定iops, throuput以及硬盘大小,没有burst,基准线价格比gp2便宜20%。基准线吞吐量128MB,顶级配置最大吞吐1000MB。预置 IOPS 与预置卷大小的最大比率为有个限制, 500 IOPS / GiB,只需要硬盘超过32GB即可配置顶级iops(16000)与顶级吞吐1000M(4000iops下250kib块)。
gp2吞吐量计算公式:IOPS per GiB is 3
Throughput in MiB/s = ((Volume size in GiB) × (IOPS per GiB) × (I/O size in KiB))
而gp3的吞吐量计算非常简单,就是iops * 单次io的size。
结论
总结来看,gp3因为基准线iops非常高,适合持续高频的小数据大io。在未达到125MB瓶颈时,性价比远超gp2,而且超过125MB瓶颈后,使用节省下来的20%来购置throughput上限,买到gp2的性能,也会比gp2便宜5%以上。具体便宜的幅度如下所示:
https://cloudwiry.com/ebs-gp3-vs-gp2-pricing-comparison/
如果数据库需要高频小量的io,使用gp3非常合适,但是如果数据库需要持续向外传送很大的数据(例如传送体积比较大的生交易),那么throuput的上限就会挤占iops,导致超时或者无法发挥iops的作用。
从各个场景来看,选择gp3都是优于gp2的。
性能指标
以下是MetaSV项目中的某一个数据库在切换gp3前后的性能指标对比。
使用原数据库观察到出现大区块(高数据库读写场景)之后的数据库的各项指标:
可以看出,该数据库的各项指标没有超过gp3的基准线,throughput峰值10mb/s,iops峰值600,可以完美使用gp3的默认配置来配置数据库实例。
使用新数据库第一次处理连续大区块时的指标如下:
可以看出指标有了很大的提升,3000 iops基本全部充分利用,并且throuput大约在70MB/s左右,未达到峰值。也就是说如果出现连续的超级大块,gp2很快会耗尽burst iops,而gp3可以持续稳定地进行输出。