Назад | Перейти на главную страницу

Лучший размер блока для fio при чтении файла

Чтобы предварительно нагреть том ext4 EBS я использую fio следующим образом:

fio --name <filename> --filename <filename> --rw read --direct 1 --ioengine libaio --bs <X>k

и пытаюсь понять, каким должен быть оптимальный размер блока. Я знаю, что могу 'stat' и получить размер блока файла, но при использовании этого в fio он выдаст ошибку, если размер файла меньше размера его блока.

Возможным вариантом может быть использование размера блока, заданного stat по умолчанию, и, если размер файла меньше этого, получить ближайшее «стандартное» число: т.е. если размер меньше 4k, установите размер блока равным 1024.

Как лучше всего установить правильный размер блока?

РЕДАКТИРОВАТЬ: Восстанавливаю том gp2 10 ТБ из снапшота. Есть несколько миллионов файлов - большинство из них небольшие, но другая хорошая часть состоит из файлов размером 50-30 ГБ, и все эти файлы должны быть «готовы» к чтению как можно быстрее. У меня есть сценарий, который запускает fio для каждого файла, и я пытаюсь понять, как мне лучше всего динамически регулировать размер блока для каждого файла.

Чтобы замаскировать сетевую задержку, вы хотите использовать достаточно большой размер блока. Предлагаемый Amazon размер блока в 1 МБ мне кажется хорошим.

Я подозреваю dd будет так же быстро или быстрее, чем fio для этой конкретной рабочей нагрузки. Однако вам просто нужно было поэкспериментировать и использовать тот метод, который будет быстрее для чтения (и регидратации) объема.

Наконец, учтите, что stat возвращает два значения размера ввода / вывода:

  • минимальный - минимальный размер ввода-вывода, который устройство будет читать / писать;
  • оптимальный, то есть минимальный размер ввода-вывода для получения хорошей производительности, избегая поведения r / m / w

Это не означает, что ввод-вывод больше оптимального будет медленнее; скорее, больший размер может немного повысить производительность ввода-вывода.