使用FIO测试磁盘性能
FIO可以很方便地测试磁盘IO性能
Fio是一个很好用的磁盘性能测试工具,可以通过以下命令测试磁盘的读写性能。
fio --filename=/tmp/fio.data \
-direct=1 \
-iodepth=32 \
-rw=randrw \
--rwmixread=80 \
-bs=4k \
-size=1G \
-numjobs=16 \
-runtime=60 \
-group_reporting \
-name=randrw \
--output=/tmp/fio_randomrw.txt \
&& unlink /tmp/fio.data
下面是常用的测试组合,确保 /data/
挂载了数据盘
--8k 随机写
fio -name=8krandw -runtime=120 -filename=/data/rand.txt -ioengine=libaio -direct=1 -bs=8K -size=10g -iodepth=128 -numjobs=1 -rw=randwrite -group_reporting -time_based
--8K 随机读
fio -name=8krandr -runtime=120 -filename=/data/rand.txt -ioengine=libaio -direct=1 -bs=8K -size=10g -iodepth=128 -numjobs=1 -rw=randread -group_reporting -time_based
--8k 混合读写
fio -name=8krandrw -runtime=120 -filename=/data/rand.txt -ioengine=libaio -direct=1 -bs=8k -size=10g -iodepth=128 -numjobs=1 -rw=randrw -rwmixwrite=30 -group_reporting -time_based
--1Mb 顺序写
fio -name=1mseqw -runtime=120 -filename=/data/seq.txt -ioengine=libaio -direct=1 -bs=1024k -size=20g -iodepth=128 -numjobs=1 -rw=write -group_reporting -time_based
--1Mb 顺序读
fio -name=1mseqr -runtime=120 -filename=/data/seq.txt -ioengine=libaio -direct=1 -bs=1024k -size=20g -iodepth=128 -numjobs=1 -rw=read -group_reporting -time_based
--1Mb 顺序读写
fio -name=1mseqrw -runtime=120 -filename=/data/seq.txt -ioengine=libaio -direct=1 -bs=1024k -size=20g -iodepth=128 -numjobs=1 -rw=rw -rwmixwrite=30 -group_reporting -time_based
测试 PostgreSQL 相关的 IO 性能表现时,应当主要以 8KB 随机IO为主,可以考虑以下参数组合。
3个维度:RW Ratio, Block Size, N Jobs 进行排列组合
- RW Ratio: Pure Read, Pure Write, rwmixwrite=80, rwmixwrite=20
- Block Size = 4KB (OS granular), 8KB (DB granular)
- N jobs: 1 , 4 , 8 , 16 ,32