磁盘性能测试

dd 顺序读写测试工具
sync: 内存数据写入硬盘
direct: 直接IO交互绕过缓存区
oflag=dsync: 每读取一次bs定义的块都写入磁盘
conv=fdatasync: 所有读取完bs*count后才统一从缓存区写入硬盘

最接近真实数据值的方法:
顺序读

1
dd if=myapp of=/dev/null bs=1M count=1024 iflag=direct

顺序写

1
2
sync; echo 3 > /proc/sys/vm/drop_caches; \
dd if=/dev/zero of=test bs=1M count=128 conv=fdatasync

fio工具

随机读

1
fio -filename=/dev/sda -direct=1 -iodepth=4 -thread -rw=randread -ioengine=libaio -bs=4k  -size=2G -numjobs=100 -name="4K randwrite test" -group_reporting -runtime=10

随机写

1
fio -filename=/dev/sda -direct=1 -iodepth=4 -thread -rw=randwrite -ioengine=libaio -bs=4k  -size=2G -numjobs=100 -name="4K randwrite test" -group_reporting -runtime=10

混合读写

1
fio -filename=/dev/sda -direct=1 -iodepth=4 -thread -rw=randrw -ioengine=libaio -bs=4k  -size=2G -numjobs=100 -name="4K randwrite test" -group_reporting -runtime=10

混合读写7:3 # 读占70%

1
fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=16k -size=2G -numjobs=30 -runtime=100 -group_reporting -name=mytest1

总结

主要关注IOPS参数和BW吞吐,这里BW吞吐是读写时的磁盘吞吐,测试数据与bs块大小有关,其次才是网络带宽限制
网络带宽速度需要iperf工具测试.