Результаты теста FIO сильно различаются в зависимости от количества рабочих мест.
Возьмите следующие 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
Это приводит к скорости записи чуть более 1 ГБ/с.
Разница: 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
В результате скорость записи составляет около 255 МБ/с.
Разница: 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
В результате получается 8 МБ/с.
Я нахожу это запутанным. По сути, я ищу сценарий, который сообщает мне, «как быстро записывается один файл размером 10 ГБ», и эти разные параметры дают мне совершенно разные результаты.
Я не ищу теоретический максимум. Я ищу реалистичное исполнение. Для приложения, которое записывает файл по мере его создания. Поэтому не нужно сначала создавать раздел в файловой системе, а затем заполнять его байтами.
Что я здесь неправильно понимаю? Разве fio не является инструментом для этого?