今天做一个测评:阿里云磁盘读写速率测评
Posted 看见月亮的人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了今天做一个测评:阿里云磁盘读写速率测评相关的知识,希望对你有一定的参考价值。
1. 云盘性能参数对比文档
https://help.aliyun.com/document_detail/25382.html?spm=5176.11065259.1996646101.searchclickresult.5c7735fftSM8We
2. 换算公式
例如磁盘是500G高效云盘,计算公式是min{100+0.15*500, 140},换算取值是140MB/s。
注:
- 此处的140 含义为最大吞吐量为:140MB/S的值为:MB(大B)
- 此处140MB/S的值为:MB(大B)
- 当此磁盘容量达到上限后,吞吐量与磁盘容量无关
- 最大吞吐量的含义为:磁盘读写可同时使用140M/S
- 以上计算公式含义为:min{m,n} ,求m和n当中的最小值 也就是叫你比较m和n的大小,然后写出较小的那个
3. 测试命令安装
- 查询块存储设备是否已经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
- 切换路径。
cd /opt/tmp
- 运行性能测试命令,具体的命令请参见下文。
4. 高效云盘性能测试命令
- 随机写IOPS:
fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/opt/tmp/iotest -name=Rand_Write_Testing
- 随机读IOPS:
fio -direct=1 -iodepth=32 -rw=randread -ioengine=libaio -bs=4k -numjobs=4 -time_based=1 -runtime=100000 -group_reporting -filename=/opt/tmp/iotest -name=test
- 顺序写吞吐量(写带宽):
fio -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/opt/tmp/iotest -name=Write_PPS_Testing
顺序读吞吐量(读带宽):
fio -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/opt/tmp/iotest -name=Read_PPS_Testing
- 随机写时延:
fio -direct=1 -iodepth=1 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -group_reporting -filename=/opt/tmp/iotest -name=Rand_Write_Latency_Testing
- 随机读时延:
fio -direct=1 -iodepth=1 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -group_reporting -filename=/opt/tmp/iotest -name=Rand_Read_Latency_Testing
5. FIO参数取值说明
下表以测试云盘随机写IOPS(randwrite)的命令为例,说明各种参数的含义。
参数 说明
- -direct=1: 表示测试时忽略I/O缓存,数据直写。
- -iodepth=128: 表示使用异步I/O(AIO)时,同时发出I/O数的上限为128。
- -rw=randwrite: 表示测试时的读写策略为随机写(random writes)。其它测试可以设置为:
randread:(随机读random reads)
read(顺序读sequential reads)
write(顺序写sequential writes)
randrw(混合随机读写mixed random reads and writes)
- -ioengine=libaio: 表示测试方式为libaio(Linux AIO,异步I/O)。应用程序使用I/O通常有两种方式:
同步:同步的I/O一次只能发出一个I/O请求,等待内核完成才返回。这样对于单个线程iodepth总是小于1,但是可以透过多个线程并发执行来解决。通常会用16~32根线程同时工作将iodepth塞满。
异步:异步的I/O通常使用libaio这样的方式一次提交一批I/O请求,然后等待一批的完成,减少交互的次数,会更有效率。
- -bs=4k:表示单次I/O的块文件大小为4KiB。默认值也是4KiB。
测试IOPS时,建议将bs设置为一个较小的值,如4k。
测试吞吐量时,建议将bs设置为一个较大的值,如1024k。
- -size=1G: 表示测试文件大小为1GiB。
- -numjobs=1: 表示测试线程数为1。
- -runtime=1000: 表示测试时间为1000秒。如果未配置,则持续将前述-size指定大小的文件,以每次-bs值为分块大小写完。
- -group_reporting: 表示测试结果里汇总每个进程的统计信息,而非以不同job汇总展示信息。
- -filename=iotest:指定测试文件的名称,例如iotest。
- -name=Rand_Write_Testing:表示测试任务名称为Rand_Write_Testing,可以随意设定。
以上是关于今天做一个测评:阿里云磁盘读写速率测评的主要内容,如果未能解决你的问题,请参考以下文章