Linux Labs

Система изнутри: ресурсы, ядро, процессы / Ступень 5 из 12

Кто нагружает диск

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 2 из 6 · теория · 6 мин

Ожидание диска

wa — это простой процессора, у которого есть причина.

Когда процессору нечего делать, он простаивает, и ядро записывает это время в id. Если в этот момент какой-то процесс ждёт ответа диска, тот же простой идёт в wa — iowait. Сам процесс, который ждёт диск, находится в состоянии D: его считают столбец b у vmstat и load average.

Столбцы bi и bo — сколько КиБ в секунду машина читает с диска и пишет на него. В опыте bo — несколько тысяч, всего несколько МБ/с, а диск при этом занят всё время. Выгрузка пишет блоками по 4 КиБ и после каждого ждёт, пока блок дойдёт до диска, — так пишут журналы баз данных. Каждая запись короткая, но ожиданий сотни в секунду, и почти всё время у диска есть работа.

Большой wa не значит, что процессор занят. Это простой, и любая задача, которой нужен процессор, получит его сразу.

Проверь себя 1 вопрос

Пока выгрузка ждёт диск, ты запускаешь stress-ng --cpu 1 --timeout 15s — расчёт, который занимает процессор целиком. Что vmstat покажет в группе cpu?

  • Ожидание процессор не занимает: wa — это простой. Расчёт забирает его, и vmstat показывает us около 97 и wa 0.

  • Делить нечего: простой забирает любая задача, которой нужен процессор. Расчёт получает почти всё время — us около 97, wa 0.

wa — время простоя, и расчёт забирает его целиком: vmstat показывает us около 97 и wa 0. В bo при этом по-прежнему тысячи — выгрузка пишет, как писала. Проверь сам: stress-ng --cpu 1 --timeout 15s &, затем vmstat 1 5.

Главное в шаге

  • wa — время, когда процессор простаивает, а процесс ждёт диск; задачам, которым нужен процессор, большой wa не мешает.
  • Процесс, который ждёт диск, — в состоянии D; его считают столбец b и load average.
  • bi и bo — чтение и запись в КиБ в секунду; мелкие записи с ожиданием каждой занимают диск при малом объёме.
Ubuntu 24.04
Загрузка…