Я искал iowait
свойство, показанное в выводе верхней утилиты, как показано ниже.
top - 07:30:58 up 3:37, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 86 total, 1 running, 85 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
iowait
обычно определяется следующим образом:
«Это время, в течение которого процессор простаивает и ожидается некоторое количество операций ввода-вывода».
Насколько я понимаю, процесс выполняется на одном процессоре. После того, как он был перенесен из-за того, что он использовал свой временной интервал, или после того, как он был заблокирован, он может быть снова запланирован снова на любом одном процессоре.
В случае запроса ввода-вывода процессор, который переводит процесс в непрерывный режим сна, отвечает за отслеживание iowait
времени. Другие процессоры будут сообщать о времени простоя на своем конце, поскольку они действительно простаивают. Это предположение верно?
Кроме того, предполагая, что существует длинный запрос ввода-вывода (то есть процесс имел несколько возможностей для планирования, но не был запланирован, потому что ввод-вывод не был завершен), как процессор узнает, что существует «ожидающий ввод-вывод»? Откуда взята такая информация? Как процессор может просто обнаружить, что какой-то процесс был приостановлен на некоторое время для завершения ввода-вывода, поскольку любой из процессоров мог бы перевести этот процесс в спящий режим. Как подтверждается этот статус «ожидающий IO»?