Я знаю wa
(в top
) измеряет время процессора при ожидании ввода / вывода. Многие статьи говорят об этом.
Но я смущен тем, что, основываясь на 2 точках знаний:
- если процесс использует системный вызов для чтения диска, процесс блокируется.
- Если процесс заблокирован, его нельзя запланировать на CPU.
Правильно?
Кажется, нет времени для ожидания процессора при вводе / выводе ... Что происходит?
Если мне порекомендуют книги или статьи для дальнейшего чтения, тем лучше.
Ответы:
Состояние простоя ЦП делится на два «подсостояния»:
iowait
иidle
.Если процессор простаивает, ядро затем определяет, выполняется ли в настоящее время хотя бы один ввод-вывод на локальном диске или на удаленно смонтированном диске (NFS), который был инициирован с этого процессора. Если есть, то процессор в состоянии
iowait
. Если нет ввода-вывода, который был запущен из этого ЦП, ЦП находится вidle
состоянии.Таким образом,
iowait
это процент времени, в течение которого процессор простаивает И, по крайней мере, один ввод-вывод выполняется из этого процессора.iowait
Счетчик утверждает , что система может работать с более вычислительной работы. Тотiowait
факт, что процессор находится в состоянии, не означает, что он не может запускать другие потоки или процессы на этом процессоре.Итак,
iowait
это просто форма простоя.источник
dd if=/dev/sda of=/dev/null
сделать высокийwa
. Затем запустите код while-true,wa
вместоus
. Спасибо, хаос.Я не уверен на 100%, что понимаю вопрос, но есть некоторые идеи.
Здесь есть еще один вопрос, который задал этот вопрос и имеет несколько хороших ответов: может кто-нибудь объяснить точно, что такое IOWait?
Здесь есть хороший пост: http://veithen.github.io/2013/11/18/iowait-linux.html
источник