Команда Linux vmstat
Что такое команда vmstat
vmstat (статистика виртуальной памяти) — это мощный инструмент мониторинга производительности в системах Linux, который может в реальном времени выводить ключевые показатели производительности, такие как системные процессы, память, разделы подкачки, блоки ввода-вывода и активность ЦП.
Основные возможности
- Мониторинг памяти: Отображает использование физической памяти и пространства подкачки
- Использование ЦП: Показывает долю пользовательских процессов, системных процессов и времени простоя
- Состояние процессов: Сообщает количество выполняющихся, ожидающих и заблокированных процессов
- Статистика ввода-вывода: Предоставляет подробную информацию об операциях чтения/записи блочных устройств
Базовый синтаксис и общие параметры
Базовый формат синтаксиса
vmstat [选项] [时间间隔] [次数]
Описание общих параметров
| Параметр | Описание |
|---|---|
-a |
Показать активную и неактивную память |
-d |
Показать статистику диска |
-p |
Показать статистику для указанного раздела диска |
-s |
Показать сводку статистики, связанной с памятью |
-m |
Отображение информации о slab |
-t |
Добавить метку времени к выводу |
-S |
Указать единицу отображения (k/K/m/M, обозначающие соответственно 1000/1024/1000000/1048576) |
Подробности о полях вывода
ExecutevmstatПосле выполнения команды вывод обычно делится на следующие части:
1. Информация о процессах
procs r: 运行队列中的进程数量 b: 等待 I/O 的进程数量
2. Информация о памяти
memory swpd: 使用的虚拟内存大小(KB) free: 空闲的物理内存大小(KB) buff: 用作缓冲区的内存大小(KB) cache: 用作缓存的内存大小(KB)
3. Информация о разделе подкачки
swap si: 每秒从磁盘读入交换区的内存大小(KB/s) so: 每秒写入磁盘的交换区内存大小(KB/s)
4. Информация о вводе-выводе
io bi: 每秒从块设备接收的块数(blocks/s) bo: 每秒发送到块设备的块数(blocks/s)
5. Информация о системе
system in: 每秒中断数(包括时钟中断) cs: 每秒上下文切换次数
6. Использование ЦП
cpu us: 用户进程占用 CPU 时间百分比 sy: 系统进程占用 CPU 时间百分比 id: 空闲 CPU 时间百分比 wa: 等待 I/O 的 CPU 时间百分比 st: 被虚拟机偷取的时间百分比
Разбор практических примеров
Пример 1: Базовый мониторинг (обновление каждые 2 секунды)
Пример
Пример вывода:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 123456 78900 456789 0 0 5 12 345 6789 10 5 85 0 0
Пример 2: Отображение статистики диска
Пример
Вывод покажет статистику чтения/записи для каждого диска, включая количество операций чтения/записи и секторов.
Пример 3: Мониторинг с метками времени (каждые 5 секунд, всего 3 раза)
Пример
Вывод добавляет метку времени перед каждой строкой, что упрощает запись и анализ.
Руководство по диагностике проблем производительности
1. Определение узкого места CPU
- Высокое значение us: Пользовательские процессы потребляют большое количество CPU; возможно, приложение нуждается в оптимизации.
- Высокое значение sy: Системное ядро потребляет большое количество CPU; возможно, слишком много системных вызовов.
- Высокое значение wa: Долгое время ожидания I/O; возможно, узкое место — диск.
2. Диагностика проблем с памятью
- si/so постоянно не равно нулю: Указывает, что система использует раздел подкачки; физической памяти может быть недостаточно.
- значение free постоянно уменьшается: возможная утечка памяти.
3. Проблемы блокировки процессов
- Большое значение в столбце b: указывает, что несколько процессов ожидают операций ввода-вывода.
Рекомендации по лучшим практикам
- Выбор интервала мониторинга: для продуктивных сред рекомендуется интервал 5-10 секунд, чтобы не влиять на производительность системы.
- Долгосрочный мониторинг: сочетайте с
nohupперенаправьте вывод в файлnohup vmstat 10 360 > vmstat.log &
- Комплексный анализ: сочетайте с
top、iostatи другими инструментами для совместного использования - Бенчмарк-тестирование: записывайте базовые данные, когда система работает нормально, для сравнения при возникновении аномалий.
ЧАВО
Вопрос 1: В чём разница между командами vmstat и top?
topПредоставляет подробную информацию на уровне процессовvmstatПредоставляет обзор общего использования ресурсов системы
Вопрос 2: Что означает, когда значения si/so очень высоки?
Это указывает на то, что система часто использует раздел подкачки, возможно, из-за недостатка физической памяти. Рекомендуется добавить память или оптимизировать использование памяти приложением.
Вопрос 3: Как отслеживать конкретный диск?
Используйте-pпараметр для указания раздела диска:
Пример
Освоив команду vmstat, вы сможете быстро диагностировать узкие места производительности в системах Linux и обеспечить информационную поддержку для оптимизации системы. Рекомендуется сочетать её с другими инструментами мониторинга в реальной работе, чтобы получить более полное представление о производительности системы.
Другие расширения
Справочник команд Linux