Команда top в Linux используется для анализа нагрузки на сервере в режиме реального времени.
Выводит отсортированные списки процессов создающие нагрузку на процессор, память, диск сеть. Показывает значение LA, steal time (говорящий о недополучении виртуальной машиной ресурсов CPU) и многое другое.
Команда top в Linux: описание и основные возможности
Основное применение top — наглядное получение информации о процессах. Их можно удобно сортировать по CPU (нужно нажать c на клавиатуре) или памяти (m). Можно выбрать процессы определенного пользователя (u, затем ввести имя).
Обновление при открытом окне происходит каждые 5 секунд.
Нажатие 1 выведет все доступные ядра CPU и информацию по загрузке каждого из них.
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, притом с хост машины — из основной системы.