解决方案
针对文件系统的性能测试,与针对块存储的性能测试,两者相仿,其主要差异在于数据读写方式。
Bandwidth(带宽)
–bs=1M:使用 1MB 的 I/O 块大小
–iodepth=64:至少 64 的 I/O 深度
–numjobs=16:通过使用多个并行流 (16+) 执行顺序写入来测试写入吞吐量;
–rw=write:通过 Seq. Write 进行写入带宽测试;通过 Seq. Read 进行读取带宽测试;
写入带宽(Seq. Bandwidth)
fio --name=write_throughput \ --directory=/tmp/fio/ --size=10G \ --time_based --runtime=60s --ramp_time=2s \ --ioengine=libaio --direct=1 --verify=0 \ --bs=1M --iodepth=64 --numjobs=16 --rw=write --group_reporting=1
读取带宽(Rnd. Bandwidth)
fio --name=read_throughput \ --directory=/tmp/fio/ --size=10G \ --time_based --runtime=60s --ramp_time=2s \ --ioengine=libaio --direct=1 --verify=0 \ --bs=1M --iodepth=64 --numjobs=16 --rw=read --group_reporting=1
IOPS(每秒 IO 数)
–rw=randwrite:通过执行 Rnd. Write 来测试写入 IOPS;通过执行 Rnd. Read 来测试读取 IOPS;
–bs=4K:使用 4 KB 的 I/O 块大小
–iodepth=256:至少 256 的 I/O 深度:
写入次数(Rnd. IOPS)
fio --name=write_iops \ --directory=/tmp/fio/ --size=10G \ --time_based --runtime=60s --ramp_time=2s \ --ioengine=libaio --direct=1 --verify=0 \ --bs=4K --iodepth=256 --rw=randwrite --group_reporting=1
读取次数(Rnd. IOPS)
fio --name=read_iops \ --directory=/tmp/fio/ --size=10G \ --time_based --runtime=60s --ramp_time=2s \ --ioengine=libaio --direct=1 --verify=0 \ --bs=4K --iodepth=256 --rw=randread --group_reporting=1
延迟(Latency)
写入延迟(Rnd. Latency Write)
fio --name=write_latency_test \ --directory=/tmp/fio/ --size=10G \ --time_based --ramp_time=2s --runtime=1m \ --ioengine=libaio --direct=1 --verify=0 --randrepeat=0 \ --bs=4K --iodepth=4 --rw=randwrite
读取延迟(Rnd. Latency Read)
fio --name=write_latency_test \ --directory=/tmp/fio/ --size=10G \ --time_based --ramp_time=2s --runtime=1m \ --ioengine=libaio --direct=1 --verify=0 --randrepeat=0 \ --bs=4K --iodepth=4 --rw=randwrite