sar
– еще одна популярная утилита для мониторинга производительности системы.
Входит в пакет sysstat
, в которую так же включены:
sar
: сбор информации об активности системы;iostat
: отчеты об использовании CPU и статистика I/O;mpstat
: глобальная статистистика и отчеты по каждому процессу;pidstat
: отчеты по процессам в Linux;sadf
: отображение информации отsar
в различных форматах;nfsiostat
: статистика I/O для сетевых файловых систем;cifsiostat
:статистика I/O для файловых систем CIFS.
Содержание
Описание sar
sar
предоставляет данные по:
- статистика CPU;
- статистика CPU по отдельным процессам или пользователям;
- использование памяти;
- использование
swap
; - I/O активность системы;
- переключения контекстов;
- статистику сетевой активности;
- предоставляет данные за указанный период времени.
Установка systat
Ищем пакет и его описание:
$ apt-cache show sysstat Package: sysstat Priority: optional Section: admin ... Version: 10.2.0-1 ... Suggests: isag Filename: pool/main/s/sysstat/sysstat_10.2.0-1_amd64.deb ... The sysstat package contains the following system performance tools: - sar: collects and reports system activity information; - iostat: reports CPU utilization and disk I/O statistics; - mpstat: reports global and per-processor statistics; - pidstat: reports statistics for Linux tasks (processes); - sadf: displays data collected by sar in various formats; - nfsiostat: reports I/O statistics for network filesystems; - cifsiostat: reports I/O statistics for CIFS filesystems.
Устанавливаем:
$ sudo apt-get install sysstat
Что бы включить сбор статистики – проверяем файл /etc/default/sysstat
и при необходимости меняем ENABLED="false"
на ENABLED="true"
и перезапускаем sysstat
:
$ sudo service sysstat restart * Starting the system activity data collector sadc
По умолчанию – sar
будет собирать статистику каждые:
# cat /etc/cron.d/sysstat # The first element of the path is a directory where the debian-sa1 # script is located PATH=/usr/lib/sysstat:/usr/sbin:/usr/sbin:/usr/bin:/sbin:/bin # Activity reports every 10 minutes everyday 5-55/10 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1 # Additional run at 23:59 to rotate the statistics file 59 23 * * * root command -v debian-sa1 > /dev/null && debian-sa1 60 2
По крону запускается скрипт /usr/lib/sysstat/debian-sa1
(на Ubuntu) каждые десять минут (5-55/10 * * * *
) и раз в сутки – перед полуночью (59 23 * * *
), который вызывает другой скрипт – /usr/lib/sysstat/sa1
, передавая ему аргументы из задачи cron
, который в свою очередь – вызывает /usr/lib/sysstat/sadc
. А sads
уже собирает статистику в бинарный лог /var/log/sysstat/sa(день_месяца)
.
Использование sar
Список опций можно получить с помощью -h:
$ sar -h Usage: sar [ options ] [ <interval> [ <count> ] ] Main options and reports: ... -w Task creation and system switching statistics -y TTY devices statistics
При вызове без опций – sar
выведет следующую информацию:
$ sar Linux 4.2.0-34-generic (username) 12.04.16 _x86_64_ (4 CPU) 10:18:12 LINUX RESTART 10:25:01 CPU %user %nice %system %iowait %steal %idle 10:35:01 all 14,25 0,48 4,50 1,34 0,00 79,43 Average: all 14,25 0,48 4,50 1,34 0,00 79,43
%user
: % времени CPU, затраченного на выполнение приложений на уровне пользователя;%nice
:% времени CPU, затраченного на выполнение приложений на уровне пользователя с установленным приоритетомnice
;%system
: % времени CPU, затраченного на выполнение приложений на уровне ядра;%iowait
: время CPU, затраченное на ожидание завершения операций ввода/вывода;%steal
: время CPU, “украденное” у виртуальной машины (точнее – у виртуального процессора этой машины) ее гипервизором для решения других задач (например – на работу другой виртуальной машины);%idle
: бездействие процессора.
Вызвать sar
можно двумя способами:
- передав опции, но без указания файла – будет использоваться файл лога за текущий день;
- передав опции и файл лога с помощью
-f
, для отображения статистики за определенный день.
Опции sar
-d
– отобразить статистику по использованию блочных устройств.
Просмотреть все подключенные устройства можно с помощью lsblk
:
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 465,8G 0 disk ├─sda1 8:1 0 243M 0 part /boot ├─sda2 8:2 0 1K 0 part └─sda5 8:5 0 465,5G 0 part ├─kubuntu--vg-root (dm-0) 252:0 0 457,8G 0 lvm / └─kubuntu--vg-swap_1 (dm-1) 252:1 0 7,7G 0 lvm [SWAP] sr0 11:0 1 1024M 0 rom
Т.к. sar
для отображения устройсв использует старшие и младшие номера – то для получения более полной картины можно проверить каталог /sys/dev/block/
:
$ ls -l /sys/dev/block/ | grep 'dm-\|sda' lrwxrwxrwx 1 root root 0 кві 12 11:16 252:0 -> ../../devices/virtual/block/dm-0 lrwxrwxrwx 1 root root 0 кві 12 11:16 252:1 -> ../../devices/virtual/block/dm-1 lrwxrwxrwx 1 root root 0 кві 12 11:16 8:0 -> ../../devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda lrwxrwxrwx 1 root root 0 кві 12 11:16 8:1 -> ../../devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda1 lrwxrwxrwx 1 root root 0 кві 12 11:16 8:2 -> ../../devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda2 lrwxrwxrwx 1 root root 0 кві 12 11:16 8:5 -> ../../devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda5
8:0
– диск sda
.
Результаты sar
по сбору статистики использования таких устройств:
$ sar -d Linux 4.2.0-34-generic (azinchenko) 12.04.16 _x86_64_ (4 CPU) 10:18:12 LINUX RESTART 10:25:01 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 10:35:01 dev8-0 15,86 128,09 203,58 20,91 0,37 23,43 3,96 6,29 10:35:01 dev252-0 17,98 81,88 203,58 15,88 0,40 22,50 2,64 4,75 10:35:01 dev252-1 5,78 46,21 0,00 8,00 0,03 5,36 3,84 2,22 ...
Либо можно добавить опцию -p
(pretty print) для отображения имен устройств вместо номеров:
$ sar -p -d Linux 4.2.0-34-generic (azinchenko) 12.04.16 _x86_64_ (4 CPU) 10:18:12 LINUX RESTART 10:25:01 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 10:35:01 sda 15,86 128,09 203,58 20,91 0,37 23,43 3,96 6,29 10:35:01 kubuntu--vg-root 17,98 81,88 203,58 15,88 0,40 22,50 2,64 4,75 10:35:01 kubuntu--vg-swap_1 5,78 46,21 0,00 8,00 0,03 5,36 3,84 2,22 10:45:01 sda 11,70 93,21 262,44 30,40 0,34 28,70 3,77 4,41
Тут:
DEV
: номер или имя устройства;tps
: transfer per second – количество операций в секунду;rd_sec/s
: read sectors per second – количество секторов, считанных с устройсва (1 сектор == 512 байт);wr_sec/s
: write sectors per second – количество секторов, записанных на устройсво (1 сектор == 512 байт);avgqu-sz
: average queue size – средний размер запросов к устройству (в секторах);await
: среднее время на обработку I/O запроса, включая время в очереди на его обработку (в милисекундах);svctm
: service time – время непосредтсвенно на обработку запроса устройсвом (устаревшее, будет выпелено в следующих версиях sar);%util
: % времени CPU, затраченный на выполнение I/O запросов.
Пост из черновиков, не закончен, но больше можно почитать тут:
How to use sar for monitoring your Linux system? sysstat sar examples and usage
Examples of using SAR command for system monitoring in Linux
Two traps in iostat: %util and svctm