Главная >> Инструкции >> Загрузка процессора 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 с помощью различных утилит. Как системных, так и сторонних. А какие утилиты для таких целей используете вы? Напишите в комментариях!

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 его по-умолчанию нет (??), хотя его позиционируют для старых ПК, а там как раз часто возникает потребность понимать, что комп перегружен, не переключаясь и не сворачивая окна.

    Ответить

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