Команда top в Linux и анализ нагрузки на сервер


Команда top в Linux используется для анализа нагрузки на сервере в режиме реального времени.

Выводит отсортированные списки процессов создающие нагрузку на процессор, память, диск сеть. Показывает значение LA, steal time (говорящий о недополучении виртуальной машиной ресурсов CPU) и многое другое.



Команда top в Linux: описание и основные возможности


Основное применение top — наглядное получение информации о процессах. Их можно удобно сортировать по CPU (нужно нажать c на клавиатуре) или памяти (m). Можно выбрать процессы определенного пользователя (u, затем ввести имя).


Команда top в Linux


Обновление при открытом окне происходит каждые 5 секунд.
Нажатие 1 выведет все доступные ядра CPU и информацию по загрузке каждого из них.


top id


x позволяет переключать колонку, по которой происходит сортировка. k посылает сигнал kill, процессу по его идентификатору.

В правом верхнем углу отображается показатель load average говорящий об уровне нагрузки. Это основной показатель любого мониторинга и первое что проверяется при любой диагностике.

Также команда top показывает аптайм Linux сервера, количество авторизованных пользователей.



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

На скриншоте выше видно, что процесс nginx потребляет 0.3% доступных ресурсов CPU и 0.3% оперативной памяти системы. На нагруженных Linux серверах значения будут выше и могут совокупно приближаться в выводе который даёт команда top к 100% по любому из ресурсов: процессор, память, диск, сеть.


Среди недостатков top — отсутствие логов и невозможность снимать метрики в скриптах. top служит для того, чтобы зайдя на сервер можно было максимально быстро проверить какие запущены процессы и какие ресурсы они потребляют.




atop

Логи состояния машины ведет утилита atop. По умолчанию он сохраняет информацию каждые 10 минут. atop обычно нужен для анализа периодически возникающей нагрузки.

С ключом atop -l команда будет выводить информацию в режиме реального времени также как top. Плюс atop в том, что у него подсвечиваются большие значения и нехватку какого-то ресурса сразу видно.




Параметры top wa, top id


В top wa, id и st являются параметрами на которые стоит обращать внимание в той же мере как на LA и список процессов. Они показывают общее состояние системы.



Параметр top id — (%id -percent idle) — показывает какое количество времени процессор простаивает. Если значение небольшое, запаса нет.


Параметр top wa — (%wa percent I/O wait) — показывает процент операций, готовых быть выполненных процессором, но находящихся в состоянии ожидания от диска. Это может быть работа с базой данных.



Алтернативы top


В скриптах обычно применяют vmstat. Утилита имеет множество ключей и в отличие от top/atop передает информацию на стандартный вывод. Там её можно обрабатывать стандартными средствами редактирования текста вроде grep и sed.



Другие инструменты для диагностики разобраны отдельно:



При использовании контейнеризации применяется Docker top. Также как команда top в Linux Docker top позволяет просматривать процессы и данные по ним. Она делает это для контейнеров Docker, притом с хост машины — из основной системы.

Сказать спасибо