Linux: утилита sar — описание, примеры

Автор: | 08/04/2016
 

linux_logosar — еще одна популярная утилита для мониторинга производительности системы.

Входит в пакет systat, в которую так же включены:

  • 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 можно двумя способами:

  1. передав опции, но без указания файла — будет использоваться файл лога за текущий день;
  2. передав опции и файл лога с помощью -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 запроса, включая время в очереди на его обработку (в милисекундах);
  • svctmservice 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