Гид по технологиям

sar — сбор и анализ производительности Linux

9 min read Linux Обновлено 13 Dec 2025
sar: анализ производительности Linux (sysstat)
sar: анализ производительности Linux (sysstat)

Кратко — TL;DR

sar — это инструмент из пакета sysstat для сбора и просмотра статистики производительности Linux в режиме реального времени и по истории. Установите sysstat (например, sudo apt install sysstat), включите и запустите сервис systemd, затем используйте sar для моментальных снимков или просмотра дневных файлов saXX. Этот материал объясняет команды, как читать вывод, как анализировать инциденты и даёт чеклисты и рекомендации для разных ролей.

Быстрые ссылки

  • Что делает команда sar?

  • Установка пакета sysstat

  • Статистика в реальном времени с sar

  • Исторические отчёты с sar

  • Практические советы и чеклисты

Краткое резюме

  • Команда sar входит в пакет sysstat и собирает статистику производительности для различных подсистем Linux — процессоров, памяти, ввода/вывода, сети и прочего, как в реальном времени, так и за прошлые периоды.
  • Установите sysstat через менеджер пакетов вашей системы (например, sudo apt install sysstat) и включите демона systemd для записи данных по расписанию.
  • sar показывает моментальные снимки и может отображать несколько снимков через заданный интервал; также читает исторические файлы saXX для анализа прошлых проблем.

Что делает команда sar?

sar (System Activity Reporter) — инструмент для съёма и отображения статистики работы системы. Он собирает данные по CPU, страницам памяти, использованию swap, сетевому вводу/выводу и другим метрикам. Данные собираются демоном в фоне по расписанию (обычно каждые 10 минут) и сохраняются в ежедневных файлах журнала.

Демон собирает данные в текстовый формат в течение дня и перекодирует их в двоичный формат при переходе на новую дату. Файлы перезаписываются ежемесячно, чтобы не накапливать бесконтрольно объём на диске.

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

Установка пакета sysstat

Установка зависит от дистрибутива.

На Ubuntu/Debian:

sudo apt install sysstat

На Fedora:

sudo dnf install sysstat

На Manjaro/Arch:

sudo pacman -S sysstat

После установки включите и запустите системный сервис:

sudo systemctl enable sysstat
sudo systemctl start sysstat

Проверьте версию и работоспособность с помощью:

sar -V

Если systemd недоступен, у некоторых систем sysstat запускается из cron. Проверьте /etc/sysstat/ или /etc/default/sysstat в зависимости от дистрибутива.

Важно: в некоторых дистрибутивах демона нужно дополнительно разрешить запись статистики в конфигурации пакета (например, включить SA_COLLECT в /etc/default/sysstat). Если после установки вы не видите файлов saXX в /var/log/sysstat или /var/log/sa, проверьте конфигурацию и статус сервиса.

Статистика в реальном времени с sar

sar может показывать текущие срезы и серию срезов через заданный интервал. Формат общих команд:

sar [опция] интервал количество

Здесь интервал указывается в секундах, а количество — сколько срезов получить. Если количество опущено, sar будет выводить данные бесконечно до прерывания.

Статистика CPU

Пример — три среза с интервалом 2 секунды для общей загрузки CPU:

sar -u 2 3

Три набора статистики CPU с интервалом

Подсказки по столбцам вывода:

  • CPU: номер ядра или ALL — усреднение по всем ядрам.
  • %user: время в пользовательском пространстве.
  • %nice: время в пользовательском пространстве с приоритетом nice.
  • %system: время, потраченное в ядре (системные вызовы).
  • %iowait: время простоя CPU с ожидаемыми запросами на диск.
  • %steal: в виртуальной машине — время, когда виртуальный CPU простаивает из‑за работы хоста над другими ВМ.
  • %idle: время простого без ожидаемых дисковых операций.

Средняя строка показывает усреднённые значения за период.

Чтобы увидеть статистику по конкретным ядрам, используйте опцию -P и номер(а) ядра(ов):

sar -P 1 1 3

Статистика CPU по одному ядру

Ядра нумеруются с нуля.

Статистика страничного обмена (paging)

Опция -B даёт показатели, связанные со страничной памятью:

sar -B 5 2

Статистика страничного обмена

Ключевые столбцы:

  • pgpgin/s и pgpgout/s: килобайты, загруженные/записанные со стороны диска в секунду.
  • fault/s: общее число page faults в секунду (мелкие и крупные).
  • majflt/s: количество крупных page faults в секунду (требующих чтения страницы с диска).
  • pgfree/s: страниц, добавленных в список свободных, в секунду.
  • pgscank/s и pgscand/s: число страниц, просканированных демоном kswapd или непосредственно.
  • pgsteal/s: число страниц, освобождённых из кэша в секунду.
  • %vmeff: эффективность процедуры reclaim, рассчитанная как pgsteal/pgscan.

Интерпретация: большое число majflt/s указывает, что системе часто требуется читать страницы с диска — возможна нехватка оперативной памяти или неэффективный рабочий набор процессов.

Статистика ввода/вывода (I/O transfer rates)

Для просмотра I/O используйте опцию -b (нижний регистр):

sar -b 4 3

Статистика I/O и скорости передачи данных

Основные поля:

  • tps: количество операций ввода/вывода в секунду (запросов к устройствам).
  • rtps и wtps: число операций чтения и записи в секунду.
  • dtps: число операций discard (TRIM) в секунду.
  • bread/s и bwrtn/s: объём данных, прочитанных/записанных в блоках по 512 байт в секунду.
  • bdscd/s: объём данных, удалённых (discard) в блоках в секунду.

Другие категории и -A

sar поддерживает множество опций для разных подсистем. Для вывода всех доступных метрик используйте:

sar -A 1 1

Для подробного списка опций смотрите man sar или man sadf.

Исторические отчёты с sar

Данные, собранные демоном, сохраняются в ежедневных файлах saXX в каталоге логов (например, /var/log/sysstat/ или /var/log/sa/). Для просмотра исторических данных добавляют опции -s (start) и -e (end) с временами в 24‑часовом формате.

Пример: CPU между 06:30 и 07:15 сегодня:

sar -u -s 06:30:00 -e 07:15:00

Исторические данные за утро

Чтобы взять данные за прошлый день, используйте числовой флаг, где -1 значит вчера, -2 — позавчера и т.д. Пример для вчера между 13:00 и 13:30:

sar -u -1 -s 13:00:00 -e 13:30:00

Исторические данные за вчера

Также можно указать путь к конкретному файлу saXX через -f:

sar -u -s 14:00:00 -e 14:30:00 -f /var/log/sysstat/sa21

Данные из конкретного файла sa21

Замечания по файлам журнала:

  • Имя файла обычно saDD, где DD — день месяца.
  • На некоторых дистрибутивах расположение может отличаться; проверьте /var/log/sysstat и /var/log/sa.
  • Файлы могут перезаписываться или архивироваться с помощью логротации настроенной системой.

Практическое применение и анализ инцидентов

sar особенно полезен при расследовании “ударных” событий: запрос пришёл сейчас, но причина была вчера. Вот методология разбора инцидента с использованием sar.

Мини‑методология разбора инцидента:

  1. Определите временной диапазон проблемы (примерно: начало, пик, окончание).
  2. Соберите исторические данные за интервал из saXX: CPU, paging, I/O, сеть.
  3. Сравните пиковые периоды с обычным базовым уровнем (baseline) за соседние дни/часы.
  4. Ищите корреляции: например, повышение iowait совпадает с ростом majflt/s или с высокой активностью записи.
  5. Если корреляция есть, переключитесь на инструмент с процессным уровнем (top/htop/atop, pidstat) для дальнейшей идентификации виновника.
  6. Документируйте вывод и, при необходимости, настройте оповещения и сбор метрик в систему мониторинга.

Критерии приёмки расследования:

  • Определён временной интервал и найдено подтверждение аномалии в sar.
  • Выявлены коррелирующие метрики (CPU, I/O, память) и указаны возможные причины.
  • Предложены следующий шаги (тюнинг, увеличение RAM, изменение расписания задач, лимиты I/O) и план проверки.

Когда sar может подвести

  • sar не показывает, какой конкретный процесс вызвал проблему; для этого нужны pidstat, top, htop, perf или отладка приложений.
  • Данные агрегируются по интервалам; если интервал сбора велик (по умолчанию 10 минут), короткие всплески могут быть сглажены и не видны.
  • Виртуальные окружения: %steal отражает влияние гипервизора, но не говорит, какая ВМ мешала. Для этого нужен доступ к хосту.
  • Если демона не было запущено в интересующее время, исторических данных может не быть.

Альтернативные подходы и инструменты

  • top/htop — интерактивный просмотр процессов в реальном времени.
  • vmstat — быстрый мониторинг памяти, процессов, swap и I/O в реальном времени.
  • iostat — детальная статистика дисков и разделов.
  • pidstat — статистика по процессам (CPU, I/O) за интервалы времени.
  • atop — исторический и интерактивный анализ процессов с подробной статистикой.
  • dstat — комбинированный мониторинг нескольких подсистем.
  • Prometheus + node_exporter/Grafana — для долгосрочного хранения, графиков и оповещений.

Каждый инструмент дополняет sar: sar хорош для исторических дневных снимков, другие — для привязки к процессам и детального профилирования.

Чеклист по ролям

Сисадмин / инженер поддержки:

  • Убедиться, что sysstat установлен и systemd unit активен.
  • Проверить наличие файлов /var/log/sysstat/saXX и дату последней записи.
  • Если требуется — уменьшить интервал записи или изменить конфигурацию сбора.
  • Использовать sar для поиска периодов высокого iowait, majflt или %steal.

Разработчик / инженер приложений:

  • При регрессии производительности соберите временные метки и передайте их ответственному администратору.
  • Сравните поведение на тестовой среде с prod с помощью sar для обнаружения различий в I/O и памяти.

DevOps / SRE:

  • Настроить интеграцию sar (через sadf или экспорт через скрипт) в систему мониторинга.
  • Определить базовые показатели (baseline) и настроить оповещения по отклонениям.

Шпаргалка команд (cheat sheet)

Проверка версии:

sar -V

Мгновенные CPU срезы (3 среза по 2 секунды):

sar -u 2 3

Статистика по конкретному ядру (ядро 1):

sar -P 1 1 3

Показатели страничного обмена:

sar -B 5 2

I/O статистика:

sar -b 4 3

Вывести всё доступное:

sar -A 1 1

История: CPU с 06:30 до 07:15 сегодня:

sar -u -s 06:30:00 -e 07:15:00

История из конкретного файла sa21:

sar -u -s 14:00:00 -e 14:30:00 -f /var/log/sysstat/sa21

Экспорт в CSV через sadf:

sadf -d -- -u -s 06:00:00 -e 07:00:00 /var/log/sysstat/sa21 > cpu-06-07.csv

sadf — утилита из пакета sysstat для преобразования формата saXX в читаемые форматы (CSV, XML и др.).

Подсказки по интерпретации и эвристики

  • Если %iowait растёт одновременно с ростом tps и bwrtn/s, значит узким местом может быть диск.
  • Высокие majflt/s в паре с увеличением pgpgin/s указывают на чтение страниц с диска — проверьте использование RAM и swap.
  • %steal > 0 в виртуальной среде означает конкуренцию за CPU на хосте; поговорите с владельцем хоста или мигрируйте нагрузку.
  • Сравнивайте с базовыми значениями в те же часы предыдущих дней: многие задачи имеют суточную или недельную периодичность.

Планы управления хранением и ротацией

  • Проверьте, как настроен logrotate для /var/log/sysstat; при необходимости настройте архивирование старых saXX в сжатый формат.
  • Для долгосрочного хранения и аналитики экспортируйте saXX в CSV или интегрируйте метрики в TSDB (InfluxDB, Prometheus + remote write).

Glossary — одно предложение о ключевых терминах

  • CPU: центральный процессор, выполняющий код.
  • iowait: время простоя CPU из‑за ожидаемых операций ввода/вывода.
  • steal: время ожидания виртуальной машины, когда хост обслуживает другую ВМ.
  • page fault: ошибка страницы — попытка доступа к странице памяти, которая не в оперативной памяти.
  • majflt: крупная page fault, требующая чтения страницы с диска.
  • tps: операции ввода/вывода в секунду.

Пример сценариев и проверки (Acceptance)

Тестовые кейсы:

  • Проверка установки: sysstat установлен, systemctl показывает active (running), файлы saNN создаются после первого интервала.
  • Корректность вывода: sar -u выводит столбцы с %user, %system, %iowait.
  • Исторический доступ: sar -u -1 выводит данные за предыдущий день при наличии файлов.

Риски и рекомендации по безопасности

  • Файлы saXX могут содержать поведенческие данные системы; при необходимости ограничьте доступ к /var/log/sysstat только администраторам.
  • Для публичных/мультиарендных сред проконсультируйтесь с политиками конфиденциальности прежде чем выносить исторические данные за пределы хоста.

Короткое резюме (end)

sar — простое и надёжное средство для съёма системной активности и анализа исторических данных. Он не заменит профайлер на уровне процессов, но даст быстрый ориентир при расследовании инцидентов и поможет понять, в какой подсистеме искать проблему. Используйте его вместе с pidstat, iostat, atop и системой мониторинга для полноценного наблюдения.

Важно: убедитесь, что демона сбора включён и логирование настроено так, чтобы нужные интервалы и периоды хранились достаточно долго для ваших задач.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Флеш‑накопители для iPhone и iPad: SanDisk и Leef
Гайды

Флеш‑накопители для iPhone и iPad: SanDisk и Leef

Как отменить Xbox Game Pass на ПК — быстрый гайд
Игры

Как отменить Xbox Game Pass на ПК — быстрый гайд

Dev Home для разработчиков Windows — руководство
Разработка

Dev Home для разработчиков Windows — руководство

Виртуальные рабочие столы Windows 10 — руководство
Windows

Виртуальные рабочие столы Windows 10 — руководство

Aero Glass в Windows 10 — как вернуть прозрачность
Windows

Aero Glass в Windows 10 — как вернуть прозрачность

Создать и управлять учётными записями в Windows 10
Windows

Создать и управлять учётными записями в Windows 10