测试磁盘速度

dd命令

首先了解两个特殊设备

/dev/null 伪设备,回收站.写该文件不会产生IO

/dev/zero 伪设备,会产生空字符流,对它不会产生IO

测试磁盘读速度

time dd if=uiroot.tgz of=./test.dbf bs=8k count=30000

测试磁盘写速度

time dd if=/dev/zero of=/test.disk bs=8k count=300000

fio命令

随机读性能 8k

fio -filename=/home/test -iodepth=64 -ioengine=libaio -direct=1 -rw=randread -bs=8k -size=2G -numjobs=64 -runtime=20 -group_reporting -name=test-rand-read

顺序读性能 8k

fio --filename=/home/test -iodepth=64 -ioengine=libaio --direct=1 --rw=read --bs=8k --size=2g --numjobs=4 --runtime=10 --group_reporting --name=test-read

随机写性能 8k

fio -filename=/home/test -iodepth=64 -ioengine=libaio -direct=1 -rw=randwrite -bs=8k -size=2G -numjobs=64 -runtime=20 -group_reporting -name=test-rand-write

顺序写性能 8k

fio -filename=/home/test -iodepth=64 -ioengine=libaio -direct=1 -rw=write -bs=8k -size=2g -numjobs=4 -runtime=20 -group_reporting -name=test-write

参数说明

filename=/dev/emcpowerb 支持文件系统或者裸设备,-filename=/dev/sda2或-filename=/dev/sdb
direct=1                 测试过程绕过机器自带的buffer,使测试结果更真实
rw=randwread             测试随机读的I/O
rw=randwrite             测试随机写的I/O
rw=randrw                测试随机混合写和读的I/O
rw=read                  测试顺序读的I/O
rw=write                 测试顺序写的I/O
rw=rw                    测试顺序混合写和读的I/O
bs=4k                    单次io的块文件大小为4k
bsrange=512-2048         同上,提定数据块的大小范围
size=5g                  本次的测试文件大小为5g,以每次4k的io进行测试
numjobs=30               本次的测试线程为30
runtime=1000             测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止
ioengine=psync           io引擎使用pync方式,如果要使用libaio引擎,需要yum install libaio-devel包
rwmixwrite=30            在混合读写的模式下,写占30%
group_reporting          关于显示结果的,汇总每个进程的信息
此外
lockmem=1g               只使用1g内存进行测试
zero_buffers             用0初始化系统buffer
nrfiles=8                每个进程生成文件的数量

测试结果

io=执行了多少M的IO

bw=平均IO带宽
iops=IOPS
runt=线程运行时间
slat=提交延迟
clat=完成延迟
lat=响应时间
bw=带宽
cpu=利用率
IO depths=io队列
IO submit=单个IO提交要提交的IO数
IO complete=Like the above submit number, but for completions instead.
IO issued=The number of read/write requests issued, and how many of them were short.
IO latencies=IO完延迟的分布

io=总共执行了多少size的IO
aggrb=group总带宽
minb=最小.平均带宽.
maxb=最大平均带宽.
mint=group中线程的最短运行时间.
maxt=group中线程的最长运行时间.

ios=所有group总共执行的IO数.
merge=总共发生的IO合并数.
ticks=Number of ticks we kept the disk busy.
io_queue=花费在队列上的总共时间.
util=磁盘利用率


测试磁盘速度
https://www.hechunyu.com/archives/ce-shi-ci-pan-su-du
作者
chunyu
发布于
2022年11月01日
许可协议