Потребление 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 — функции ОС, мрогут быть привязаны к софту. но всегда привязаны к железу (всегда доступ к ядру, для пользователя его нет)
id — idle — простой процессора
wa — wait — время ожидания ответа от диска (от 50 означает, что диск очень медленный)
st — stolen time — показывает как долго виртуалка ожидает ответа от гипервизора
Использование top для контроля CPU
top более удобен при ручной работе и неприменим в скриптах
По умолчанию показывает время, uptime, колическтво пользователей в системе, LA (в сумме по потокам — т.е. максимум 2 для 2 ядер)
Увидеть нагрузку на CPU можно нажав английскую букву C на клавиатуре в открытом окне с запущенным top
Информация будет выведена в расчете на одно ядро в системе, ядер может быть больше и чтобы увидеть как нагрузка распределяется по ним можно нажав «1» на клавиатуре
Выводятся практически те же метрики, что уже рассмотрены для vmstat: us, sy, ni ( — lice level — какая часть процессов занята выполнением процессов с измененными приоритетами), id, wa, hi (hardware iterations), si (software iterations)