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

Почему CPU тратил время на ввод-вывод (wa)?

Я знаю watop) измеряет время процессора при ожидании ввода-вывода. Об этом говорится во многих статьях.

Но меня смущает это, основываясь на 2 точках знаний:

  1. если процесс использует системный вызов для чтения диска, процесс блокируется.
  2. Если процесс заблокирован, его нельзя запланировать на CPU.

Правильно?

Кажется, нет времени CPU ждать ввода / вывода ... Что происходит?

Если порекомендуете мне книги или статьи для дальнейшего чтения, тем лучше.

Состояние простоя ЦП разделено на два разных «подсостояния»: iowait и idle.

Если ЦП простаивает, ядро ​​затем определяет, есть ли в настоящее время хотя бы один ввод-вывод для локального диска или удаленно смонтированного диска (NFS), который был инициирован этим ЦП. Если есть, значит CPU в состоянии iowait. Если не выполняется никакого ввода-вывода, инициированного этим ЦП, ЦП находится в idle штат.

Так, iowait процент времени простоя процессора И есть хотя бы один выполняющийся ввод-вывод, инициированный этим ЦП.

В iowait counter указывает, что система может обрабатывать больше вычислительной работы. Просто потому, что процессор в iowait состояние не означает, что он не может запускать другие потоки или процессы на этом процессоре.

Так, iowait это просто форма простоя.

Я не уверен на 100%, что понимаю вопрос, но есть некоторые идеи.

Здесь есть еще один вопрос, на который есть несколько хороших ответов: Может ли кто-нибудь точно объяснить, что такое IOWait?

Здесь есть хороший пост: http://veithen.github.io/2013/11/18/iowait-linux.html