执行以下 3 个命令:
fio --name=write_throughput --numjobs=8 \
--size=10G --time_based --runtime=60s --ramp_time=2s --ioengine=libaio \
--direct=1 --verify=0 --bs=1M --iodepth=64 --rw=write \
--group_reporting=1
写入速度略高于 1GB/s
差异:1 个工作,而不是 8 个。
fio --name=write_throughput --numjobs=1 \
--size=10G --time_based --runtime=60s --ramp_time=2s --ioengine=libaio \
--direct=1 --verify=0 --bs=1M --iodepth=64 --rw=write \
--group_reporting=1
写入速度约为 255MB/s
差异:1 个作业,4K bs
fio --name=write_throughput --numjobs=1 \
--size=10G --time_based --runtime=60s --ramp_time=2s --ioengine=libaio \
--direct=1 --verify=0 --bs=4K --iodepth=64 --rw=write \
--group_reporting=1
结果是 8MB/s
我觉得这很令人困惑。我基本上是在寻找一个能告诉我“写入单个 10GB 文件的速度有多快”的场景,而这些不同的选项却给了我截然不同的输出。
我并不追求理论上的最大值。我追求的是真实的性能。对于一个在生成文件的同时写入文件的应用程序来说。因此,也不会先在文件系统上创建一个部分,然后再用字节填充它。
我在这里误解了什么? fio 不是用于此的工具吗?