Теперь нагрузка другого рода: процессы, которым нужен только процессор.
Три процесса на одном процессоре
Запусти в фоне stress-ng: три процесса, которые 60 секунд только считают. Потом посмотри vmstat и состояния процессов stress-ng.
Сначала предположи
Три процесса считают без остановки, процессор один. Какое число vmstat покажет в столбце r в строках после первой?
Теперь начни упражнение, выполни команду и сверь прогноз с выводом.
vmstat 1 5 печатает пять строк с интервалом в секунду. Первая — среднее с загрузки машины, текущее состояние — в следующих. Столбец r — сколько процессов в R: три stress-ng-cpu — рабочие процессы stress-ng, иногда и сам vmstat. Пока они считают, load average растёт к трём — как в начале урока, только теперь процессор занят.
Группа cpu справа — доли времени процессора в процентах:
| Поле | На что ушло время |
|---|---|
us |
программы |
sy |
ядро по просьбам программ |
id |
простой |
wa |
простой, пока процессы ждут ввода-вывода |
st |
время, которое забрал хост у виртуальной машины |
Строка %Cpu(s) в top — те же поля. Высокий load вместе с id около нуля — очередь к процессору. Высокий load при большом id — процессы в D: причину ищи в хранилище.
На сервере 4 процессора. uptime — load average: 6.10, 5.80, 5.20, vmstat — r около 6, id 0. Что сделаешь первым?
-
Порога 10 нет: load сравнивают с числом процессоров. 6 на четырёх процессорах — двое постоянно ждут очереди.
-
Процессы, которые ждут диск, сидят в D, и процессор при этом простаивает. Здесь id 0 и r около 6 — очередь к процессору.
Load выше числа процессоров при id 0 и большом r — очередь к процессору. Начинают с тех, кто занимает его больше всех: top сортирует по %CPU.