Как в linux посмотреть нагрузку на систему
Информацию по нагрузке на сервере под управлением операционной системы Linux вы можете получить, подключившись к оболочке (shell) операционной системы.
Доступ к оболочке операционной системы возможен через веб-консоль используемой услуги или через подключение к виртуальной машине по SSH.
Для анализа нагрузки на сервере вы можете использовать следующие системные утилиты: w, ps, top.
Ниже представлена краткая информация по каждой из утилит.
1. Утилита w.
Утилита w представляет информацию о времени, прошедшем с последнего запуска операционной системы, нагрузке на процессорные мощности и активных подключениях к оболочке операционной системы (shell).
Запускается командой:
w
Результат выполнения команды представлен на следующем скриншоте.
Средние значения нагрузки в Linux — это значения, показывающие потребность в исполняемых потоках (задачах) в виде усреднённого количества исполняемых и ожидающих потоков.
Информация о нагрузке в выводе команды выделена на скриншоте.
Указываются слева-направо три значения средней нагрузки за последние 1, 5 и 15 минут.
На скриншоте нагрузка за последнюю минуту составляет 0.84, а за последние 15 минут — 0.35.
Если значения нагрузки равны 0.0 — система находится в состоянии простоя.
Если среднее значение для 1 минуты выше, чем для 5 или 15 — нагрузка на сервере растёт.
Если среднее значение для 1 минуты ниже, чем для 5 или 15 — нагрузка на сервере снижается.
Если значения нагрузки выше, чем количество процессоров (CPU), то у вас могут быть проблемы с производительностью (в зависимости от ситуации).
2. Утилита ps.
Получить информацию по потреблению процессорных мощностей каждым из запущенных на сервере процессов можно командой:
ps -AH -o pid,pcpu,command
Результат выполнения команды представлен на следующем скриншоте.
Дополнительная информация по выводу команды:
1-ый столбец — PID, идентификатор процесса;
2-ой столбец — %CPU, потребление процессорных мощностей, %;
3-ий столбец — COMMAND, имя процесса или команда запуска процесса.
2. Утилита top.
Утилита top позволяет в реальном времени получить информацию о потреблении вычислительных ресурсов сервера с выводом информации по отдельным запущенным процессам.
Рекомендуем запускать утилиту командой:
top -c
, где дополнительный параметр c — отвечает за вывод полной команды.
Результат выполнения команды представлен на следующем скриншоте.
На скриншоте выделены:
— данные по средней нагрузке за 1, 5 и 15 минут;
— столбец %CPU с данными по нагрузке на процессорные мощности каждым из процессов;
— столбец COMMAND с указанием конкретного процесса (команды запуска процесса).
По умолчанию, вывод информации о процессах отсортирован по столбцу %CPU
Информация обновляется каждые 3 секунды, изменить период обновления можно нажав клавишу d и указав новое значение в секундах.
Анализ нагрузки в ОС Linux
В первую очередь, следует изучить вывод команды top:

Анализ проводится по строкам сверху вниз. Параметр load average отображается совокупную загруженность системы. Его значение меньше 1 означает отсутствие серьезной нагрузки. Значение больше 1 может предвещать проблемы с производительностью. Далее переходим к строке %Cpu(s). Все значения в нем, за исключением поля id, не должны на длительное время принимать большие значения. Ниже, в окне вывода процессов, можно уточнить, какой из них потребляет больше всего процессорного времени.
Строки KiB Mem и KiB Swap отображают статистику потребления ОЗУ и раздела/файла подкачки. Тут необходимо следить за резервом свободной оперативной памяти. Выяснить, какие процессы больше всего ее потребляют, можно, изменив сортировку с помощью комбинации клавиш + . Вернуться обратно – +
. Необходимо отдельно остановиться на параметре wa в строке %Cpu(s). Его большое значение не говорит о высоком потреблении CPU. Наоборот, он отображает совокупный простой процессов из-за ожидания окончания операций ввода-вывода. Это означает, что процесс вместо того, чтобы выполняться, находился в замороженном состоянии, пока данные не были записаны/прочитаны с HDD или переданы по сети. Проанализировать, к какому из HDD идет наибольшее количество обращений, можно с помощью команды iostat -d -x 5 3:

Для того, что бы узнать, какой из процессов больше всего нагружает дисковую подсистему, следует воспользоваться командой iotop:

Если проблем с дисковой подсистемой не выявлено, необходимо изучить статистику прохождения трафика через сетевые интерфейсы с помощью команды sar -n DEV 1 3:

Также рекомендуется проверить количество сетевых соединений командой netstat –ip -t -an:

Можно их просто посчитать с помощью netstat –ip -t -an | wc -l:
Загрузка ЦПУ в Linux — насколько варит ваш котелок
![]()
Понимать состояние ваших серверов с точки зрения их загрузки и производительности — крайне важная задача. В этой статье мы опишем несколько самых популярных методов для проверки и мониторинга загрузки ЦПУ на Linux хосте.

Методы проверки
Проверяем загрузку процессора с помощью команды top
Отличным способом проверки загрузки является команда top. Вывод этой команды выглядит достаточно сложным, зато если вы в нем разберетесь, то точно сможете понять какие процессы занимают большую часть ваших вычислительных мощностей.
Команда состоит всего из трех букв: top
У вас откроется окно в терминале, которое будет отображать запущенные сервисы в реальном времени, долю системных ресурсов, которую эти сервисы потребляют, общую сводку по загрузке CPU и т.д

Будем идти по порядку: первая строчка отображает системное время, аптайм, количество активных пользовательских сессий и среднюю загруженность системы. Средняя загруженность для нас особенно важна, т.к дает понимание о среднем проценте утилизации ресурсов за некоторые промежутки времени.
Три числа показывают среднюю загрузку: за 1, 5 и 15 минут соответственно. Считайте, что эти числа — это процентная загрузка, т.е 0.2 означает 20%, а 1.00 — стопроцентную загрузку. Это звучит и выглядит достаточно логично, но иногда там могут проскакивать странные значения — вроде 2.50. Это происходит из-за того, что этот показатель не прямое значение загрузки процессора, а нечто вроде общего количества «работы», которое ваша система пытается выполнить. К примеру, значение 2.50 означает, что текущая загрузка равна 250% и ваша система на 150% перегружена.
Вторая строчка достаточна понятна и просто показывает количество задач, запущенных в системе и их текущий статус.
Третья строчка позволит вам отследить загрузку ЦПУ с подробной статистикой. Но здесь нужно сделать некоторые комментарии:
- us: процент времени, когда ЦПУ был загружен и которое было затрачено на user space (созданные/запущенные пользователем процессы)
- sy: процент времени, когда ЦПУ был загружен и которое было затрачено на на kernel (системные процессы)
- ni: процент времени, когда ЦПУ был загружен и которое было затрачено на приоритезированные пользовательские процессы (системные процессы)
- id: процент времени, когда ЦПУ не был загружен
- wa: процент времени, когда ЦПУ ожидал отклика от устройств ввода — вывода (к примеру, ожидание завершения записи информации на диск)
- hi: процент времени, когда ЦПУ получал аппаратные прерывания (например, от сетевого адаптера)
- si: процент времени, когда ЦПУ получал программные прерывания (например, от какого-то приложения адаптера)
- st: сколько процентов было «украдено» виртуальной машиной — в случае, если гипервизору понадобилось увеличить собственные ресурсы
Следующие две строчки показывают сколько занято/свободно оперативно памяти и файла подкачки, и не так релевантны относительно задачи проверки нагрузки на процессор. Под информацией о памяти вы увидите список процессов и процент ЦПУ, который они тратят.
Также вы можете нажимать на кнопку t, чтобы прокручивать между различными вариантами вывода информации и использовать кнопку q для выхода из top
Немного более модный способ: htop
Существует более удобная утилита под названием htop, которая предоставляет достаточно удобный интерфейс с красивым форматированием. Установка утилиты экстремально проста:
Для Ubuntu и Debian:
sudo apt-get install htop
Для CentOS и Red Hat:
yum install htop
Для Fedora:
dnf install htop
После установки просто введите команду ниже:

Как видно на скриншоте, htop гораздо лучше подходит для простой проверки степени загрузки процессора. Выход также осуществляется кнопкой q
Прочие способы проверки степени загрузки ЦПУ
Есть еще несколько полезных утилит, и одна из них (а точнее целый набор) называется sysstat.
Установка для Ubuntu и Debian:
sudo apt-get install sysstat
Установка для CentOS и Red Hat:
yum install sysstat
Как только вы установите systat, вы сможете выполнить команду mpstat — опять же, практически тот же вывод, что и у top, но в гораздо лаконичнее.

Следующая утилита в этом пакете это sar. Она наиболее полезна, если вы ее вводите вместе с каким-нибудь числом, например 6. Это определяет временной интервал, через который команда sar будет выводить информацию о загрузке ЦПУ.

К примеру, проверяем загрузку ЦПУ каждые 6 секунд:
Если же вы хотите остановить вывод после нескольких итераций, например 10, добавьте еще одно число:
Так вы также увидите средние значения за 10 выводов.
Как настроить оповещения о слишком высокой нагрузке на процессор
Одним из самых правильных способов является написание простого bash скрипта, который будет отправлять вам алерты о слишком высокой степени утилизации системных ресурсов.
#!/bin/bash CPU=$(sar 1 5 | grep "Average" | sed 's/^.* //') CPU=$( printf "%.0f" $CPU ) if [ "$CPU" -lt 20 ] then echo "CPU usage is high!" | sendmail admin@example.com fi
Скрипт будет использовать обработчик sed и среднюю загрузку от команды sar. Как только нагрузка на сервер будет превышать 85%, администратор будет получать письмо на электронную почту. Соответственно, значения в скрипте можно изменить под ваши требования — к примеру поменять тайминги, выводить алерт в консоль, отправлять оповещения в лог и т.д.
Естественно, для выполнения этого скрипта нужно будет запустить его по крону:
Для ежеминутного запуска введите:
Заключение
Соответственно, лучшим способом будет комбинировать эти способы — например использовать htop при отладке и экспериментах, а для постоянного контроля держать запущенным скрипт.
Загрузка процессора Linux
Чтобы узнать хватает ли мощности процессора вашему серверу или компьютеру надо посмотреть загрузку процессора в данный момент или за последнее время. Это значение показывает на сколько процентов используется вычислительная мощность процессора.
В этой статье мы рассмотрим несколько способов решения этой задачи с помощью привычных системных утилит и более сложных инструментов.
Как посмотреть загрузку процессора в Linux
1. Утилита htop
Самый простой способ узнать насколько процессор загружен в данный момент — воспользоваться утилитой htop. Она показывает не только процент загрузки по каждому ядру процессора отдельно, но и позволяет найти процессы, которые нагружают систему больше всего. Для установки htop в Debian или Ubuntu выполните:
sudo apt install htop
А в CentOS или REHL:
sudo yum install htop
Главное окно программы выглядит вот так:

Здесь в верхней части окна выводится загрузка ядер процессора в виде наглядных шкал, а ниже процессы. В данном примере у процессора 12 ядер и каждое из них загружено не больше чем на один процент.
2. Файл /proc/loadavg
Если надо сориентироваться какая была нагрузка на процессор в последнее время, тут htop не поможет. Можно воспользоваться файлом /proc/loadavg. Его создаёт ядро и в нём содержится информация о средней нагрузке за одну, пять и пятнадцать минут. Но обратите внимание, данные, находящиеся в этом файле не такие однозначные. Во первых, это не проценты, во вторых, они отображают не нагрузку на процессор, а нагрузку на систему в целом.
Первые три значения в этом файле означают среднее количество процессов или потоков, которые выполняются, находятся в очереди на выполнение или ждут завершения операций ввода/вывода за 1, 5 и 15 минут. Вот:

Обычно, если значение больше единицы — значит нагрузка уже большая и надо разбираться почему. Если значение за минуту меньше значений за пять и пятнадцать минут — нагрузка падает, если больше — растёт. Таким образом можно немного сориентироваться насколько загружена ваша система. Эти значения можно использовать для общего ориентирования или отправки уведомлений на почту, а для разбора полётов уже применять другие метрики и программы.
Четвертое значение здесь — это количество процессов — выполняемых в данный момент, обычно соответствует количеству процессоров, следующее число через слеш — это общее количество таких процессов в системе. Последнее значение — PID последнего созданного процесса.
3. Утилита mpstat
Утилита mpstat позволяет посмотреть подробную статистику по использованию процессора. Можно посмотреть не только информацию по каждому из ядер, но и куда используются ресурсы — на ввод/вывод, ядро или программы пространства пользователя. Для установки программы в Ubuntu или Debian выполните:
sudo apt install sysstat
В CentOS или REHL:
sudo yum install sysstat
Для просмотра общей информации выполните такую команду:

А для просмотра подробностей по каждому ядру процессора используйте опцию -P с параметром ALL:

Вот значения колонок в выводе этой программы:
- CPU — номер ядра процессора;
- %usr — потребление программами пространства пользователя;
- %nice — потребление ресурсов в процентах программами в пространстве пользователя с повышенным приоритетом;
- %sys — потребление ресурсов процессора ядром;
- %iowait — затраты на ожидание ввода/вывода;
- %irq — ресурсы, потраченные на прерывания для работы с аппаратным обеспечением;
- %soft — ресурсы, потраченные на программные прерывания;
- %steal — украденные процессорные ресурсы, актуально для виртуальных машин;
- %guest — ресурсы, потраченные на работу виртуального процессора;
- %idle — неиспользованные ресурсы.
Как видите, в данном случае нагрузка на процессор не достигает даже трех процента для некоторых ядер.
4. Команда nmon
Утилита nmon позволяет выводить данные, в виде, похожем на htop, но только немного подробнее. Для установки её в Ubuntu и Debian выполните:
sudo apt install nmon
Для установки в CentOS или REHL:
sudo yum install nmon
После запуска надо нажать кнопку c для того чтобы отобразить информацию о нагрузке на ядра процессора:

Здесь кроме наглядной шкалы по каждому ядру выводится информация в процентах по таким показателям:
- User% — ресурсы, потраченные программами в пространстве пользователя;
- Sys% — ресурсы, потраченные ядром;
- Wait% — ресурсы, которые идут на ожидание ввода/вывода;
Здесь уже можно сориентироваться насколько всё загружено и в чём проблема.
5. CoreFreq
Если всей полученной ранее информации о производительности вам мало, можно воспользоваться утилитой CoreFreq. Её нет в официальных репозиториях, поэтому придется собирать программу из исходников. Но зато она имеет свой модуль ядра, который устанавливает свои счетчики производительности в ядре и возвращает утилите наиболее подробные данные. Сначала установите необходимые компоненты. В Ubuntu:
sudo apt install dkms git libpthread-stubs0-dev
В CentOS или REHL:
sudo yum group install ‘Development Tools’
Затем скачайте репозиторий утилиты с GitHub и соберите её:
git clone https://github.com/cyring/CoreFreq.git
Загрузите модуль ядра такой командой:
sudo insmod corefreqk.ko
Запустите её сервис:
Затем запускайте программу:

Вверху программы отображается информация о процессоре, ниже шкалы с загруженностью каждого ядра, а её ниже различные показатели по каждому ядру: частота — Freq, ускорение — Turbo, C0-C7 — значения состояний C-State процессора. В данном примере, большинство ядер процессора работают на минимальной частоте и большую часть времени находятся в состоянии C1. Это состояние означает, что ядро не активно, но может в любой момент перейти к выполнению инструкций. Состояние C0 — означает, что ядро активно и выполняет какие-то действия.
С помощью этой утилиты вы сможете узнать максимально подробную информацию о загрузке процессора и о самом процессоре в целом.
Выводы
В этой небольшой статье мы рассмотрели как определяется загрузка процессора Linux с помощью различных утилит. Как системных, так и сторонних. А какие утилиты для таких целей используете вы? Напишите в комментариях!