Linux下测试磁盘性能

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初始化系统bufferN/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
评论区
头像