Linux: описание утилиты vmstat

Автор: | 07/10/2014

linux_logovmstat – одна из утилит, которые должны быть использованы в первую очередь (после top, конечно), при проблемах с сервером (высокий Load Average и т.д.).

Он позволяет вывести информацию об использовании памяти, дисков, процессора.

Простой запуск без ключей будет выглядеть так:

# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0 186888 179960  28156 405052    7    7    24    28   18   24  3  1 95  1  0

Результат разбит на шесть колонок – procs (процессы), memory (память), swap, io (диск I/O), system (система/ядро), CPU (процессор).

Информация в результатах vmstat

Procs

r – количество процессов в очереди на выполнение процессором (если значение > 0 – налицо нагрузка на процессор);
b – количество процессов, ожидающих операций I/O (если значение > 0 – налицо нагрузка на диски и/или файловую систему).

Значение остальных колонок.

Memory

swpd – количество блоков, перемещённых в swap;
free – свободная память (без учёта памяти, занятой буферам и кэшом, тоже, что выводит free в колонке Mem:free, см. тут>>>);
buff – буферы памяти (см. там же);
cache – кеш (см. там же);

Swap

si (swap in) – количество блоков в секунду, которое система считывает из раздела или файла swap в память;
so (swap out) – и наоборот, количество блоков в секунду, которое система перемещает из памяти в swap.

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

IO

bi (blocks in) – количество блоков в секунду, считанных с диска;
bo (blocks out) – количество блоков в секунду, записанных на диск;

System

in (interrupts) – количество прерываний в секунду;
cs (context switches) – количество переключений между задачами (см. тут>>>);

CPU

us (user time) – % времени CPU, занятый на выполнение “пользовательских” (не принадлежащих ядру) задач;
sy (system time) – % времени CPU, занятый на выполнение задач ядра (сеть, I/O задачи, прерывания и т.п.);
id (idle) – % времени в бездействии (ожидании задач);
wa – % времени CPU, занятый на ожидание операций I/O;

Опции vmstat

-a – переключение колонки memory в active/inactive значение вместо buff/cache (active – память, реально используемая в данный момент определённым процессом, inactive – память, выделенная ранее какому-то процессу, которого уже нет);
-f – информация о количестве системных вызовов fork(2), vfork(2) и rfork(2), выполненных с момента старта системы, и количество страниц виртуальной памяти, задействованных каждым из них;
-m – использование динамической памяти ядра, выделенной с использованием malloc(9);
-n – задаёт интервал выполнения в секундах;
-s – изменение вида отображение результатов (в две колонки);
-d – статистика использования дисков;
-w – увеличивает визуальный размер поля для больших объемов;
-p [partition name] – с указанием имени раздела, информация по конкретном разделу (read/writes);
-S [k | K | m | M] – с указанием в чем выводить информацию (килобиты, килобайты, мегабиты, мегабайты соответственно);
-V – версия vmstat.

Кроме того, после указания опций можно задать две цифры – интервал между выполнением, и количество повторов:

# vmstat 2 5

vmstat будет выполнен 5 раз с интервалом в 2 секунды.

Ссылки по теме

http://technotes.skycover.ru (хорошо описана память в Linux)

http://linuxcommand.org

http://www.lazysystemadmin.com