sar — сбор и анализ производительности Linux
Кратко — 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 sysstatsudo 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: номер ядра или ALL — усреднение по всем ядрам.
- %user: время в пользовательском пространстве.
- %nice: время в пользовательском пространстве с приоритетом nice.
- %system: время, потраченное в ядре (системные вызовы).
- %iowait: время простоя CPU с ожидаемыми запросами на диск.
- %steal: в виртуальной машине — время, когда виртуальный CPU простаивает из‑за работы хоста над другими ВМ.
- %idle: время простого без ожидаемых дисковых операций.
Средняя строка показывает усреднённые значения за период.
Чтобы увидеть статистику по конкретным ядрам, используйте опцию -P и номер(а) ядра(ов):
sar -P 1 1 3
Ядра нумеруются с нуля.
Статистика страничного обмена (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
Основные поля:
- 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
Замечания по файлам журнала:
- Имя файла обычно saDD, где DD — день месяца.
- На некоторых дистрибутивах расположение может отличаться; проверьте /var/log/sysstat и /var/log/sa.
- Файлы могут перезаписываться или архивироваться с помощью логротации настроенной системой.
Практическое применение и анализ инцидентов
sar особенно полезен при расследовании “ударных” событий: запрос пришёл сейчас, но причина была вчера. Вот методология разбора инцидента с использованием sar.
Мини‑методология разбора инцидента:
- Определите временной диапазон проблемы (примерно: начало, пик, окончание).
- Соберите исторические данные за интервал из saXX: CPU, paging, I/O, сеть.
- Сравните пиковые периоды с обычным базовым уровнем (baseline) за соседние дни/часы.
- Ищите корреляции: например, повышение iowait совпадает с ростом majflt/s или с высокой активностью записи.
- Если корреляция есть, переключитесь на инструмент с процессным уровнем (top/htop/atop, pidstat) для дальнейшей идентификации виновника.
- Документируйте вывод и, при необходимости, настройте оповещения и сбор метрик в систему мониторинга.
Критерии приёмки расследования:
- Определён временной интервал и найдено подтверждение аномалии в 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 2I/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.csvsadf — утилита из пакета 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 и системой мониторинга для полноценного наблюдения.
Важно: убедитесь, что демона сбора включён и логирование настроено так, чтобы нужные интервалы и периоды хранились достаточно долго для ваших задач.
Похожие материалы
Флеш‑накопители для iPhone и iPad: SanDisk и Leef
Как отменить Xbox Game Pass на ПК — быстрый гайд
Dev Home для разработчиков Windows — руководство
Виртуальные рабочие столы Windows 10 — руководство
Aero Glass в Windows 10 — как вернуть прозрачность