Команда Linux vmstat

Linux 命令大全Справочник команд Linux


Что такое команда 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 секунды)

Пример

vmstat 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: Отображение статистики диска

Пример

vmstat -d

Вывод покажет статистику чтения/записи для каждого диска, включая количество операций чтения/записи и секторов.

Пример 3: Мониторинг с метками времени (каждые 5 секунд, всего 3 раза)

Пример

vmstat -t 5 3

Вывод добавляет метку времени перед каждой строкой, что упрощает запись и анализ.


Руководство по диагностике проблем производительности

1. Определение узкого места CPU

  • Высокое значение us: Пользовательские процессы потребляют большое количество CPU; возможно, приложение нуждается в оптимизации.
  • Высокое значение sy: Системное ядро потребляет большое количество CPU; возможно, слишком много системных вызовов.
  • Высокое значение wa: Долгое время ожидания I/O; возможно, узкое место — диск.

2. Диагностика проблем с памятью

  • si/so постоянно не равно нулю: Указывает, что система использует раздел подкачки; физической памяти может быть недостаточно.
  • значение free постоянно уменьшается: возможная утечка памяти.

3. Проблемы блокировки процессов

  • Большое значение в столбце b: указывает, что несколько процессов ожидают операций ввода-вывода.

Рекомендации по лучшим практикам

  1. Выбор интервала мониторинга: для продуктивных сред рекомендуется интервал 5-10 секунд, чтобы не влиять на производительность системы.
  2. Долгосрочный мониторинг: сочетайте сnohupперенаправьте вывод в файл
    nohup vmstat 10 360 > vmstat.log &
  3. Комплексный анализ: сочетайте сtop、iostatи другими инструментами для совместного использования
  4. Бенчмарк-тестирование: записывайте базовые данные, когда система работает нормально, для сравнения при возникновении аномалий.

ЧАВО

Вопрос 1: В чём разница между командами vmstat и top?

  • topПредоставляет подробную информацию на уровне процессов
  • vmstatПредоставляет обзор общего использования ресурсов системы

Вопрос 2: Что означает, когда значения si/so очень высоки?

Это указывает на то, что система часто использует раздел подкачки, возможно, из-за недостатка физической памяти. Рекомендуется добавить память или оптимизировать использование памяти приложением.

Вопрос 3: Как отслеживать конкретный диск?

Используйте-pпараметр для указания раздела диска:

Пример

vmstat -p /dev/sda1

Освоив команду vmstat, вы сможете быстро диагностировать узкие места производительности в системах Linux и обеспечить информационную поддержку для оптимизации системы. Рекомендуется сочетать её с другими инструментами мониторинга в реальной работе, чтобы получить более полное представление о производительности системы.

Linux 命令大全Справочник команд Linux

Другие расширения