Linux посмотреть загрузку процессора
Объем памяти, размер кеша, скорость чтения и записи на диск, скорость и доступность вычислительной мощности – это ключевые элементы, влияющие на производительность любой инфраструктуры.
Данное руководство ознакомит с базовыми понятиями мониторинга CPU. Вы узнаете, как использовать утилиты uptime и top, чтобы узнать о нагрузке и использовании ЦП.
Основные понятия
Прежде чем приступить к работе с утилитами, нужно понять, как измеряется использование ЦП и к каким результатам нужно стремиться.
2. vmstat - статистика памяти
Эта команда показывает подробную информацию о памяти, процессах, страницах памяти, операциях ввода/вывода и нагрузке на процессор.
Цифра три, значит, что информация будет выводиться каждые три секунды. В первом отчете содержится вся информация, накопленная с момента запуска системы, во всех последующих за интервал между вызовами утилиты. С полем memory и swap все понятно, они отображают состояние памяти, куда интереснее следующие поля.
Колонка bi показывает количество операций чтения с диска, а bo - вывода на диск. Колонки us и sy показывают загрузку процессора пользовательскими процессами и процессами системы соответственно, id отображает время простоя в процентах, во время ожидания работы диска. Колонки si и so отображают количество запросов записи и выгрузки страниц из swap.
Сокращение wa обозначает количество операций ввода/вывода, которые ждут своей очереди. В разделе procs, колонка r показывает количество процессов, ждущих своей очереди для выполнения на процессоре, а колонка b показывает процессы ждущие окончания дисковых операций. В колонке system, in - число выполненных прерываний, cs - число переключения контекста процессора в секунду.
Загрузка и использование ЦП
Загрузка (CPU Load) и использование процессора (CPU Utilization) – два разных способа взглянуть на использование вычислительной мощности компьютера.
Чтобы оценить основное различие между ними, попробуйте представить, что процессоры – это кассиры в продуктовом магазине, а задачи – это клиенты, которых нужно обслужить. Загрузка процессора – это, по сути, одна очередь, в которой клиенты ждут, пока освободиться один из кассиров. Нагрузка – это в данном случае количество клиентов в очереди, включая тех, что уже на кассе. Чем длиннее очередь, тем дольше ждать.
Использование ЦП оценивает исключительно занятость кассиров и не знает, сколько клиентов в очереди.
Если говорить конкретнее, задачи создают очередь за ресурсами процессоров. Когда подходит очередь той или иной задачи, она должна получить определенное количество времени обработки. Если задача была выполнена, он снимается; в противном случае она возвращается в конец очереди. После этого обрабатывается следующая задача в очереди.
Загрузка ЦП – это длина очереди запланированных задач, включая те, что находятся в обработке. Задачи могут переключаться в пределах миллисекунд, поэтому один снапшот загрузки не так полезен, как среднее значение из нескольких снапшотов, взятых за определенный период времени. Потому загрузка ЦП часто представляется как среднее значение.
Загрузка процессора отображает спрос на процессорное время. Высокий спрос может привести к сбоям и ухудшению производительности.
Использование ЦП сообщает, насколько загружены процессоры, не беря во внимание количество ожидающих задач. Мониторинг использования ЦП может отображать тенденции во времени, выделять пики использования процессора и выявлять нежелательную активность на сервере.
Как посмотреть загрузку процессора в Linux
5. CoreFreq
Если всей полученной ранее информации о производительности вам мало, можно воспользоваться утилитой CoreFreq. Её нет в официальных репозиториях, поэтому придется собирать программу из исходников. Но зато она имеет свой модуль ядра, который устанавливает свои счетчики производительности в ядре и возвращает утилите наиболее подробные данные. Сначала установите необходимые компоненты. В Ubuntu:
sudo apt install dkms git libpthread-stubs0-dev
В CentOS или REHL:
sudo yum group install 'Development Tools'
Затем скачайте репозиторий утилиты с GitHub и соберите её:
Загрузите модуль ядра такой командой:
sudo insmod corefreqk.ko
Запустите её сервис:
Затем запускайте программу:
Вверху программы отображается информация о процессоре, ниже шкалы с загруженностью каждого ядра, а её ниже различные показатели по каждому ядру: частота - Freq, ускорение - Turbo, C0-C7 - значения состояний C-State процессора. В данном примере, большинство ядер процессора работают на минимальной частоте и большую часть времени находятся в состоянии C1. Это состояние означает, что ядро не активно, но может в любой момент перейти к выполнению инструкций. Состояние C0 - означает, что ядро активно и выполняет какие-то действия.
С помощью этой утилиты вы сможете узнать максимально подробную информацию о загрузке процессора и о самом процессоре в целом.
10. pmap - память процесса
Утилита позволяет узнать по какому адресу в памяти загружены компоненты процесса, различные библиотеки и т д. Для работы нужно передать программе PID:
Рассмотрим несколько колонок:
- mapped - количество памяти, в которую загружены файлы;
- writeable/private - размер защищенного адресного пространства;
- shared - общее пространство, для нескольких процессов.
Утилита top
Как и uptime, утилита top доступна как в Linux, так и в Unix-системах, но помимо отображения средних значений нагрузки для заданных временных интервалов она предоставляет информацию о потреблении ЦП в реальном времени, а также другие полезные показатели производительности. Если uptime запускается и сразу завершает работу, top работает на переднем плане и регулярно обновляется.
Заглавный блок
Первые пять строк содержат сводную информацию о процессах на сервере:
top - 18:31:30 up 1 day, 3:17, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 114 total, 1 running, 113 sleeping, 0 stopped, 0 zombie
%Cpu(s): 7.7 us, 0.0 sy, 0.0 ni, 92.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.1 st
KiB Mem : 4046532 total, 3238884 free, 73020 used, 734628 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 3694712 avail Mem
Первая строка почти идентична выводу утилиты uptime. Здесь показаны средние значения за одну, пять и пятнадцать минут. Эта строка отличается от вывода uptime только тем, что вначале указывается утилита top и время последнего обновления данных.
Вторая строка предоставляет краткий обзор состояния задач: общее количество процессов, количество запущенных, спящих, остановленных и зависших процессов.
Третья строка говорит об использовании ЦП. Эти цифры нормируются и отображаются в процентах (без символа %), так что все значения в этой строке должны составлять до 100% независимо от количества процессоров.
Четвертая и пятая строки сообщают об использовании памяти и swap соответственно.
После заглавного блока следует таблица с информацией о каждом отдельном процессе, которую мы вскоре рассмотрим.
В нижеприведенном заглавном блоке среднее значение загрузки за одну минуту превышает число процессоров на .77, что указывает на короткую очередь с небольшим временем ожидания. Общая емкость процессора используется на 100%, и есть много свободной памяти.
top - 14:36:05 up 23:22, 2 users, load average: 2.77, 2.27, 1.91
Tasks: 117 total, 3 running, 114 sleeping, 0 stopped, 0 zombie
%Cpu(s): 98.3 us, 0.2 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.2 si, 1.3 st
KiB Mem : 4046532 total, 3244112 free, 72372 used, 730048 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 3695452 avail Mem
. . .
Давайте рассмотрим подробнее все компоненты строки CPU.
- us, user: время на un-niced процессы пользователя. Эта категория относится к пользовательским процессам, которые были запущены без явного приоритета планирования. Системы Linux используют команду nice для установки приоритета планирования процесса. «un-niced» означает, что приоритет по умолчанию не менялся с помощью nice. Значения user и nice учитывают все пользовательские процессы. Высокое использование ЦП в этой категории может указывать на неконтролируемый процесс. Вывод в таблице процессов может определить, действительно ли это так.
- sy, system: системные процессы. Большинство приложений имеют как пользовательские компоненты, так и компоненты ядра. Когда ядро Linux создает системные вызовы, проверяет привилегии или взаимодействует с устройствами от имени приложения, здесь отображается использование процессора. Когда процесс выполняется не ядром, он будет отображаться либо в показателе user, либо в nice, если его приоритет был задан с помощью nice.
- ni, nice: niced процессы пользователя. Как и user, это поле отображает задачи, не связанные с ядром. В отличие от user, приоритет планирования для этих задач был установлен с помощью nice. Уровень приоритета (niceness) процесса указан в четвертом столбце таблицы процессов в заголовке NI. Процессы со значением niceness от 1 до 20 имеют пониженный приоритет. Такие процессы, потребляющие много процессорного времени, обычно не создают проблем, потому что задачи с повышенным приоритетом получат вычислительную мощность своевременно. Однако, если задачи с повышенным приоритетом (между -1 и -20) занимают непропорциональное количество CPU, они могут легко повлиять на отзывчивость системы. Обратите внимание, что многие процессы с самым высоким приоритетом планирования (-19 или -20 в зависимости от системы) порождаются ядром для выполнения важных задач, которые влияют на стабильность системы. Если вы не уверены, что точно знаете все процессы, указанные в выводе, лучше исследуйте их, но не останавливайте.
- Id, idle: время, затраченное на обработчик простоя ядра. Этот показатель отображает процент времени, в течение которого ЦП был доступен и простаивал. Считается, что система разумно использует ЦП, если сумма user, nice и idle близка к 100%.
- wa, IO-wait: время ожидания завершения ввода-вывода. Показатель сообщает, когда процессор начал операцию чтения или записи и ожидает завершения операции ввода-вывода. Задачи чтения и записи для удаленных ресурсов (таких как NFS и LDAP) будут также учитываться. Как и в строке idle, прыжки здесь считаются нормой. Но если показатель сообщает о частых или продолжительных обработках, это может указывать на зависшую задачу или потенциальную проблему с жестким диском.
- hi: время на бслуживание аппаратных прерываний. Это время, затрачиваемое на физические прерывания, отправленные на процессор с периферийных устройств (дисков и аппаратных сетевых интерфейсов). Если значение аппаратного прерывания велико, одно из периферийных устройств может работать неправильно.
- si: время, затраченное на обслуживание программных прерываний. Программные прерывания отправляются процессами, а не физическими устройствами. В отличие от аппаратных прерываний, которые происходят на уровне ЦП, программные прерывания происходят на уровне ядра. Если этот показатель сообщает о высоком использовании вычислительной мощности, исследуйте процессы, которые используют CPU.
- st: время, которое использовал гипервизор. Значение steal сообщает, как долго виртуальный процессор ожидает ответа физического процессора, когда гипервизор обслуживает свои задачи или другой виртуальный процессор. По сути, объем использования ЦП в этом поле указывает, сколько мощности для обработки виртуальной машины готово к использованию, но недоступно приложению, поскольку оно используется физическим хостом или другой виртуальной машиной. Как правило, нормой значения steal считается до 10% в течение коротких периодов времени. Большее значение steal в течение более длительного периода времени указывает на то, что физический сервер имеет больший спрос на CPU, чем он может предоставить.
Таблица процессов
Все процессы, выполняемые на сервере, независимо от их состояния перечисляются под заглавным блоком вывода. Ниже приведены первые шесть строк таблицы процессов из предыдущего примера. По умолчанию таблица процессов сортируется по% CPU, поэтому в начале находятся процессы, которые потребляют больше CPU.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9966 8host 20 0 9528 96 0 R 99.7 0.0 0:40.53 stress
9967 8host 20 0 9528 96 0 R 99.3 0.0 0:40.38 stress
7 root 20 0 0 0 0 S 0.3 0.0 0:01.86 rcu_sched
1431 root 10 -10 7772 4556 2448 S 0.3 0.1 0:22.45 iscsid
9968 root 20 0 42556 3604 3012 R 0.3 0.1 0:00.08 top
9977 root 20 0 96080 6556 5668 S 0.3 0.2 0:00.01 sshd
.
Столбец %CPU представлен как процентное значение, но он не нормируется, поэтому в этой двухъядерной системе общее количество всех значений в таблице процессов должно составлять до 200%, если оба процессора полностью используются.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10081 8host 20 0 9528 96 0 R 50.0 0.0 0:49.18 stress
10082 8host 20 0 9528 96 0 R 50.0 0.0 0:49.08 stress
1439 root 20 0 223832 27012 14048 S 0.2 0.7 0:11.07 snapd
1 root 20 0 39832 5868 4020 S 0.0 0.1 0:07.31 systemd
Заключение
Теперь вы умеете работать с утилитами uptime и top и интерпретировать их вывод.
В одной из предыдущих статей я рассказывал как пользоваться утилитой ps для просмотра информации о запущенных процессах в Linux. Однако для решения подобных задач существуют и более продвинутые инструменты. Один из таких инструментов - это команда top. Она немного проще чем та же утилита htop, но в отличие от ps позволяет выводить информацию о системе, а также список процессов динамически обновляя информацию о потребляемых ими ресурсах.
В этой статье мы разберемся как пользоваться утилитой top, рассмотрим опции её запуска, а также интерактивные команды, которые вы можете использовать во время работы программы. Кроме того, разберем несколько примеров.
2. Файл /proc/loadavg
Если надо сориентироваться какая была нагрузка на процессор в последнее время, тут htop не поможет. Можно воспользоваться файлом /proc/loadavg. Его создаёт ядро и в нём содержится информация о средней нагрузке за одну, пять и пятнадцать минут. Но обратите внимание, данные, находящиеся в этом файле не такие однозначные. Во первых, это не проценты, во вторых, они отображают не нагрузку на процессор, а нагрузку на систему в целом.
Первые три значения в этом файле означают среднее количество процессов или потоков, которые выполняются, находятся в очереди на выполнение или ждут завершения операций ввода/вывода за 1, 5 и 15 минут. Вот:
Обычно, если значение больше единицы - значит нагрузка уже большая и надо разбираться почему. Если значение за минуту меньше значений за пять и пятнадцать минут - нагрузка падает, если больше - растёт. Таким образом можно немного сориентироваться насколько загружена ваша система. Эти значения можно использовать для общего ориентирования или отправки уведомлений на почту, а для разбора полётов уже применять другие метрики и программы.
Четвертое значение здесь - это количество процессов - выполняемых в данный момент, обычно соответствует количеству процессоров, следующее число через слеш - это общее количество таких процессов в системе. Последнее значение - PID последнего созданного процесса.
4. Команда nmon
Утилита nmon позволяет выводить данные, в виде, похожем на htop, но только немного подробнее. Для установки её в Ubuntu и Debian выполните:
sudo apt install nmon
Для установки в CentOS или REHL:
sudo yum install nmon
После запуска надо нажать кнопку c для того чтобы отобразить информацию о нагрузке на ядра процессора:
Здесь кроме наглядной шкалы по каждому ядру выводится информация в процентах по таким показателям:
- User% - ресурсы, потраченные программами в пространстве пользователя;
- Sys% - ресурсы, потраченные ядром;
- Wait% - ресурсы, которые идут на ожидание ввода/вывода;
Здесь уже можно сориентироваться насколько всё загружено и в чём проблема.
Navicat Monitor
Другой пример — Navicat Monitor, который специализируется на мониторинге баз данных. Он поддерживает MySQL, MariaDB, SQL Server, а также облачные СУБД, такие как Amazon RDS, Amazon Aurora, Oracle Cloud, Google Cloud и Microsoft Azure.
Стандартный вид
Компактный вид
Монитор отслеживает время выполнения конкретных запросов, запуская их с заданным интервалом.
Кроме запросов к БД, периодически отправляются и другие запросы к серверам для мониторинга показателей производительности системы ввода-вывода, сети и проч. Собирается статистика по использованию CPU, загрузке памяти и другие стандартные метрики.
Архитектура Navicat Monitor не предусматривает установку программного обеспечения на объекты мониторинга
Минимальная цена Navicat Monitor — $32,99 за один токен в месяц (один токен соответствует мониторингу одного сервера или четырёх баз Azure). Есть полнофункциональная пробная версия на 14 дней.
Zabbix
Zabbix — это бесплатный опенсорсный инструмент, который отслеживает состояние сети, приложений и самого сервера. Поставляется с готовыми шаблонами для мониторинга популярных серверов и ОС, включая HP, IBM, Lenovo, Dell, Linux-серверы, Ubuntu и Solaris. За годы существования Zabbix сообщество подготовило шаблоны для различных сценариев.
Ключевые модули Zabbix следят за нагрузкой CPU, использованием памяти, уровнем ошибок ввода-вывода, свободным местом на диске, статусе вентиляторов, температурой и характеристиками системы питания. Сетевой модуль проверяет трафик, доступность сети, уровень потерь пакетов, качество TCP-соединений и пропускную способность маршрутизаторов.
Zabbix ведёт список установленного программного обеспечения и версий прошивок, чтобы сигнализировать о несанкционированной установке ПО.
Системный администратор может запрограммировать в Zabbix уведомления по произвольным условиям, а также изменить важность действующих уведомлений. На панели управления можно добавить пользователей — и направлять каждому из них определённые типы уведомлений, а скрипты автоматизации позволяют автоматически заводить задачи и присваивать их сотрудникам.
Благодаря функции удалённого доступа и управления Zabbix можно назвать хорошим инструментом администрирования сервера.
Надёжный сервер в аренду и правильный выбор тарифного плана позволят меньше отвлекаться на неприятные уведомления мониторинга — всё будет работать без сбоев и с очень высоким uptime!
7. Цветной вывод
По умолчанию команда top выводит всё в чёрно-белом цвете, однако вы можете включить цветной вывод. Для этого нажмите клавишу z:
Как я уже говорил, у каждого окна данных есть своя цветовая схема, вы можете настроить их под себя. Для этого надо использовать команду Z:
Здесь каждому элементу цветовой схемы отведена своя буква в верхнем регистре, а цвету - в нижнем. Сначала надо выбрать элемент, затем цвет для него. Когда завершите нажмите w для сохранения и редактирования цветовой схемы следующего окна или Enter для сохранения и выхода.
Выводы
Из этой статьи вы узнали что из себя представляет команда top Linux. Как видите, утилита довольно мощная, хотя при первом запуске сложно подумать что она столько всего может и будет выглядеть настолько красиво если её настроить. Но я всё же привык к старой доброй ps. А какой утилитой пользуетесь вы для просмотра запущенных процессов? Напишите в комментариях!
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.
Чтобы узнать хватает ли мощности процессора вашему серверу или компьютеру надо посмотреть загрузку процессора в данный момент или за последнее время. Это значение показывает на сколько процентов используется вычислительная мощность процессора.
В этой статье мы рассмотрим несколько способов решения этой задачи с помощью привычных системных утилит и более сложных инструментов.
Ненормированные и нормированные значения
В одной процессорной системе общая емкость всегда равна 1. В многопроцессорной системе данные могут отображаться двумя разными способами. Суммарная емкость всех процессоров рассчитывается как 100% независимо от количества процессоров, такое значение считается нормированным. Другой вариант предлагает считать каждый процессор как единицу, так что 2-процессорная система в полном объеме имеет емкость 200%, 4-процессорная система в полном объеме имеет мощность 400% и т. д.
Чтобы правильно интерпретировать загрузку или использование CPU, нужно знать количество процессоров на сервере.
Выводы
Вот и все, теперь вы знаете программы слежения за компьютером linux и сможете поддерживать свою систему в нормальном состоянии. С помощью этих утилит намного проще решать проблемы с системой, чем пытаться наугад понять почему все глючит или не работает. А какие команды мониторинга linux используете вы? Узнали для себя что-то новое из статьи? Напишите в комментариях!
На завершение 15 малоизвестных и полезных команд терминала:
Есть много полезных инструментов, которые помогают отслеживать нагрузку на сервер, начиная с утилит Linux и заканчивая специализированными службами.
Простые утилиты Linux показывают текущее потребление памяти для каждого процесса, нагрузку на CPU, свободное место на диске и статистику по трафику.
Кроме того, есть платные и бесплатные сервисы, которые круглосуточно отслеживают состояние вашего сервера, регистрируют сбои в его работе или в сетевой доступности, а также проверяют производительность приложений.
8. sar - активность системы
Утилита sar позволяет собирать и сохранять информацию о работе системы в любое время. Вы можете сохранить такие параметры, как загрузка системы, нагрузка на процессор, скорость работы с диском и другое.
Чтобы посмотреть сохраненную в логах информацию за все время используйте:
sar -n DEV | more
Также вы можете вывести только данные за последние 24 часа:
sar -n DEV -f /var/log/sa/sa24 | more
Или смотреть статистику в реальном времени:
Место на диске
Стандартная утилита для просмотра информации о смонтированных разделах — это df . Она выводит список подключенных устройств и информацию о занятом месте.
По умолчанию выдача в байтах, что не очень удобно. Параметр -h активирует выдачу в мегабайтах и гигабайтах:
Для просмотра всего места на всех дисках добавляем опцию --total .
Утилита df позволяет быстро получить общий обзор. Для более детальной информации лучше подходит программа du , которая анализирует текущую директорию и любые поддиректории. Выдача по умолчанию выглядит так:
Опять же, более удобная для восприятия выдача включается ключом -h .
Просмотр размеров файлов и директорий включается флагом -a , общий итог — флагами -c (подробности и сумма) и -s (только сумма).
Улучшенные версии
Улучшенные версии df и du называются pydf и ncdu, на Ubuntu они устанавливаются командами apt-get install pydf и apt-get install ncdu . Они организуют красивую выдачу в псевдографике с расцветкой:
Здесь можно перемещаться по файловой системе клавишами со стрелками.
1. Опции и команды top
Опций запуска у команды не много и использовать их активно не принято, потому что большинство действий выполняются с помощью интерактивных команд. Вот основные опции:
- -v - вывести версию программы;
- -b - режим только для вывода данных, программа не воспринимает интерактивных команд и выполняется пока не будет завершена вручную;
- -c - отображать полный путь к исполняемым файлам команд;
- -d - интервал обновления информации;
- -H - включает вывод потоков процессов;
- -i - не отображать процессы, которые не используют ресурсы процессора;
- -n - количество циклов обновления данных, после которых надо закрыть программу;
- -o - поле, по которому надо выполнять сортировку;
- -O - вывести все доступные поля для сортировки;
- -p - отслеживать только указанные по PID процессы, можно указать несколько PID;
- -u - выводить только процессы, запущенные от имени указанного пользователя.
С опциями запуска всё, теперь давайте поговорим про интерактивные команды, которые вы можете выполнять во время работы программы.
- h - вывод справки по утилите;
- q или Esc - выход из top;
- A - выбор цветовой схемы;
- d или s - изменить интервал обновления информации;
- H - выводить потоки процессов;
- k - послать сигнал завершения процессу;
- W - записать текущие настройки программы в конфигурационный файл;
- Y - посмотреть дополнительные сведения о процессе, открытые файлы, порты, логи и т д;
- Z - изменить цветовую схему;
- l - скрыть или вывести информацию о средней нагрузке на систему;
- m - выключить или переключить режим отображения информации о памяти;
- x - выделять жирным колонку, по которой выполняется сортировка;
- y - выделять жирным процессы, которые выполняются в данный момент;
- z - переключение между цветным и одноцветным режимами;
- c - переключение режима вывода команды, доступен полный путь и только команда;
- F - настройка полей с информацией о процессах;
- o - фильтрация процессов по произвольному условию;
- u - фильтрация процессов по имени пользователя;
- V - отображение процессов в виде дерева;
- i - переключение режима отображения процессов, которые сейчас не используют ресурсы процессора;
- n - максимальное количество процессов, для отображения в программе;
- L - поиск по слову;
- <> - перемещение поля сортировки вправо и влево;
Это далеко не все команды top, но их будет вполне достаточно для начала работы, а остальные вы сможете найти в официальной документации по утилите.
Требования
- Сервер Linux.
- Утилиты uptime и top должны быть установлены по умолчанию. Если это не так, установите их вручную.
11. Инспектирование процессов
Ещё одна интересная возможность команды top - это инспектирование процессов. Для того чтобы эта функция заработала надо сначала открыть файл ~/.toprc и добавить в конец такие строки:
pipe Open Files lsof -P -p %d 2>&1
file NUMA Info /proc/%d/numa_maps
pipe Log tail -n200 /var/log/syslog | sort -Mr
После этого перезапустите top и нажмите сочетание клавиш Shift+y.
Утилита попросит ввести PID процесса, который надо инспектировать. После этого откроется новое псевдоокно в котором можно выбрать три вкладки:
Для выбора вкладки нажмите Enter. Затем можете просматривать нужные данные, чтобы вернуться обратно ещё раз нажмите Enter.
15. starce - системные вызовы
Эта утилита позволяет выполнять трассировку системных вызовов и сигналов. Мониторинг linux может быть полезен для отладки веб-сервера или других проблем в системе.
5. ps - отображение процессов
Не всем подходит интерактивная утилита top, для некоторых случаев необходимо использовать ps. Чтобы вывести все процессы используйте опцию -A или -e
Для получения большего количества информации используйте опцию -l:
Для максимально полного вывода используйте такую команду:
Отображаем еще и потоки процессов:
Вывести потоки сразу после процессов:
Список процессов с потоками в виде дерева:
Отобразить информацию о безопасности:
Вывести только нужный процесс:
Или отобразить только процессы нужного пользователя:
2. Запуск программы
Утилита не всегда установлена по умолчанию, для её установки в Ubuntu используйте команду:
sudo apt install top
Затем для запуска просто выполните в терминале:
Окно можно условно разделить на две части. В верхней части находится информация о системе, общем использовании ресурсов процессора и памяти, раздела подкачки, и так далее. В нижней части окна расположен список запущенных процессов с информацией, отсортированных по определённому полю.
Если все процессы не помещаются на одном экране, их можно листать с помощью стрелок вверх и вниз. Если не помещаются все колонки - с помощью стрелок вправо и влево:
Если вы хотите отображать только те процессы, которые используют ресурсы процессора используйте команду i:
Использование памяти
Самый простой способ просмотра текущего использования оперативной памяти — команда free . Выдача без опций выглядит таким образом:
Запуск с ключом -m генерирует выдачу в мегабайтах.
Средняя строка -/+ buffers/cache показывает значение используемой памяти минус сумма буферов/кэша, а также количество свободной памяти плюс сумма буферов/кэша.
Дело в том, что Linux как большинство современных ОС пытается использовать максимальный объём доступной оперативной памяти под буферы и кэш. Поэтому имеет значение вторая строка, которая показывает реальный объём потенциально доступной оперативной памяти для приложений, если игнорировать буферы и кэш. Этот объём будет освобождён автоматически, если он понадобится для приложений.
vmstat
Команда vmstat выводит различную информацию о системе, включая память, файл подкачки, операции ввода-вывода и нагрузку на CPU.
В первой колонке r указано количество активных процессов, во второй — количество процессов в состоянии непрерываемого ожидания.
Колонки si и so показывают объём памяти, которая считывается из файла подкачки и записывается в него, соответственно.
Далее показано количество блоков, которые получены или отправлены на устройство блочного ввода вывода (bi, bo), количество прерываний в секунду, включая таймер (in), количество переключений контекста в секунду (cs) и статистика по CPU: процент времени, затраченного на обработку кода в пользовательском пространстве (us), на обработку кода ядра (sy), в спящем состоянии (id) и ожидании ввода-вывода (wa), а также времени, «украденного» у виртуальной машины (st), то есть когда виртуальный CPU ожидает действия реального CPU, когда гипервизор обслуживает другой виртуальный процессор.
Флаг -S M активирует выдачу в мегабайтах. Запуск с опцией -s показывает общую статистику.
Если вам необходимо круглосуточно отслеживать состояние сервера (память, CPU, свободное место, производительность, время отклика и проч.), то можно воспользоваться бесплатным или платным сервисом мониторинга. Таких сервисов много, вот небольшой список в алфавитном порядке:
(бесплатная адаптация Nagios Core)
(бесплатная версия называется Nagios Core)
(бесплатно)
(бесплатный системный монитор)
Для примера, рассмотрим три относительно популярных сервиса для мониторинга.
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 - неиспользованные ресурсы.
Как видите, в данном случае нагрузка на процессор не достигает даже трех процента для некоторых ядер.
Сетевой трафик
nethogs
nethogs — самая простая утилита для просмотра, сколько трафика приходится на каждую службу. На Ubuntu утилита устанавливается следующей командой:
Затем её можно запустить без ключей. Выдача простая:
Есть всего несколько опций для изменения выдачи:
- m: переключение между kb/s, kb, b, mb
- r: сортировка по полученному трафику.
- s: сортировка по отправленному трафику
- q: выход
IPTraf
IPTraf — ещё один способ мониторинга сетевого трафика, с большим количеством опций. Установка на Ubuntu:
Эта утилита предлагает выбрать один из интерактивных интерфейсов:
Например, для обзора всего сетевого трафика выбираем первый пункт меню:
Чтобы IP-адреса резолвились в домены, нужно в конфигурации выбрать пункт 'Reverse DNS lookups'.
Вместе просмотром трафика по портам есть вариант просмотра трафика по сервисам (опция 'TCP/UDP service names'). С обеими включёнными опциями выдача будет выглядеть примерно так:
Есть ещё несколько других интерфейсов, которые можете изучить самостоятельно.
netstat
Утилита netstat — очень гибкий и мощный инструмент для сбора сетевой информации.
По умолчанию netstat выдаёт список открытых сокетов:
Если добавить опцию -a , он покажет список всех портов:
Флаги -t или -u фильтруют TCP- или UDP-соединения, соответственно. Флаг -s выводит статистику. Для постоянного обновления выдачи нужно запускать команду с ключом -c .
10. Завершение процессов
Чтобы завершить процесс используйте команду k. После ввода команды утилита попросит набрать PID идентификатор процесса, который надо завершить:
Можно оставить по умолчанию, тогда будет отправлен SIGTERM или же ввести любой другой код, например 9 для SIGKILL.
Команда top в Linux
8. Сохранение настроек
Все эти настройки не имели бы смысла, если бы их нельзя было сохранить для восстановления при следующем запуске. Для сохранения текущих настроек программы используйте команду W.
Она записывает все внесённые настройки в файл ~/.toprc и при следующем запуске они будут восстановлены.
Отображение информации о ЦП
Чтобы узнать количество процессоров, можно использовать команду nproc с опцией –all. Без этого флага команда отобразит количество обрабатывающих блоков, доступных для текущего процесса, что будет меньше общего количества процессоров.
В большинстве современных дистрибутивов Linux также можно использовать команду lscpu, которая отображает не только количество процессоров, но и архитектуру, имя модели, скорость и многое другое:
Знание точного количества процессоров важно для интерпретации результатов тех или иных утилит.
SolarWinds Server and Application Monitor
Один из самых продвинутых серверных мониторов на рынке — SolarWinds Server and Application Monitor (SAM). Хотя инструмент устанавливается только на Windows Server 2016+, но может отслеживать любое оборудование, в том числе Linux-серверы.
Монитор отслеживает производительность сервера, сообщает о проблемах, а также предоставляет некоторые возможности по управлению: позволяет перезапускать сервер, снимать процессы и перезапускать службы, то есть это инструмент не только для мониторинга, но и для администрирования.
Программа лучше подходит для крупных корпораций. Заявлена совместимость с серверами Dell PowerEdge, HP ProLiant, IBM eServer xSeries, Dell PowerEdge Blade, HP BladeSystem, Microsoft Windows Server и VMware vSphere. В то же время SAM мониторит и облачные инстансы AWS и Azure.
Он показывает статистику по времени отклика, загрузке CPU, памяти и др. Отслеживается производительность отдельных приложений: встроена поддержка более 1200 разных приложений. Также проверяется состояние оборудования: использование CPU, нагрузка на диски, энергопитание, статус вентиляторов и т. д. Статусы кодируются цветом от зелёного до красного, чтобы было легко оценить здоровье системы с первого взгляда.
Монитор автоматически определяет новое оборудование и программное обеспечение в вашем кластере, сразу добавляя его на панель мониторинга. Это одна из ключевых особенностей SAM, также как максимальная автоматизация — подготовленные шаблоны для автоматизации регулярных задач по мониторингу и обслуживанию, заготовки для отчётов и уведомлений.
Обычно у таких сервисов имеется бесплатный пробный период, а стоимость может зависеть от набора используемой функциональности. Здесь тоже есть пробный период, а стоимость SolarWinds Server and Application Monitor начинается от 1275 евро в минимальной функциональности.
5. Виртуальные окна
Программа имеет четыре окна для вывода данных. Так они называются в документации, но мне больше нравится название формат отображения. Это def, job, mem и usr. Каждое окно выделяется другим цветом в цветном режиме, а также содержит разный набор колонок. Для просмотра всех окон используйте команду A, а для переключения между ними - a:
Текущее окно отображается в левом верхнем углу.
Когда выберите нужное окно снова нажмите A, чтобы вернуться в обычный режим.
16. nethogs - анализ нагрузки на сеть
Это более простой анализатор загрузки сети, который показывает сколько и какая программа потребляет пропускной способности сети. Очень просто и быстро можно понять что именно ест весь трафик. Подробнее о nethogs смотрите здесь.
Требования
- Сервер Linux.
- Утилиты uptime и top должны быть установлены по умолчанию. Если это не так, установите их вручную.
1. Top - просмотр активных процессов
Программа показывает запущенные процессы и их характеристики в реальном времени. По умолчанию отображаются процессы, использующие больше всего ресурсов процессора. Кроме этого, вы можете увидеть в программе сколько она использует памяти, ядер процессора, и время работы процесса. Список обновляется каждые несколько секунд.
Давайте рассмотрим несколько горячих клавиш, которые будут вам полезны при работе с утилитой:
- t - отобразить общую информацию по всей системе;
- m - отобразить информацию о памяти;
- A - создает на одном экране несколько топов процессов по максимального потребления ресурсов. Может быть полезным для быстрого выявления самых ресурсоемких процессов;
- f - выводит интерактивный экран настройки, позволяет быстро найти определенную задачу;
- o - фильтры процессов;
- r - выполнить утилиту renice для текущего процесса, позволяет изменить приоритет процесса;
- k - выполнить утилиту kill для этого процесса;
- z - отключить цветной вывод.
Эта утилита будет незаменимой при отслеживании перегрузок системы, с помощью нее вы сможете очень быстро и просто выявить какая программа потребляет все ресурсы.
Мониторинг ЦП
Существует множество инструментов для получения данных о состоянии ЦП системы. Мы рассмотрим две команды: uptime и top. Обе утилиты являются частью стандартной установки большинства популярных дистрибутивов Linux и обычно используются для исследования загрузки и использования ЦП.
Примечание: Следующие примеры выполнены на 2-ядерном сервере.
Использование ресурсов
Один из самых инструментов для проверки использования ресурсов процессами. Утилита top выдаёт простую таблицу с текущим потреблением ресурсов, где сверху указаны процессы с наибольшей нагрузкой.
Непосредственно перед таблицей приводится некоторая общая статистика, включая среднюю нагрузку на CPU за последнюю минуту, 5 минут и 15 минут. Также показано потребление памяти, файла подкачки и состояние процессов.
Список обновляется в реальном времени: можете вывести его на второй монитор и наблюдать постоянно.
Хотя утилита top поставляется почти с каждым дистрибутивом, в большинстве репозиториев также доступна для скачивания улучшенная версия htop .
Установка htop на Ubuntu:
Здесь мы видим почти такую же выдачу, но с подсветкой разными цветами и более интерактивную:
Верхняя часть здесь яснее и лучше организована.
Вот некоторые ключи для более эффективного использования htop :
- M: сортировка процессов по использованию памяти
- P: сортировка процессов по использованию CPU
- ?: справка
- k: прекратить текущие/помеченные процессы
- F2: настройка (здесь можно выбрать опции для отображения)
- /: поиск процессов
13. tcpdump - анализ сетевого трафика
В отличие от предыдущей утилиты tcpdump позволяет анализировать содержимое всех пакетов, проходящих через определенный порт. Например, вы можете отслеживать всю информацию о запросах к DNS с помощью следующей команды:
tcpdump -i eth0 'udp port 53'
1. Утилита htop
Самый простой способ узнать насколько процессор загружен в данный момент - воспользоваться утилитой htop. Она показывает не только процент загрузки по каждому ядру процессора отдельно, но и позволяет найти процессы, которые нагружают систему больше всего. Для установки htop в Debian или Ubuntu выполните:
sudo apt install htop
А в CentOS или REHL:
sudo yum install htop
Главное окно программы выглядит вот так:
Здесь в верхней части окна выводится загрузка ядер процессора в виде наглядных шкал, а ниже процессы. В данном примере у процессора 12 ядер и каждое из них загружено не больше чем на один процент.
6. free - использование памяти
Эта утилита позволяет увидеть информацию о свободной, использованной и кэшированной памяти. а также пространстве подкачки:
Или в более понятном формате:
11. ss - монитор сетевых подключений
Утилита позволяет отобразить активные сетевые соединения, таблицу маршрутизации, замаскированные соединения, а также участие в широковещательных передачах. Также вы можете посмотреть информацию об открытых сокетах и портах. Как пользоваться утилитой читайте в статье команда ss в linux.
3. w - просмотр пользователей
Утилита w позволяет посмотреть что делают другие пользователи сейчас на этом компьютере. Вы увидите время их входа, номер консоли и даже команду, которую выполняет пользователь.
Здесь первая запись, тот терминал, в котором мы выполнили w, а вторая - другой терминал, в котором просто открыта оболочка bash.
3. Сортировка процессов
Чтобы выделить поле, по которому сейчас выполняется сортировка нажмите клавишу y. После этого вся колонка будет выделена жирным:
9. mpstat - статистика ядер процессора
Эта утилита показывает нагрузку на каждое ядро процессора отдельно. Просто выполните:
Утилита uptime
Команда uptime позволяет отследить загрузку процессора. Она может быть полезна, если система медленно реагирует на интерактивные запросы (вероятно, ей не хватает системных ресурсов).
Утилита uptime сообщает следующие данные:
- системное время в момент выполнения команды;
- как долго работает сервер;
- сколько подключений пользователей обслуживает машина;
- средняя загрузка процессора за последние одну, пять и пятнадцать минут.
uptime
14:08:15 up 22:54, 2 users, load average: 2.00, 1.37, 0.63
В этом примере команда была запущена в 14:08 на сервере, который работал почти 23 часа. При запуске uptime подключились два пользователя. Этот сервер имеет 2 процессора. За минуту до запуска команды средняя загрузка процессора была 2,00, что означает, что в течение этой минуты процессоры использовали в среднем две задачи, а ожидающих задач не было. Среднее значение загрузки з а5 минут указывает на то, что в течение некоторого интервала времени один из процессоров бездействовал около 60% времени. Среднее за 15 минут значение указывает на то, что было доступно больше времени обработки. Вместе эти три значения показывают увеличение загрузки за последние пятнадцать минут.
Утилита uptime сообщает полезные средние значения загрузки ЦП, но для того, чтобы получить более подробную информацию, нужно использовать top.
Выводы
В этой небольшой статье мы рассмотрели как определяется загрузка процессора Linux с помощью различных утилит. Как системных, так и сторонних. А какие утилиты для таких целей используете вы? Напишите в комментариях!
Любую операционную систему нужно держать под контролем, время от времени, отслеживать ее параметры, чтобы поддерживать все в нормальном состоянии и избежать возникновения серьезных и непредвиденных ошибок.
Операционная система Linux предлагает для этого множество инструментов. Вы можете отслеживать любые изменения в системе. Начиная от состояния процессора и запущенных процессов и до активности пользователей и состояния жесткого диска.
В этой статье мы рассмотрим программы слежения за компьютером Linux, которые будут полезны любому системному администратору, а также обычным пользователям. Большинство из утилит уже установлены в системе, и все что вам нужно, это только знать как ими пользоваться.
9. Фильтрация процессов
Чтобы отфильтровать процессы, запущенные от имени определённого пользователя используйте команду u:
После ввода команды она попросит ввести имя пользователя или его UID. Также можно фильтровать процессы по любому другому полю. Для этого нажмите клавишу o, затем введите условие фильтра в виде:
ИМЯ_ПОЛЯ = значение
Если вы выполните команду o ещё раз, то программа предложит создать ещё один фильтр. Чтобы сбросить фильтры используйте команду =.
4. Настройка полей
По умолчанию выводятся далеко не все поля, а только те, что чаще всего используются. Но вы можете включить вывод других полей, отключить не нужные, а также изменить порядок их расположения. Для этого введите команду F:
Откроется новое окно в псевдоинтерфейсе программы, в котором будут выведены все поля. Я не буду описывать поля в этой статье, поскольку я это сделал в статье про команду ps:
Поля, которые сейчас отображаются выделены жирным и отмечены звездочкой. Вы можете перемещаться по ним с помощью стрелок вверх или вниз. Для того чтобы добавить или убрать поле нажмите на нём d или пробел.
Для того чтобы переместить поле, нажмите на нём Enter, а затем стрелку вправо. После этого поле будет захвачено и вы сможете двигать его вверх или вниз. Затем надо отпустить поле на нужном месте с помощью клавиши Enter.
После завершения настройки можно вернуться обратно в интерфейс программы с помощью клавиши q.
7. iostat - активность диска
Утилита iostat показывает немного другую информацию. Здесь вы можете увидеть скорость чтения и записи с диска, а также общее количество прочитанных и записанных данных:
12. iptraf - сетевая статистика в реальном времени
Команда iptraf позволяет отслеживать работу локальной сети. Она основана на Ncurses, а это значит, что вы будете иметь интерактивный доступ ко всем данным. Это информация о передаваемых данных по протоколах TCP, UDP, ICMP и OSPF, нагрузка на Ethernet, статистика узлов, ошибки контрольных сумм IP и многое другое.
Оптимальные значения загрузки и использования ЦП
Оптимальное значение использования ЦП зависит от того, какую работу должен выполнять сервер. Стабильно высокое использование процессора негативно влияет на отзывчивость системы. Часто приложениям и пакетным заданиям с интенсивными вычислениями необходим весь или почти весь объем ЦП. Однако, если система должна обслуживать веб-страницы или поддерживать интерактивные сеансы сервисов (например, SSH), тогда может понадобиться свободная вычислительная мощность.
Как и во многих других аспектах производительности, ключом к оптимизации ресурсов является изучение потребностей сервисов системы и мониторинг непредвиденных изменений.
4. uptime - время работы
С помощью команды uptime вы можете посмотреть сколько уже работает компьютер или сервер. Кроме того, команда показывает количество вошедших пользователей, а также загрузку системы за 1, 5 и пятнадцать минут до вызова команды:
Значение загрузки системы чем меньше тем лучше.
Читайте также: