Потребление CPU в Linux является одним из ключевых параметров работы системы, которые нужно контролировать. Потребление CPU отражается большим количеством стандартных Linux утилит, также контролируется системами мониторинга такими как Nagios и Zabbix.
Рассмотрим основные утилиты, выводящие информацию о CPU. С их помощью можно проверить текущее состояние системы вручную.
Потребление CPU Linux сервером и утилиты, использующиеся для анализа
CPU (central processor unit) — серверный процессор, для CPU основными параметрами является количество ядер процессора и частота.
Информацию на момент выполнения запроса проще всего посмотреть vmstat
vmstat
procs ————memory———- —swap— ——io—- -system— ——cpu——
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 1 1010668 351272 37448 646940 18 32 99 53 206 97 11 2 82 5 0
Можно обращаться к утилите по CRON и считывать нужные данные, затем использовать в скриптах
Также можно смотреть результат выполнения в динамике с обновлением каждую секунду
watch vmstat
В выводе vmstat есть несколько блоков: proces, memory, swap, io, system parametrs, cpu
proces:
r — running (среднее количество потоков ядра исполняемых и ждущих исполнения, не должно быть больше количества ядер)
b — blocked (процессоры в состоянии непрерываемого сна, нельзя убить, ждут ответа от дисков или реже — системы распределения памяти; обычно говорит о медленных дисках)
system:
in (interapts) прерывания, количество прерываний в секунду
cs (context swithes) переключение процессора с одной задачи на другую
cpu:
us — user space — время, кот-е используется на выполнение кода на уровне пользователя (в непривилегированном режиме)
sy — system — функции ОС, привязываются к софту. Также они всегда привязаны к аппаратной части (всегда доступ к ядру, для user space такого нет)
id — idle — простой процессора
wa — wait — время ожидания ответа от диска (от 50 означает, что диск очень медленный)
st — stolen time — показывает как долго виртуалка ожидает ответа от гипервизора
Использование top для контроля CPU
top более удобен при ручной работе и неприменим в скриптах
По умолчанию показывает время, uptime, количество пользователей в системе, LA .
Увидеть нагрузку на CPU можно нажав английскую букву C на клавиатуре в открытом окне с запущенным top.
Вывод утилиты top с информацией о загрузке процессора:
Информация будет выведена в расчете на одно ядро в системе. Ядер может быть больше. Чтобы увидеть как нагрузка распределяется по ним можно нажав 1 на клавиатуре
Выводятся практически те же метрики, что уже рассмотрены для vmstat. us, sy, ni ( — lice level — какая часть процессов занимается выполнением процессов с измененными приоритетами), id, wa, hi (hardware iterations), si (software iterations)
Читайте также про контроль производительности и загруженности дисков, а также про проверку использования оперативной памяти.