Linux下测试磁盘性能
磁盘有两个重要的性能指标,分别是iops
和读写速度
,我们可以使用一个实用工具来测试他们
使用FIO测试磁盘iops和吞吐量
安装FIO
wget http://brick.kernel.dk/snaps/fio-2.0.7.tar.gz --no-check-certificate
yum -y install libaio-devel
tar -zxvf fio-2.0.7.tar.gz
cd fio-2.0.7
make && make install
FIO使用说明
eg(随机读写测试):
fio -filename=/data/test.dd -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=16k -size=5G -numjobs=20 -runtime=60 -group_reporting -name=mytest
以上面指令为例,以下是简单的说明
参数 | 说明 | 可能的值 |
---|---|---|
filename | 测试文件名称,通常选择需要测试的盘的data目录 | /data/test.dd |
direct | 测试过程绕过机器自带的buffer。使测试结果更真实 | 1 |
iodepth | 表示使用异步I/O(AIO)时,同时发出的I/O数的上限 | 128 |
rw | 测试类型 | randrw 随机读写 randwrite 随机写randread 随机读read 顺序读write 顺序写 |
bs | 单次io的块文件大小 | 16k |
bsrange | 同上,提定数据块的大小范围 | 512-2048 |
size | 测试文件大小,根据自身决定,理论越大测得越准 | 5g |
numjobs | 测试线程数 | 20 |
runtime | 测试时间为${runtime}秒,如果不写则一直将${size}文件分${bs}每次写完为止 | 1000 单位秒 |
ioengine | 引擎 | psync |
rwmixwrite | 在混合读写的模式下,写占${rwmixwrite}% | 30 |
rwmixread | 在混合读写的模式下,读占${rwmixread}% | 70 |
group_reporting | 关于显示结果的,汇总每个进程的信息 | N/A |
lockmem | 不常用,使用多少内存进行测试 | 1g |
zero_buffers | 不常用,用0初始化系统buffer | N/A |
nrfiles | 不常用,每个进程生成文件的数量 | 8 |
FIO常用指令
随机写IOPS:
fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=10G -numjobs=1 -runtime=1000 -group_reporting -filename=/root/test.dd -name=Rand_Write_Testing
随机读IOPS:
fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4k -size=10G -numjobs=1 -runtime=1000 -group_reporting -filename=/root/test.dd -name=Rand_Read_Testing
顺序写吞吐量:
fio -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=1024k -size=10G -numjobs=1 -runtime=1000 -group_reporting -filename=/root/test.dd -name=Write_PPS_Testing
顺序读吞吐量:
fio -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=1024k -size=10G -numjobs=1 -runtime=1000 -group_reporting -filename=/root/test.dd -name=Read_PPS_Testing
随机写时延:
fio -direct=1 -iodepth=1 -rw=randwrite -ioengine=libaio -bs=4k -size=10G -numjobs=1 -group_reporting -filename=/root/test.dd -name=Rand_Write_Latency_Testing
随机读时延:
fio -direct=1 -iodepth=1 -rw=randread -ioengine=libaio -bs=4k -size=10G -numjobs=1 -group_reporting -filename=/root/test.dd -name=Rand_Read_Latency_Testing
测试结果参考
测试结果仅供参考,会受到各种缓存机制的影响导致结果不准确,测试采用10G文件进行测试
腾讯云轻量应用服务器2核4g 80GB SSD云硬盘
随机写:610 iops
随机读:11245 iops(后面会掉速)
顺序写吞吐量:156.4MB/S
顺序读吞吐量:158.3MB/S
混合随机读/写:1440/611 iops
公司服务器Y 深信服KVM虚拟机 32核32G 未知磁盘,貌似为机械RAID阵列+SSD缓存
随机写:9707 iops
随机读:14199 iops
混合随机读/写:7946/3412 iops
公司服务器L 实体机DL580G9 E7-4850v3 未知磁盘(看结果像是一块机械盘)
随机写:1673 iops
随机读:1162 iops
顺序写吞吐量:139.8MB/S
顺序读吞吐量:307.4MB/S
公司服务器D 虚拟机 16核32G 未知磁盘
随机写:5041 iops
随机读:5090 iops
顺序写吞吐量:143.3MB/S
顺序读吞吐量:143.2MB/S
公司服务器P 深信服KVM虚拟机 16核32G 宿主机磁盘:浪潮3008IMR阵列卡+3HDD+1SSD阵列
随机写:48923 iops
随机读:65531 iops
顺序写吞吐量: 93MB/S
顺序读吞吐量:1386.3MB/S
混合随机读/写:28628/28609 iops
自家服务器 esxi虚拟机 宿主机磁盘:Intel P4510固态硬盘
随机写:38218 iops
随机读:109181 iops
顺序写吞吐量: 1007.9MB/S
顺序读吞吐量:2327.3MB/S
分别是哔哩哔哩序号35,小米运动序号2,米友社序号13,这个是同一个账号下运行的任务