2016-12-21 10 views
0

В последнее время я пытаюсь проверить свой диск с помощью fio. Моя конфигурация МСН выглядит следующим образом:Почему iops наблюдается от fio, отличного от наблюдаемого iostat?

[global] 
invalidate=0 # mandatory 
direct=1 
#sync=1 
fdatasync=1 
thread=1 
norandommap=1 
runtime=10000 
time_based=1 

[write4k-rand] 
stonewall 
group_reporting 
bs=4k 
size=1g 
rw=randwrite 
numjobs=1 
iodepth=1 

В этой конфигурации, вы можете увидеть, что я настроен делать ФИО случайных операций записи с использованием прямого ввода-вывода. Пока тест выполняется, я использовал iostat для мониторинга производительности ввода-вывода. И я обнаружил, что: если я установил fdatasync в 1, то iops, наблюдаемый fio, составляет около 64, а наблюдаемый iostat - около 170. Почему это другое? И если я не настрою «fdatasync», оба iops примерно одинаковы, но намного выше, около 450. Почему? Насколько я знаю, прямая io не проходит через кеш страниц, что, на мой взгляд, означает, что это должно занимать примерно одно и то же время, независимо от того, используется ли fdatasync.

И я слышал, что при некоторых обстоятельствах iostat может придумать неправильную статистику. Это реально? Что именно обстоятельство могло бы привести к тому, что iostat пойдет не так? Существуют ли какие-либо другие инструменты, которые я могу использовать для мониторинга производительности ввода-вывода?

ответ

0

Глядя на ваш файл заданий, похоже, что вы не выполняете ввод-вывод против блочного устройства, а вместо этого в файл в файловой системе. Таким образом, хотя вы можете попросить файловую систему «поместить эти данные в это место в этом файле», файловая система может превратиться в несколько запросов блочных устройств, поскольку она также должна обновлять метаданные, связанные с этим файлом (например, журнал, отметки времени файла, копировать при записи и т. Д.) слишком. Таким образом, когда запросы отправляются на диск (это то, что вы измеряете с помощью iostat), исходный запрос был усилен.

Что-то также иметь в виду, что Linux может иметь ioscheduler для этого диска. Это может переупорядочить, разбить и объединить запросы перед отправкой на диск/возвратом их в стек. См. Различные параметры nomerges в https://www.kernel.org/doc/Documentation/block/queue-sysfs.txt, как избежать некоторых слияний/перегруппировок, но обратите внимание, что вы не можете управлять расщеплением слишком большого запроса (но файловая система не будет выполнять слишком большие запросы).

(PS: Я не знаю, что iostat является «неправильным», поэтому вам может потребоваться попросить людей, которые говорят это напрямую, чтобы узнать, что они означают)

 Смежные вопросы

  • Нет связанных вопросов^_^