4 главных performance команды

Опубликовано admin в Ср, 03/02/2016 - 16:23

Как быстро диагностировать проблему на сервере? Для этого есть несколько удобных команд.

top

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

top - 11:17:51 up 153 days, 4:51, 1 user, load average: 0.01, 0.02, 0.05
Tasks: 64 total, 1 running, 63 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 508944 total, 501244 used, 7700 free, 108552 buffers
KiB Swap: 0 total, 0 used, 0 free, 148108 cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 10648 708 576 S 0.0 0.1 4:40.64 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 6:03.05 ksoftirqd/0
5 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/u:0
6 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
7 root rt 0 0 0 0 S 0.0 0.0 1:28.15 watchdog/0
8 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 cpuset
9 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
11 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
12 root 20 0 0 0 0 S 0.0 0.0 0:30.45 sync_supers
13 root 20 0 0 0 0 S 0.0 0.0 0:00.61 bdi-default
14 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd
15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kblockd
17 root 20 0 0 0 0 S 0.0 0.0 0:18.19 khungtaskd
18 root 20 0 0 0 0 S 0.0 0.0 0:27.31 kswapd0
19 root 25 5 0 0 0 S 0.0 0.0 0:00.00 ksmd

Никто не использует и половины фишек, которые доступны в этой команде. Если нажать на кнопку h откроется мануал по команде.

С помощью кнопки k можно выключить любой процесс по его PID.

С помощью кнопки x можно менять колонку, по которой сортируются процессы.

Команда выводит базовую информацию о процессах, процессоре и памяти. Процессорное время распределено по таким типам:

  • us: время, проведенное под пользовательские задачи.
  • sy: время, потраченное на работу ядра/системы.
  • id: время ожидания (процессор ничего не делает).
  • wa: время, затраченное на ожидание диска/сети/
  • st: время, "украденное" из виртуальной машины (платформой виртуализации, плохо когда оно большое).

vmstat

Команда vmstat покажет снапшот процессора, IO, процессов, и памяти:
procs --------memory---- swap-- --io- -system-- -cpu-
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 7108 108932 148556 0 0 1 14 3 2 1 0 98 0

Первые колонки показывают процессы:

  • r: процессы, ожидающие процессора
  • b: процессы, ожидающие диска/сети/пользователя и т.п.

.

Оба показателя должны стремиться к нулю.

Следующие колонки показывают использование памяти:

  • swpd: размер используемого свопа, плохо если значительно больше нуля
  • free: свободная память, это должно стремиться к нулю
  • buff: всякие буферы (например на I/O операциях)
  • cache: кэш операционной системы

Дальше идет инфа о вводе/выводе:

  • bi: полученные блоки от устройства (типа диска)
  • bo: отправленные блоки на устройство

Дальше идут данные о прерываниях (in) и переключениях контекста (cs), а также данные об использовании процессора (формат такой же, как и у команды top).

Vmstat показывает краткосрочную картинку, однако стоит иметь представление и о долгосрочных трендах (это дальше).

iostat
Сначала нужно установить команду:
apt-get install sysstat

Команда показывает три отчета: использование процессора, утилизацию i/o и сетевой подсистемы. Если запустить команду без параметров, она будет покажет минимум инфы:

Linux 3.2.0-4-amd64 (ruhighload.com) 10/25/2015 _x86_64_ (1 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
0.85 0.00 0.37 0.08 0.71 98.00

Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 1.01 0.88 13.92 11683285 184438328

Использование устройств (device) показывает все подключенные диски и информацию о их использовании. Чтение в секунду (kB_read/s) и запись в секунду (kB_wrtn/s) помогут дать представление о нагрузке дисков.

free

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

total used free shared buffers cached
Mem: 508944 478368 30576 0 71780 162704
-/+ buffers/cache: 243884 265060
Swap: 0 0 0
 
Количество используемой памяти (used) в хорошем случае должно стремиться ко всей доступной памяти (total), однако swap должен быть минимальным (или нулевым, как у нас).

Самое важное
top, vmstat, iostat и free — 4 команды, которые помогут существенно упростить анализ и настройку производительности серверов.

( categories: )