参考:https://help.aliyun.com/document_detail/25382.html?spm=5176.ecsbuyv3.system-disk.1.55033675vtea0P
虚拟机类型参考
虚拟磁盘参考
HDD存储池
- 单盘容量范围(GiB):20~32768 GiB
- 最大IOPS:5000
- 最大吞吐量(MB/s):140
- 单盘IOPS性能计算公式:min{1800+8*容量, 5000}
- 单盘吞吐量性能计算公式(MB/s):min{100+0.15*容量, 140}
-
应用场景:
- 开发与测试业务
- 系统盘
SSD存储池
- 单盘容量范围(GiB):20~32768 GiB
- 最大IOPS:25000
- 最大吞吐量(MB/s):300
- 单盘IOPS性能计算公式:min{1800+30*容量, 25000}
- 单盘吞吐量性能计算公式(MB/s):min{120+0.5*容量, 300}
-
应用场景:
- I/O密集型应用
- 中小型关系数据库
- NoSQL数据库
SSD云盘的性能因数据块大小而异,数据块越小,吞吐量越小,IOPS越高,如下表所示。
单盘性能计算公式说明:
- 以单块SSD云盘最大IOPS计算公式为例说明:起步1800,每GiB增加30,上限为25000。
- 以单块SSD云盘最大吞吐量计算公式为例说明:起步120 MB/s,每GiB增加0.5 MB/s,上限为300 MB/s。
测试块存储性能:Linux实例和Windows实例都推荐使用FIO工具测试块存储性能。
参考:https://help.aliyun.com/document_detail/147897.htm?spm=a2c4g.11186623.0.0.7b42e2bd2z8Dc4#task-2363356
操作步骤
- 查询块存储设备是否已经4KiB对齐。
sudo fdisk -lu
返回的结果中,Start值能被8整除即是4KiB对齐。否则,请完成4KiB对齐后再继续性能测试。
Device Boot Start End Sectors Size Id Type
/dev/vda1 * 2048 83886046 83883999 40G 83 Linux
*依次运行以下命令安装libaio和FIO。
sudo yum install libaio -y
sudo yum install libaio-devel -y
sudo yum install fio -y
云盘性能测试命令
说明:本示例中,使用的设备名为/dev/your_device,请您根据实际情况替换。例如需要测试的云盘为/dev/vdb,则将以下示例命令中的/dev/your_device替换为/dev/vdb。
- 随机写IOPS:
fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=Rand_Write_Testing
- 随机读IOPS:
fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=Rand_Read_Testing
- 顺序写吞吐量:
fio -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=Write_PPS_Testing
- 顺序读吞吐量:
fio -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=Read_PPS_Testing
- 随机写时延:
fio -direct=1 -iodepth=1 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -group_reporting -filename=/dev/your_device -name=Rand_Write_Latency_Testing
- 随机读时延:
fio -direct=1 -iodepth=1 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -group_reporting -filename=/dev/your_device -name=Rand_Read_Latency_Testing
本地盘性能测试命令
以下测试命令适用于NVMe SSD本地盘和SATA HDD本地盘。
说明:本示例中,使用的设备名为/dev/your_device,请您根据实际情况替换。例如需要测试的本地盘为/dev/vdb,则将以下示例命令中的/dev/your_device替换为/dev/vdb。
- 随机写IOPS:
fio -direct=1 -iodepth=32 -rw=randwrite -ioengine=libaio -bs=4k -numjobs=4 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
- 随机读IOPS:
fio -direct=1 -iodepth=32 -rw=randread -ioengine=libaio -bs=4k -numjobs=4 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
- 顺序写吞吐量:
fio -direct=1 -iodepth=128 -rw=write -ioengine=libaio -bs=128k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
- 顺序读吞吐量:
fio -direct=1 -iodepth=128 -rw=read -ioengine=libaio -bs=128k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
- 随机写延迟:
fio -direct=1 -iodepth=1 -rw=randwrite -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
- 随机读延迟:
fio -direct=1 -iodepth=1 -rw=randread -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
- 顺序写延迟:
fio -direct=1 -iodepth=1 -rw=write -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
- 顺序读延迟:
fio -direct=1 -iodepth=1 -rw=read -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
FIO参数取值说明
下表以测试云盘随机写IOPS(randwrite)的命令为例,说明各种参数的含义。