Что показывает команда top

Информация о процессах в Linux. Команда Top

При работе в интерфейсе командной строки Linux часто требуется информация о процессах, например, какая программа потребляет больше всего ресурсов процессора или памяти. Для этого есть специальная команда — top. В данном руководстве мы разберем, как она работает, на нескольких простых и понятных примерах..

Синтаксис

Команда top выводит краткие данные о системе и список процессов, обрабатываемых ядром Linux, а также связанную с ними полезную информацию. Ее синтаксис следующий:

Информация динамически обновляется в реальном времени. Конкретные отображаемые данные для информации о системе и процессах пользователь может настроить сам и сохранить для последующих запусков. Команда предоставляет интерактивный интерфейс для работы с процессами и индивидуальной настройки.
Использование top
Пользоваться top очень легко. Достаточно просто выполнить команду top без опций:

Результат был следующим:

Стоит заметить, что на скриншоте мы видим фиксированный в конкретный момент времени образ результата, который динамически изменяется через заданный интервал.

Выводимые данные

Начнем с первой строки. В ней содержатся (именно в этом порядке) записи о текущем времени, времени работы системы с последнего запуска, активных сеансах пользователей и средней загрузке системы (за последнюю минуту, пять минут и пятнадцать минут, соответственно).

Вторая строка содержит информацию об общем количестве процессов, количестве запущенных, спящих, остановленных и «зомби»-процессов.

В третьей строке содержится информация об использовании времени центрального процессора (в процентах). Вот что означают указанные в ней значения:

us, user : время работы с пользовательскими процессами без явного приоритета планирования (приоритет по умолчанию не менялся при помощи команды nice)
sy, system : время работы с процессами ядра (системными)
ni, nice : время работы с пользовательскими процессами, приоритет которых был назначен при помощи nice
id, idle : время, затраченное обработчиком простоя ядра
wa, IO-wait : время ожидания завершения ввода/вывода
hi : время обработки аппаратных прерываний
si : время обработки программных прерываний
st : время, использованное гипервизором, ожидание виртуальной машиной ответа физического процессора.

Две последующие строки показывают информацию об использовании оперативной памяти и свопа. Далее, наконец, выводится информация о процессах (в указанном порядке): идентификатор

PID- идентификатор
USER— владелец
PR-приоритет
NI-значение nice,
VIRT-объем используемой виртуальной памяти
RES-объем используемой физической памяти
SHR-объем используемой разделяемойпамяти
S-статус процесса (S — спящий, R — запущенный, Z — «зомби»),
%CPU— использование процессора
%MEM-использование ОЗУ
TIME-время активности
COMMAND-инициировавшая процесс команда.

Остановка процесса

Выполнить это действие довольно просто — нажмите “k”, и программа запросит идентификатор процесса, который вам нужно остановить. Прямо над таблицей с информацией о процессах вы увидите сообщение следующего вида:

Таким образом, вы можете ввести идентификатор программы, либо по умолчанию top попытается остановить первый процесс в списке, отправив сигнал SIGTERM. После отправки сигнала появится сообщение вида:

Здесь мы остановили программу с PID 109

Изменение приоритета процесса

Если вам требуется изменить приоритет программы, нажмите ‘r’. Вы увидите вот такое сообщение:

Аналогично предыдущему примеру, можно ввести PID или по умолчанию изменить приоритет первого процесса в списке. Программа запросит новое значение приоритета (nice):

Введите значение и нажмите Enter. Значение приоритета заданного процесса будет изменено.

Изменение интервала обновления

По умолчанию результат top обновляется каждые 3 секунды, но этот интервал можно изменить, нажав ‘d’. Команда запросит новое значение:

Введите его и нажмите Enter.

Вывод процессов заданного пользователя

Команда top по умолчанию отображает все процессы, но вы можете ограничить выводимые результаты процессами конкретного пользователя. Для этого нужно нажать ‘u’. Вы увидите сообщение следующего вида:

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

Например, если ввести ‘root’, результат будет иметь следующий вид:

Отображение абсолютных путей команд

Чтобы полностью увидеть команды, которые были инициаторами процессов, со всеми опциями командной строки и аргументами, нужно нажать ‘c’:

Вы увидите абсолютные пути команд, а также все опции и аргументы.

Сортировка вывода

Для сортировки отображения во время работы команды top введите одно из значений

Например сортировка по использованию объема памяти выглядит так

Цветовое выделение запущенных процессов

Чтобы выделить запущенные процессы другим цветом, нажмите клавишу ‘z’. Это поможет вам легче выявлять такие процессы.

Выход после заданного числа обновлений

Сохранение результатов в файл

Получение помощи и выход из программы
Для получения помощи о команде top нажмите ‘h‘:

Чтобы выйти из программы, как уже упоминалось, нажмите ‘q’.

Заключение

Команда top — инструмент с очень широким функционалом, но полное его рассмотрение выходит за рамки данного руководства. Освоив разобранные в данной статье базовые функции, вы можете обратиться к man-странице команды для расширения своих знаний.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Команда top в Linux

В этой статье мы разберемся как пользоваться утилитой top, рассмотрим опции её запуска, а также интерактивные команды, которые вы можете использовать во время работы программы. Кроме того, разберем несколько примеров.

Команда top в Linux

1. Опции и команды top

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

С опциями запуска всё, теперь давайте поговорим про интерактивные команды, которые вы можете выполнять во время работы программы.

Это далеко не все команды top, но их будет вполне достаточно для начала работы, а остальные вы сможете найти в официальной документации по утилите.

2. Запуск программы

Утилита не всегда установлена по умолчанию, для её установки в Ubuntu используйте команду:

sudo apt install top

Затем для запуска просто выполните в терминале:

Окно можно условно разделить на две части. В верхней части находится информация о системе, общем использовании ресурсов процессора и памяти, раздела подкачки, и так далее. В нижней части окна расположен список запущенных процессов с информацией, отсортированных по определённому полю.

Что показывает команда top. Смотреть фото Что показывает команда top. Смотреть картинку Что показывает команда top. Картинка про Что показывает команда top. Фото Что показывает команда top

Что показывает команда top. Смотреть фото Что показывает команда top. Смотреть картинку Что показывает команда top. Картинка про Что показывает команда top. Фото Что показывает команда top

Если вы хотите отображать только те процессы, которые используют ресурсы процессора используйте команду i:

Что показывает команда top. Смотреть фото Что показывает команда top. Смотреть картинку Что показывает команда top. Картинка про Что показывает команда top. Фото Что показывает команда top

3. Сортировка процессов

Чтобы выделить поле, по которому сейчас выполняется сортировка нажмите клавишу y. После этого вся колонка будет выделена жирным:

Что показывает команда top. Смотреть фото Что показывает команда top. Смотреть картинку Что показывает команда top. Картинка про Что показывает команда top. Фото Что показывает команда top

Для выбора соседнего поля сортировки справа или слева от текущего используйте клавиши > или 4. Настройка полей

По умолчанию выводятся далеко не все поля, а только те, что чаще всего используются. Но вы можете включить вывод других полей, отключить не нужные, а также изменить порядок их расположения. Для этого введите команду F:

Что показывает команда top. Смотреть фото Что показывает команда top. Смотреть картинку Что показывает команда top. Картинка про Что показывает команда top. Фото Что показывает команда top

Откроется новое окно в псевдоинтерфейсе программы, в котором будут выведены все поля. Я не буду описывать поля в этой статье, поскольку я это сделал в статье про команду ps:

Что показывает команда top. Смотреть фото Что показывает команда top. Смотреть картинку Что показывает команда top. Картинка про Что показывает команда top. Фото Что показывает команда top

Поля, которые сейчас отображаются выделены жирным и отмечены звездочкой. Вы можете перемещаться по ним с помощью стрелок вверх или вниз. Для того чтобы добавить или убрать поле нажмите на нём d или пробел.

Для того чтобы переместить поле, нажмите на нём Enter, а затем стрелку вправо. После этого поле будет захвачено и вы сможете двигать его вверх или вниз. Затем надо отпустить поле на нужном месте с помощью клавиши Enter.

После завершения настройки можно вернуться обратно в интерфейс программы с помощью клавиши q.

5. Виртуальные окна

Программа имеет четыре окна для вывода данных. Так они называются в документации, но мне больше нравится название формат отображения. Это def, job, mem и usr. Каждое окно выделяется другим цветом в цветном режиме, а также содержит разный набор колонок. Для просмотра всех окон используйте команду A, а для переключения между ними — a:

Что показывает команда top. Смотреть фото Что показывает команда top. Смотреть картинку Что показывает команда top. Картинка про Что показывает команда top. Фото Что показывает команда top

Текущее окно отображается в левом верхнем углу.

Что показывает команда top. Смотреть фото Что показывает команда top. Смотреть картинку Что показывает команда top. Картинка про Что показывает команда top. Фото Что показывает команда top

Когда выберите нужное окно снова нажмите A, чтобы вернуться в обычный режим.

Что показывает команда top. Смотреть фото Что показывает команда top. Смотреть картинку Что показывает команда top. Картинка про Что показывает команда top. Фото Что показывает команда top

7. Цветной вывод

По умолчанию команда top выводит всё в чёрно-белом цвете, однако вы можете включить цветной вывод. Для этого нажмите клавишу z:

Что показывает команда top. Смотреть фото Что показывает команда top. Смотреть картинку Что показывает команда top. Картинка про Что показывает команда top. Фото Что показывает команда top

Как я уже говорил, у каждого окна данных есть своя цветовая схема, вы можете настроить их под себя. Для этого надо использовать команду Z:

Что показывает команда top. Смотреть фото Что показывает команда top. Смотреть картинку Что показывает команда top. Картинка про Что показывает команда top. Фото Что показывает команда top

8. Сохранение настроек

Все эти настройки не имели бы смысла, если бы их нельзя было сохранить для восстановления при следующем запуске. Для сохранения текущих настроек программы используйте команду W.

Что показывает команда top. Смотреть фото Что показывает команда top. Смотреть картинку Что показывает команда top. Картинка про Что показывает команда top. Фото Что показывает команда top

Она записывает все внесённые настройки в файл

/.toprc и при следующем запуске они будут восстановлены.

9. Фильтрация процессов

Чтобы отфильтровать процессы, запущенные от имени определённого пользователя используйте команду u:

Что показывает команда top. Смотреть фото Что показывает команда top. Смотреть картинку Что показывает команда top. Картинка про Что показывает команда top. Фото Что показывает команда top

После ввода команды она попросит ввести имя пользователя или его UID. Также можно фильтровать процессы по любому другому полю. Для этого нажмите клавишу o, затем введите условие фильтра в виде:

ИМЯ_ПОЛЯ = значение

Что показывает команда top. Смотреть фото Что показывает команда top. Смотреть картинку Что показывает команда top. Картинка про Что показывает команда top. Фото Что показывает команда top

Если вы выполните команду o ещё раз, то программа предложит создать ещё один фильтр. Чтобы сбросить фильтры используйте команду =.

10. Завершение процессов

Чтобы завершить процесс используйте команду k. После ввода команды утилита попросит набрать PID идентификатор процесса, который надо завершить:

Что показывает команда top. Смотреть фото Что показывает команда top. Смотреть картинку Что показывает команда top. Картинка про Что показывает команда top. Фото Что показывает команда top

Затем программа спросит какой сигнал процессу надо отправить:

Что показывает команда top. Смотреть фото Что показывает команда top. Смотреть картинку Что показывает команда top. Картинка про Что показывает команда top. Фото Что показывает команда top

Можно оставить по умолчанию, тогда будет отправлен SIGTERM или же ввести любой другой код, например 9 для SIGKILL.

11. Инспектирование процессов

/.toprc и добавить в конец такие строки:

После этого перезапустите top и нажмите сочетание клавиш Shift+y.

Что показывает команда top. Смотреть фото Что показывает команда top. Смотреть картинку Что показывает команда top. Картинка про Что показывает команда top. Фото Что показывает команда top

Утилита попросит ввести PID процесса, который надо инспектировать. После этого откроется новое псевдоокно в котором можно выбрать три вкладки:

Что показывает команда top. Смотреть фото Что показывает команда top. Смотреть картинку Что показывает команда top. Картинка про Что показывает команда top. Фото Что показывает команда top

Для выбора вкладки нажмите Enter. Затем можете просматривать нужные данные, чтобы вернуться обратно ещё раз нажмите Enter.

Что показывает команда top. Смотреть фото Что показывает команда top. Смотреть картинку Что показывает команда top. Картинка про Что показывает команда top. Фото Что показывает команда top

Выводы

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

Источник

Практические рекомендации: устраняйте неполадки, используя команду ‘Top’ в Linux

Вывод команды «top»

Если в коммандной строке линукс системы вы наберете команду top, то получите табличку со следующим заголовком:

Что показывает команда top. Смотреть фото Что показывает команда top. Смотреть картинку Что показывает команда top. Картинка про Что показывает команда top. Фото Что показывает команда top

Давайте разберем значение каждой из строк.

top – 17:15:19 up 32 days, 18:24, 6 users
Здесь показана команда и текущее системное время; «время бесперебойной работы», в нашем случае это 32 дня, 18 часов и 24 минуты; наконец, указывается количество зарегистрированных в системе пользователей; в данном примере, в системе зарегистрированы 6 пользователей. Они могут быть подключены по SSH, локально, быть неактивными и т.д.

load average: 0,00, 0,01, 0,05
В этой части показывается средняя нагрузка; она может сбивать с толку, особенно на виртуальной машине/в облаке.
Первая цифра показывает среднюю нагрузку «последней минуты», или «текущую» среднюю нагрузку; вторая цифра показывает «среднюю нагрузку за 5 минут», последняя цифра – «среднюю нагрузку за 15 минут».
Средняя нагрузка – мера среднего числа процессов, ожидающих своей очереди, чтобы совершить какое-либо действие в процессоре. Как и в супермаркете, приходится стоять в очереди, дожидаясь, пока кассир уделит вам все свое внимание. Причина, по которой средняя нагрузка растет, заключается в остальной статистике и счетчиках, находящихся ниже этой линии, поэтому, если ориентироваться строго на значения средней нагрузки, можно не увидеть всей картинки полностью.

Вот пример, взятый из узла distcc:

Данный сервер, кроме того, что является средой промежуточной обработки для скриптов и хостингом инструментов командной строки облака, предоставляет также распределенную службу C компилятора различным машинам, находящимся в нашей сети, поскольку она имеет 8 процессоров, 32 ГБ оперативной памяти и тонну псевдодискового пространства. При нормальной нагрузке, среднее ее значение остается относительно низким; при выполнении java-скриптов нагрузка может вырастать в два и более раза. Однако при выполнении службы компилятора при полной нагрузке (10 выполняемых процессов при загрузке процессора, равной 95% или выше), среднее значение нагрузки составляет 0,75… Как же так получается? Попытаемся разобраться

Строка Tasks
Строка Cpu

Я разобью эту информацию на две части, в них содержится статистика, важная для нашего использования.

Cpu(s): 0.0%us, 0.0%sy, 0.0%ni, 99.9%id,
Первые четыре величины, приведенные здесь, присутствуют на всех серверах с linux, и они привычны для большинства людей.
%us показывает использование отдельного процессора (пользовательскими процессами, такими, как apache, mysql и т.д.) до максимального значения, составляющего 100%. Таким образом, если в четырехъядерном процессоре 1 процесс использует 100% CPU, это даст значение %us, равное 25%. Значение 12,5% для 8-ядерного процессора означает, что занято одно ядро.
%sy означает использование CPU системой. Обычно это значение невысоко, высокие его значения могут свидетельствовать о проблеме с конфигами ядра, проблему со стороны драйвера, или целый ряд других вещей.
%ni означает процент CPU, используемого пользовательскими процессами, на которые повлияло использование команд nice или renice, т.е. по существу их приоритет был изменен по сравнению с приоритетом по умолчанию, назначаемому планировщиком, на более высокий или низкий. При назначении какому-либо процессу команды nice, положительное число означает более низкий приоритет (1 = 1 шаг ниже нормального), а отрицательное число означает более высокий приоритет. 0 – значение по умолчанию, что означает, что решение о приоритете принимает планировщик. Можно установить, какой планировщик используется вашей системой, но это более сложная тема для следующих статей. Кроме того, любая величина в процентах, приведенная в этот статье не накладывается на величину %us, которая показывает только пользовательские процессы с невыставленным приоритетом.
%id – результат, получающийся при вычитании трех предыдущих значений из 100,0%, и измеряющий «простаивающую» вычислительную мощность.

0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Второй набор значений связан с виртуализацией, и именно по ним мы можем точно отследить те проблемы, которые, возможно, вносят вклад в высокое значение средней нагрузки.

%wa – iowait, процент времени (циклов, секунд), в течение которого процессор простаивал, ожидая завершения операции ввода-вывода. Когда какой-либо процесс или программа запрашивает данные, он сначала проверяет кэш процессора (в нем имеется 2 или 3 кэша), затем проверяет память и, наконец, доходит до диска. Дойдя до диска, процессу или программе обычно приходится ждать, пока поток ввода-вывода передаст информацию в оперативную память, прежде чем иметь возможность снова на нем работать. Чем медленнее диск, тем выше будет значение IO Wait % для каждого процесса. Это происходит также с процессами записи на диск, если системный буфер заполнен и его необходимо прочистить при помощи ядра – обычно это наблюдается на серверах баз данных с высокой нагрузкой. Если значение IO Wait стабильно превышает <100 >%, это означает, что, возможно, имеется проблема хранения, с которой необходимо разобраться. Если вы наблюдаете высокую среднюю нагрузку, прежде всего, проверьте этот параметр. Если он высок, тогда узкое место в процессах, скапливающихся на диске, а не в чем-либо еще.
%hi означает прерывания на уровне железа; на плате электроны движутся по микросхемам предсказуемым образом. Например, когда сетевая карта получает пакет, перед передачей информации, содержащейся в пакете в процессор через ядро, она запросит прерывание в канале прерывания материнской платы. Процессор сообщает ядру, что у сетевой карты для него есть информация, а ядро имеет возможность решить, как поступить. Высокое значение времени, тратящегося на обработку прерываний на уровне железа встречается на виртуальной машине довольно редко, но по мере того, как гипервизоры предоставляют в распоряжение виртуальных машин все больше «железа», эта ситуация может измениться. Чрезвычайно высокая пропускная способность сети, использование USB, вычисления на графических процессорах, — все это может привести к росту этого параметра на величину, превышающую несколько процентов.
%si – прерывание на уровне софта; в ядре linux версии 2.4 реализована возможность запроса прерывания программным обеспечением (приложениями), а не элементом аппаратного обеспечения или устройством (драйвером), запрашивающим прерывание в канале прерывания материнской платы; запрос обслуживается ядром посредством его обработчика прерываний. Это означает, что приложение может запросить приоритетный статус, ядро может подтвердить получение команда, а программное обеспечение будет терпеливо ждать, пока прерывание не будет обслужено. Если мы применим утилиту tcpdump к гигабитному каналу с высоким трафиком, то значение может измениться примерно на 10%, — по мере заполнения выделенной памяти tcpdump, утилита посылает зарос на прерывание, чтобы переместить данные со стека на диск, экран, или куда угодно еще.
%st — самый важный параметр из всех в списке, по моему мнению, это IOSteal%. В виртуализированной среде множество логических серверов могут работать под одним фактическим гипервизором. Каждой виртуальной машине(VM) мы присваиваем 4-8 «виртуальных» CPU; хотя сами гипервизоры могут не иметь (кол-во VM * кол-во виртуальных CPU на одну VM). Причина этого заключается в том, что мы не перегружаем CPU использованием наших виртуальных машин, так что если мы дадим одной-двум VM возможность изредка использовать 8 процессоров, это не будет негативно влиять на весь пул в целом. Однако если виртуальными процессорами VM используется количество CPU, превышающее количество физических (или логических, в случае с гиперпотоковыми процессорами Xeon), тогда значение iosteal будет расти.

iosteal% — мера загруженности гипервизора; наличие в каком-либо пуле виртуальных машин, демонстрирующих стабильно высокое значение параметра iosteal% (более 15%) может свидетельствовать о необходимости переноса некоторых из VM в другую часть пула.

iowait% является показателем производительности диска. В системе хранения данных, поддерживаемой NetApp, у нас может не получиться решить проблему производительности без перемещения тома на менее используемый, или другой диск NetApp. В случае с локальным диском (SSD или SAS) это может означать, что в гипервизоре имеется слишком много VM, интенсивно использующих ресурсы диска, и может потребоваться перенести некоторые из этих VM в другую часть пула.

Подведем итоги:

• Средняя нагрузка, на самом деле, ни о чем не говорит.
• Параметр %userland (%us) важен для средней нагрузки, поскольку он говорит о том, что производятся вычисления. Например, mysql, займет всего один поток, поэтому при полной нагрузке будет использовать (1/кол-во виртуальных CPU, присвоенных VM). postgresql является многопоточным, и может использовать больше процессоров, если они будут выделены, – помните об этом, создавая виртуальные машины в гипервизоре, чтобы предотвратить:
%st – iosteal% — показатель загруженности гипервизора. Создание стека из 4-х postgresql и 6 серверов tomcat под одним гипервизором может быть разумным с точки зрения бизнеса, но вам придется все время конкурировать за процессорное время.
%wa – iowait% — показатель количества времени, которое уходит на отсылку ваших процессов на невероятно медленные диски, неважно какое решение для хранения данных вы используете. Диски, даже SSD, сравнительно медленные. Добавление ОЗУ для увеличения буфера ядра может немного смягчить проблему. ОЗУ дешевле диска, если учесть, насколько молниеносно она работает по сравнению с ним.

Дополнительные команды

iostat
Если вы столкнулись с высокими значениями параметров iowait или iosteal, можно с точностью отследить, какой диск является этому причиной, при помощи команды iostat. Запускается она таким образом:

Что показывает команда top. Смотреть фото Что показывает команда top. Смотреть картинку Что показывает команда top. Картинка про Что показывает команда top. Фото Что показывает команда top

Более подробно, см. руководство по iostat. Разбивка, выводимая каждую секунду, с каких и на какие диски идет чтение/ запись, а также все значения iosteal или iowait, связанные с доступом к этим дискам.

htop
Команда по использованию CPU и процессов на системе Linux. Он не показывает виртуальную статистику, но отображает дерево процессов, а также разбивку каждого процессора в системе, его использование; кроме того, он показывает статистику свопинга и памяти, позволяющую отследить неприятные утечки памяти, раскрашивая все это симпатичными цветами. По моему мнению, этот пакет должен быть обязательным для всех VM.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *