Потребление CPU Linux

Потребление 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)