я переживала iostat
справочная страница. Согласно ему,
%iowait
Show the percentage of time that the CPU or CPUs were idle during which the system
had an outstanding disk I/O request.
%idle
Show the percentage of time that the CPU or CPUs were idle during which the system
did not have an outstanding disk I/O request.
Я не понимал, как iostat определяет, является ли запрос ввода-вывода невыполненным или нет.
iowait - это в основном среднее время (в миллисекундах) для запросов ввода-вывода, отправленных устройству для обслуживания. Это включает время, затраченное на запросы в очереди, и время, потраченное на их обслуживание.
Измеряется на основе per io от передней части планировщика io до завершения io. Он охватывает время, затрачиваемое на планировщик, драйвер, контроллер, транспорт (для san) и хранилище, необходимое для завершения каждого io. Это среднее время в миллисекундах для запросов ввода-вывода, выполненных хранилищем, и включает время, затраченное на запросы в очереди планировщика, и время, затраченное хранилищем на их обслуживание.
Во время передачи выполняется несколько этапов ввода-вывода. После того, как приложение отправляет IO, для него выделяется запрос, и когда запрос предоставляется, ядро видит, может ли оно объединить io с любой существующей очередью запросов. Время, проведенное в очереди запросов, добавляется к общему времени обслуживания. Затем после слияния io отправляется в хранилище. Если хранилище находится под давлением или не может справиться с номерами ввода-вывода, тогда наш ввод-вывод также должен ждать, пока его не обслужит хранилище. Итак, по сути, есть две фазы ожидания, которые выполняет iostat.
Для этой цели он ссылается на файл proc / proc / diskstats.
Спрашивая ядро. Эта информация прямо содержится в первой строке /proc/stat
см. документация по процессу.