vmstat, iostat, mpstat

Тема дорожной карты · Linux & Unix Fundamentals

Инструменты vmstat, iostat, mpstat из пакета sysstat являются мощными инструментами для мониторинга производительности системы. Они используются для быстрой диагностики и анализа различных аспектов системы, таких как использование процессорного времени, состояние оперативной памяти, загрузка дисковых устройств и распределение загрузки по ядрам процессора. Эти данные помогают быстро выявить проблемы и оптимизировать производительность системы.

Как это работает

vmstat, iostat, mpstat используют методологию USE (Utilisation, Saturation, Errors) и четыре золотых сигнала (latency, traffic, errors, saturation). Команда vmstat 1 отображает текущее состояние системы, включая количество процессов, ожидающих выполнения, количество переключений контекста, использование оперативной памяти и своп. Высокое значение r при низком id указывает на перегрузку процессором, а высокое значение wa указывает на перегрузку ввода-вывода. Команда iostat -xz 1 предоставляет детализированные данные о производительности дисковых устройств, такие как IOPS, пропускная способность, процент использования и время ожидания операций. Высокий уровень %util при увеличении значения await указывает на насыщение дисков. Команда mpstat -P ALL 1 позволяет анализировать загрузку каждого ядра процессора, что помогает выявить однопоточные горячие точки.

Для более глубокого анализа используются дополнительные инструменты: top/htop/atop для анализа использования процессорного времени и памяти по процессам, free -h для анализа состояния оперативной памяти, dstat для мониторинга множества метрик одновременно, perf для профилирования ядра и bpftrace/bcc-tools для трассировки событий с использованием eBPF. Все эти инструменты помогают получить полное представление о текущем состоянии системы и выявить возможные проблемы.

Когда применять

Перед тем как начать оптимизацию системы, важно сначала профилировать её. Догадки о проблемах обычно неверны, поэтому важно использовать инструменты для сбора точных данных. Начните с использования htop и iostat -x 1, чтобы быстро выявить очевидные проблемы с перегрузкой процессорного времени или ввода-вывода. Затем используйте более специализированные инструменты, такие как perf top или eBPF-трейсинг, для более глубокого анализа.

Для HTTP-сервисов важно также учитывать upstream-метрики, такие как latency p95/p99 и error rate, так как боттлнек может быть не в самой системе Linux, а в downstream-БД или других зависимостях. Использование Prometheus и node_exporter для мониторинга производительности на каждом production-хосте с самого начала может значительно упростить процесс анализа и оптимизации.

Типичные ошибки

Одной из распространенных ошибок при использовании vmstat, iostat, mpstat является неправильное понимание данных, которые они предоставляют. Например, часто ошибочно считается, что высокая загрузка (load) всегда указывает на перегрузку процессором, тогда как это может быть результатом uninterruptible-IO wait, что видно в состоянии D процессов в top. Другой распространенной ошибкой является изменение настроек ядра без полного понимания их влияния, что может привести к непредсказуемым результатам. Также важно не забывать остановить активные трейс-системы, такие как ftrace, после завершения анализа, чтобы избежать нежелательного влияния на производительность системы.

Связанные понятия

Полезные ресурсы