Top - Load average - мониторинг производительности сервера

Производительность сервера в реальном времени можно посмотреть с помощью утилиты Top. Характеристика Load average показывает нам о количестве процессов ожидающих своего выполнения. По Load average как правило измеряют производительность сервера.

утилита top, Load average, Cpu, %us, %sy, %ni, %id, %wa, %hi, %si, %st, Mem, PID, USER, PR, NI, VIRT, RES, SHR, S, %CPU, %MEM, TIME+, COMMAND

Производительность также проверяется с помощью таких утилит как htop, uptime, top, w и многие другие. Во всех есть такой параметр Load averag. Разберем его подробней.

Load average

Состоит из трех групп цифр.

load average: 0.66, 0.77, 0.82

Проще говоря это интервалы времени, за которые была снята нагрузка, а именно 1 минута, 5 минут и 15 минут, соответственно. Как правило происходит ожидание ресурсов ввода/вывода дисковой подсистемы, центрального процессора или ввода/вывода сетевой подсистемы.

Высокий показатель нагрузки Load average сообщает, что система не справляется с высокой нагрузкой на сервер. Речь идет о всем сервере, а не об отдельных агрегатах. В моей практике был зафиксирован пик:

load average: 19.12, 14.41, 7.33

Это очень большой показатель, жесткие тормоза. Проблема с производительностью жестких дисков. Показатель Load average выше 3-х это уже критично.

Что еще можно вытащить полезного из команды Top.

Производительность центрального процессора Cpu(s)

Первые два значения как раз и показывают нагрузку на Cpu.

Cpu(s): 21.2%us,  3.3%sy,  0.0%ni, 64.7%id, 10.3%wa,  0.1%hi,  0.5%si,  0.0%st

Если нажать на кнопку "1", то команда Top отобразит все процессоры и по каждому - соответствующую нагрузку.

Все характеристики команды Top CPU:

%us - это и есть сама нагрузка на процессор

%sy - это нагрузка на Cpu взято самой системой

%ni - это процент использования процессорного времени процессами с измененным nice

%id - это простой Cpu

%wa - это процент простоя связанного с вводом/выводом

%hi - это процент времени, которое процессор тратит на обработку прерываний на уровне железа (IRQ)

%si - это то же, что и %hi, только для софт-прерываний

Использование физической памяти

Далее идет использование физической памяти и файла подкачки.

Mem:  12186524k total, 11711644k used,   474880k free,   272768k buffers
Swap: 8388600k total, 1238000k used, 7150600k free, 5251316k cached

В памяти первый параметр - это общее количество памяти, второй - использовано, далее - доступно и использовано под буфер. Те же параметры и для файла Swap.

Таблица запущенных процессов

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

PID - id процесса по которому можно убить процесс

USER - пользователь из под которого запущен процесс

PR - уровень/приоритет процесса

NI - nice процесса

VIRT - виртуальный размер процесса. Общее количество памяти, которое способна использовать программа.  VIRT = DATA + CODE + SWAP + SHR.

RES - использование физической памяти

SHR - количество памяти которое потенциально может задействовать с другими программами при взаимодействии

SWAP = VIRT - RES

S - состояние процесса:

  • D - ожидание выполнения
  • R - выполняется
  • S - завершенный процесс
  • T - трассируется или остановлен
  • Z - зависший процесс

%CPU - процент использования центрального процесса

%MEM - процент использования памяти

TIME+ - время работы процесса

COMMAND - имя процесса (кнопка С дает возможность посмотреть и ключи с которыми запущен процесс)