Что такое top? Обзор и описание утилиты top.

Автор: | 11/03/2013
 

terminaltop – одна из наиболее распространённых и удобных в своей линейке утилит, предназначенная для мониторинга состояния сервера.

По её имени позже были названы и другие аналогичные продукты – atop, htop, iftop, iotop и многие другие. Цель у всех одна – отобразить текущую нагрузку на весь сервер или отдельные его подсистемы.

В данной статье мы рассмотрим исключительно утилиту top – из-за её простоты, возможностей и, как результат, распространенности. Статья явно неполная – возможностей у программы достаточно много. Позже будет добавлена вторая часть.

Общий вид программы и выводимых ей сведениях немного отличается во FreeBSD и Linux – но в целом они похожи:

linux_top

Вид утилиты top в Linux

 

freebsd_top

Вид утилиты top во FreeBSD

Утилита top входит в пакет программ procps. Кроме top в него так же входят такие утилиты как free, kill, pgrep, pkill, pmap, ps, skill, snice, sysctl, tload, uptime, vmstat, w и watch. Данные для отображения утилиты берут в основном из каталога /proc. Подробнее про этот каталог и файловую систему proc можно прочитать в статье Linux: описание и назначение файловой системы proc и каталога /proc.

Перейдём к рассмотрению выводимых данных.

Самая важная и нужна информация – это первая строка, отображающая Load Avarage (далее – LA):

linux_top_load_avarage

Данные выводятся в трёх временных промежутка – 1 минута назад, 5 минут и 15 минут.

Как узнать какое значение Load Avarage является нормальным? Тут всё зависит от количества ядер.

Для примера – сервер с CPU у которого 1 ядро:

Показатель LA меньше 1 – самое хорошее значение, нагрузки практически нет;
1-3 – нагрузка в пределах нормы, сервер достаточно нагружен работой – но эта нагрузка в пределах нормы;
3-10 – это уже серьёзная нагрузка, следует обратить внимание на процессы, HDD и прочие параметры;
Нагрузка более 10 – серьёзные проблемы, заметно “торможение” сервера при обработке запросов;
20 и более – очень серьёзные проблемы, доступ к серверу серьёзно затруднён.
Для серверов, у которых количество ядре в процессоре более 1-го – эти значения необходимо увеличить на кол-во ядер в системе.

Так же полезная информация выводится в начале строки с Load Avarages:

Результаты top в Linux: uptime, date and time, connected users

Сначала отображается текущее системное время процессора (если у вас время не точное – о синхронизации можно прочитать в статье FreeBSD: синхронизация времени с помощью NTP).

Далее отображается информация о текущих процессах:

Результат top в Linux - tasks

running — процессы, выполняющиеся в данный момент;
sleeping — “спящие” процессы, процесс находится в состоянии ожидания запроса или в готовности;
zombie — “зомби”-процесс, дочерний процесс, завершивший свой выполнение, но но ещё присутствующий в списке процессов операционной системы, чтобы дать родительскому процессу считать код завершения.

Далее выводится информация об использовании процессора:

Результат top в Linux - вывод CPU

us% — процент времени, потраченного на выполнение процессов пользователей, для которых не задан приоритет;
sy% — это процент времени, потраченного на выполнение процессов ядра;
ni% — процент времени, потраченного на выполнение процессов с заданных приоритетом;
wa% — это процент времени, потраченного на выполнение операций IO (вводавывода), то есть дисковых операций;
hi% — это процент времени, потраченный на обработку аппаратных прерываний;
si% — процент времени, потраченного на обработку программных прерываний;
st% — процент времени, «украденного» у виртуальной машины гипервизором для каких-либо других задач, к примеру, запуска другой виртуальной машины.

Далее размещается информация о использовании оперативной памяти.

Результат top в Linux - вывод memory

total — это суммарный объем оперативной памяти сервера;
used — это объем использованной памяти;
free — объем свободной памяти;
buffers — объем буфера;
cached — объем кеша операций вводавывода.

Это же касается SWAP-раздела.

Далее – выводится информация о текущих процессах:

Результат top в Linux - вывод списка процессов

PID — числовой идентификатор процесса;
USER — это пользователь, который инициировал запуск процесса;
PR — динамический приоритет процесса;
NI — статический приоритет процесса;
VIRT — объем использования виртуальной памяти (включая весь код, библиотеки и т.д.);
RES — объем использования реальной оперативной памяти;
SHR — объем использованной shared-памяти (эта память может использоваться и другими приложениями);
S — статус процесса (выполняется, ожидает, остановлен и т.д.);

  • R (running) – выполняется;
  • S (sleeping) – “спящий” процесс;
  • Z (zombie) – процесс-“зомби”.

%CPU — процент использования процессорного времен;
%MEM — процент использования реальной оперативной памяти;
TIME — время работы процесса с момента запуска;
COMMAND — имя процесса.