Home » vmstat: практическое руководство по памяти и CPU
vmstat: практическое руководство по памяти и CPU

vmstat: практическое руководство по памяти и CPU

Если ты когда-нибудь держал в руках сервер (или, по крайней мере, ssh-подключение к нему), то точно знаешь: мир системных утилит огромен, но есть несколько настоящих “классиков”. vmstat — именно такой инструмент. Вроде бы старенький, но до сих пор незаменимый для диагностики проблем с памятью и CPU. Почему? Потому что он быстрый, информативный и, главное, всегда под рукой на любой уважающей себя Linux-машине. В этой статье разберёмся, чем vmstat может быть полезен в реальной жизни, как его правильно читать, какие ошибки допускают новички, и как выжать из него максимум пользы. Будет много примеров, лайфхаков и даже немного магии автоматизации.

О чём эта статья и почему это важно

Всё просто: если ты хочешь, чтобы твой сервер (будь то VPS, облако или выделенный зверь) не тормозил в самый неподходящий момент, нужно следить за его состоянием. vmstat — твой верный друг для анализа того, что происходит с памятью и процессором прямо сейчас (или за определённый период). Эта статья — не очередная “теория ради теории”, а практическое руководство: как vmstat устроен, как его запустить и понять, что он показывает, как не попасться на типичные грабли и, главное, как применять его для реального мониторинга и диагностики.

Почему vmstat — это must-have для любого, кто настраивает серверы

  • Уже есть почти везде (не нужно ставить 100500 зависимостей)
  • Даёт мгновенный срез по памяти, CPU, IO и свопу
  • Лёгкий, не грузит систему
  • Можно запускать хоть в кроне, хоть в скриптах, хоть руками
  • Понимание его вывода — основа для любой дальнейшей диагностики

Как работает vmstat: что под капотом и зачем это знать

В двух словах: vmstat (Virtual Memory Statistics) собирает статистику из ядра Linux через специальные интерфейсы (/proc/meminfo, /proc/stat, /proc/vmstat и др.), агрегирует её и выдаёт на экран в виде таблички. Но не только про память! Он показывает ещё и CPU, IO, своп, процессы и прочие штуки, которые реально важны для диагностики.

Алгоритм работы

  1. Читает данные из ядра (обычно из /proc)
  2. Агрегирует их по категориям: процессы, память, своп, IO, система, CPU
  3. Выводит срез (или дельту, если запущен с интервалом)

Главное: vmstat не показывает “историю”, а только текущий момент или дельты между измерениями. Это не мониторинг с графиками, а инструмент для быстрой диагностики “здесь и сейчас”.

Структура вывода

Типичный вывод vmstat выглядит примерно так:

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  7890 654321    0    0     1     2   10   20  5  1 94  0  0

Что это значит? Расшифровка — ниже.

Группа Поля Что показывает
procs r, b r — процессы в run queue (готовы к выполнению), b — процессы в uninterruptible sleep (обычно ждут IO)
memory swpd, free, buff, cache swpd — объём свопа, free — свободная RAM, buff — буферы, cache — кэш
swap si, so si — swap in (из swap в RAM), so — swap out (из RAM в swap)
io bi, bo bi — блоки, считанные с устройств, bo — записанные на устройства
system in, cs in — прерывания, cs — переключения контекста
cpu us, sy, id, wa, st us — user time, sy — system time, id — idle, wa — ожидание IO, st — stolen (украдено гипервизором)

Как быстро и просто всё настроить: практические советы

Установка и запуск

На большинстве дистрибутивов Linux vmstat уже есть (часть пакета procps или procps-ng). Проверить:


which vmstat

Если не установлен, ставим:

  • Debian/Ubuntu: sudo apt install procps
  • CentOS/RHEL: sudo yum install procps-ng
  • Alpine: apk add procps

Базовые команды

Запустить и посмотреть разово:


vmstat

Потоковое обновление каждые 2 секунды (Ctrl+C для выхода):


vmstat 2

Показать 5 раз с интервалом 1 секунда:


vmstat 1 5

Показать в мегабайтах (с версии procps-ng 3.3.10+):


vmstat -S M 1 5

Практические схемы использования

  • Запусти vmstat 1 и открой вторым окном top/htop — увидишь, как оба инструмента дополняют друг друга.
  • В crontab можно добавить логирование: * * * * * vmstat 1 5 >> /var/log/vmstat.log
  • Для быстрой диагностики “тормозит сервер” — сразу смотри на r (run queue) и wa (wait IO).
  • Если si и so не нули — у тебя свопится память, пора что-то делать.

Реальные кейсы: что показывает vmstat и как это использовать

Ситуация Что видно в vmstat Рекомендации
Всё тормозит, CPU 100% r > кол-ва ядер, us+sy > 90%, id ≈ 0% Смотри, кто грузит CPU (ps/top), оптимизируй софт, увеличь ядра
Сервер зависает при нагрузке на диск wa > 30-40%, r растёт, bi/bo большие Проверь диск (iostat, smartctl), смени на SSD, оптимизируй IO
Своп активно используется si/so > 0, swpd растёт Добавь RAM, настрой swappiness, найди утечки памяти
Система простаивает id > 90%, все остальное маленькое Всё хорошо! Можно уменьшить ресурсы (экономия)
Виртуалка “тормозит” без нагрузки st > 0% Гипервизор “ворует” CPU, проверь настройки VPS/облака

Ошибки новичков и мифы

  • “Свободная память (free) — это всё, что можно использовать”. На самом деле, Linux активно использует память под кэш и буферы, поэтому смотреть надо на сумму free+buffers+cache.
  • “Если swpd не ноль — всё плохо”. Не всегда! Если si/so = 0, а swpd просто не ноль — своп был, но сейчас не используется.
  • “wa (wait IO) — это всегда проблема с диском”. Нет, иногда это может быть сеть или даже NFS.
  • “vmstat — устаревший, есть же atop/glances”. vmstat — прост, быстр и всегда под рукой. atop/glances отлично для комплексного мониторинга, но для быстрой диагностики vmstat незаменим.

Похожие утилиты и сравнение

Утилита Что даёт Когда использовать
top/htop Процессы, загрузка CPU/RAM, интерактивно Когда нужно “кто жрёт ресурсы”
iostat Подробная статистика по дискам/IO Для анализа “тормозит диск”
free Суммарная память (просто, но мало) Быстро посмотреть общий объём
glances Интерактивный мониторинг, всё в одном Для комплексного мониторинга
atop Логирование и детализация по процессам Когда нужна история и детализация

vmstat — это “швейцарский нож” для быстрого анализа, остальные — для детализации и долгосрочного мониторинга.

Интересные факты и нестандартные способы использования

  • Можно использовать vmstat для мониторинга в Docker-контейнерах (если есть доступ к /proc).
  • В скриптах можно парсить вывод vmstat и отправлять алерты в Telegram/Slack при превышении порогов.
  • Некоторые облачные панели (например, Cockpit) используют данные vmstat для своих графиков.
  • vmstat отлично работает даже на старых системах (например, CentOS 6, Debian 7 и др.).
  • Можно мониторить не только серверы, но и, например, Raspberry Pi, роутеры (если есть Linux).

Автоматизация и интеграция

vmstat отлично вписывается в автоматизацию:

  • Логирование в cron и анализ логов (grep, awk, python)
  • Интеграция с Prometheus (через node_exporter)
  • Мониторинг в Ansible-плейбуках (модуль shell)
  • Быстрые healthchecks в CI/CD пайплайнах

Пример простого bash-скрипта для алерта по свопу


#!/bin/bash
SWAP_THRESHOLD=100 # Мегабайт
SWAP_USED=$(vmstat -S M | awk 'NR==3 {print $3}')
if [ "$SWAP_USED" -gt "$SWAP_THRESHOLD" ]; then
echo "ALERT: Swap usage is high ($SWAP_USED MB)" | mail -s "Swap Alert" admin@example.com
fi

Новые возможности и фишки (современный vmstat)

  • Флаг -S для вывода в мегабайтах/килобайтах (меньше математики для глаз)
  • Параметр -d — подробная статистика по дискам
  • Параметр -s — сводка по памяти/системе

Примеры:


vmstat -d


vmstat -s

Заключение и рекомендации

vmstat — это инструмент, который обязан знать любой, кто хоть раз настраивал или обслуживал сервер. Он не заменяет комплексные системы мониторинга, но даёт мгновенный и честный срез по состоянию памяти, CPU, IO и свопа. Его плюсы — простота, скорость, доступность и возможность автоматизации. Если у тебя VPS, облако, выделенный сервер или даже домашний сервер — vmstat всегда поможет быстро понять, что происходит “под капотом”.

  • Используй vmstat для быстрой диагностики и автоматизации healthcheck-скриптов.
  • Не забывай про остальные утилиты (top, iostat, glances) — они дополняют друг друга.
  • Если видишь проблемы с памятью или CPU — vmstat поможет локализовать их за минуты.
  • Запускай его с интервалом, анализируй дельты, логируй — и твой сервер будет жить дольше и стабильнее.

Официальная документация: https://man7.org/linux/man-pages/man8/vmstat.8.html

Пусть твои сервера никогда не тормозят — vmstat всегда на страже!


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked