「fio」- 文件系统,性能测试

解决方案

针对文件系统的性能测试,与针对块存储的性能测试,两者相仿,其主要差异在于数据读写方式。

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