https://baijiahao.baidu.com/s?id=1754630877239636966&wfr=spider&for=pc
1. dd if=/dev/zero of=test bs=64k count=16k
这个很不准确的,因为命令结束的时候数据还没有真正写到磁盘上去
2. dd if=/dev/zero of=test bs=64k count=16k conv=fsync
这个还算准确,数据已经写入磁盘
3. dd if=/dev/zero of=test bs=64k count=4k oflag=dsync
这个可以当成是模拟数据库插入操作,所以很慢
磁盘IO是云主机的重要指标,可以按照负载情况分成照顺序读写,随机读写两大类。fio 是测试磁盘性能的最佳工具:1、测试顺序读性能
fio --filename=/home/test -iodepth=64 -ioengine=libaio --direct=1 --rw=read --bs=1m \--size=2g --numjobs=4 --runtime=10 --group_reporting --name=test-read
2、测试顺序写性能
fio -filename=/home/test -iodepth=64 -ioengine=libaio -direct=1 -rw=write -bs=1m \-size=2g -numjobs=4 -runtime=20 -group_reporting -name=test-write
3、测试随机读性能
fio -filename=/home/test -iodepth=64 -ioengine=libaio -direct=1 -rw=randread -bs=4k \-size=2G -numjobs=64 -runtime=20 -group_reporting -name=test-rand-read
4、测试随机写性能
fio -filename=/home/test -iodepth=64 -ioengine=libaio -direct=1 -rw=randwrite -bs=4k \-size=2G -numjobs=64 -runtime=20 -group_reporting -name=test-rand-write
参数说明: filename=/home/test 测试文件名称,通常选择需要测试的盘的 data 目录。 direct=1 测试过程绕过机器自带的buffer。使测试结果更真实。 rw=randwrite 测试随机写的 I/O rw=randrw 测试随机写和读的 I/O bs=4k 单次 io 的块文件大小为 4k size=2g 本次的测试文件大小为 2g,以每次4k的io进行测试。 numjobs=64 本次的测试线程为 64。runtime=20 测试时间为20秒,如果不写则一直将 2g 文件分4k每次写完为止。报告如何查看: fio 的结果报告内容丰富,我们主要关心的是两项:磁盘的吞吐量bw,这个是顺序读写考察的重点,磁盘的每秒读写次数 iops,这个是随机读写考察的重点比如,下面是 4 个测试的结果部分截取:
test-read: (groupid=0, jobs=4): err= 0: pid=4752 read : \io=839680KB, bw=76823KB/s, iops=75 , runt= 10930msec
顺序读,带宽 76823KB/s,iops 75
test-write: (groupid=0, jobs=4): err= 0: pid=4758 write: \io=899072KB, bw=42854KB/s, iops=41 , runt= 20980msec
顺序写,带宽 42854KB/s, iops=41
test-rand-read: (groupid=0, jobs=64): err= 0: pid=4619 read : \io=72556KB, bw=3457.4KB/s, iops=864 , runt= 20986msec
随机读,带宽 3457.4KB/s, iops=864
test-rand-write: (groupid=0, jobs=64): err= 0: pid=4685 write: \io=129264KB, bw=6432.4KB/s, iops=1608 , runt= 20097msec
随机写,带宽 6432.4KB/s, iops=1608
Improve disk I/O performance in KVM