2016-04-22 5 views
2

сегодня у меня была система linux с ожиданием 100% в столбце ожидания vmstat wait.vmstat: Что именно означает ожидание процессора?

Мой вопрос: что именно делает процессор, когда он ждет ввода-вывода?

К моему пониманию, процессор не может ждать - ему нужно запустить код! Так что он работает немного напряженно «дождитесь, пока наступает прерывание диска»? Почему он не запускает другой код и не возвращается, когда происходит прерывание с диска?

Насколько мне известно, диск слишком медленный, поэтому процессор может делать много, много циклов, пока диск не будет готов.

Почему linux позволяет процессору ждать, пока I/O не будет выполнен, вместо того чтобы дать ему некоторую работу?

Томас

ответ

2

IO ждать происходит, если процесс находится в «uninterruptible' государств во время ожидания ввода-вывода устройства.

Процесс является «бесперебойным», если он в настоящее время выполняет определенные системные вызовы - нормальный read ждет, когда диск начнет вращаться, не приведет к ожиданию ввода-вывода, который, как мне кажется, приведет к ошибочному поведению в приложения или возможной потери данных, если процесс должен быть прерван (из-за, например, ограничений в драйвере, используемом для доступа к специальному оборудованию).

Дополнительное чтение доступно после поиска в Интернете, например. «Линукс сон источник бесперебойного ядра объяснил»

0

Я нашел ответ здесь: http://veithen.github.io/2013/11/18/iowait-linux.html

Так что «ожидание ввода/вывода» на уровне процессора означает: Процессор не делает ничего, чем в ожидании ввода/вывода , В ожидании ввода-вывода процессор может запускать код пользователя, и в этом случае ожидание ввода-вывода исчезает, а процессор% увеличивается.

Здесь тестовый пример со страницы, на которую вы хотите перейти. Просто запустить задачу, которая делает много I/O на первом CPU:

набор задач 1 дд, если =/DEV/SDA из =/DEV/нуль бс = 1Мб

Вы можете видеть, что первый CPU теперь либо работает код ядра (sy), либо ждет ввода/вывода (wa):

% Cpu0: 0.0 us, 2.9 sy, 0.0 ni, 0.0 id, 97.1 wa, 0.0 hi, 0.0 si, 0.0 st

Теперь мы начинаем плотную петлю центрального процессора на одном процессоре:

1 ш набор задач -c «, а правда, делать верно; д один "

И -look-at-the-I-W Wait ушел, потому что у процессора теперь есть что-то еще, чем ждать ввода-вывода - он запускает код пользователя!

% cpu0: 91,3 нас, 1,3 с, 0,0 п, 0,0 И.Д., 0,0 в, 0,0 привет, 7,3 сов, 0,0 ст

Надежда, что помогает кому-то еще!

Grettings,

Томас

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