Главная >> Инструкции >> Загрузка процессора Linux

Загрузка процессора 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 минут. Вот:

cat /proc/loadavg

Обычно, если значение больше единицы - значит нагрузка уже большая и надо разбираться почему. Если значение за минуту меньше значений за пять и пятнадцать минут - нагрузка падает, если больше - растёт. Таким образом можно немного сориентироваться насколько загружена ваша система.  Эти значения можно использовать для общего ориентирования или отправки уведомлений на почту, а для разбора полётов уже применять другие метрики и программы.

Четвертое значение здесь - это количество процессов - выполняемых в данный момент, обычно соответствует количеству процессоров, следующее число через слеш - это общее количество таких процессов в системе. Последнее значение - PID последнего созданного процесса.

3. Утилита mpstat

Утилита mpstat позволяет посмотреть подробную статистику по использованию процессора. Можно посмотреть не только информацию по каждому из ядер, но и куда используются ресурсы - на ввод/вывод, ядро или программы пространства пользователя. Для установки программы в Ubuntu или Debian выполните:

sudo apt install sysstat

В CentOS или REHL:

sudo yum install sysstat

Для просмотра общей информации выполните такую команду:

mpstat

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

mpstat -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

Затем запустите:

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

cd CoreFreq

make

Загрузите модуль ядра такой командой:

sudo insmod corefreqk.ko

Запустите её сервис:

./corefreqd &

Затем запускайте программу:

./corefreq-cli

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

С помощью этой утилиты вы сможете узнать максимально подробную информацию о загрузке процессора и о самом процессоре в целом.

Выводы

В этой небольшой статье мы рассмотрели как определяется загрузка процессора Linux с помощью различных утилит. Как системных, так и сторонних. А какие утилиты для таких целей используете вы? Напишите в комментариях!

Pеклама
Посмотреть детали

Anubis – это максимально легкое open-source решение, созданное специально для защиты небольших веб-ресурсов от бесконечного потока запросов от ботов и AI парсеров. Этот инструмент можно считать "ядерным вариантом", потому что он заставляет ботов выполнять вычисления похожие на майнинг криптовалюты. Но это неплохая альтернатива для тех, кто не может или не хочет использовать Cloudflare. Посмотреть детали

9 комментариев к “Загрузка процессора Linux”

  1. ~/CoreFreq $ make
    cc -Wall -pthread -c corefreqd.c -o corefreqd.o
    corefreqd.c:8:20: fatal error: stdlib.h: Нет такого файла или каталога
    compilation terminated.
    Makefile:19: ошибка выполнения рецепта для цели «corefreqd.o»
    make: *** [corefreqd.o] Ошибка 1

    Ответить
    • sudo apt install linux-source
      Естесственно зависит от дистрибутива, но суть понятна - исходники своего линукс ядра Вам надо загрузить и будет Вам stdlib.h, stdio.h, unistd.h и т.д.

      Кстати: на i7-640M утилита безбожно врёт частоту ядер....нет, я конечно, в отличии от предыдущих высказывателей сначала прочитал README.md:
      CoreFreq is a CPU monitoring software designed for 64-bits Processors w/ architectures Intel Atom, Core2, Nehalem, SandyBridge and superior; AMD Families 0Fh, 17h (Zen)

      Ответить
  2. Здравствуйте!

    Есть ли подобная утилита для контроля интернет-трафика? Допустим, сколько мбит в данный момент потребляется из общего канала.

    Ответить
  3. Честно говоря, нашел статью в попытке найти индикатор текущей загрузки CPU в трее своего Linux Lite (XFCE). Огорчился, что здесь данный вариант не рассмотрен. Уже нашел подсказку на другом сайте, вот предлагаю упомянуть тут, на своём любимом сайте про Linux:
    sudo apt-get install xfce4-cpugraph-plugin
    P.S. Понимаю, что GUI это не ортодоксально, но многие пользователи работают именно в GUI, и ищут именно такие решения, так что прошу осветить. В Linux Lite его по-умолчанию нет (??), хотя его позиционируют для старых ПК, а там как раз часто возникает потребность понимать, что комп перегружен, не переключаясь и не сворачивая окна.

    Ответить

Оставьте комментарий