VMSTAT

 

VMSTAT - утилита показывает информацию о процессах, памяти, страницах, I/O, и о работе процессора.

Первый отчет команды vmstat содержит информацию, накопленную с момента загрузки системы до вызова команды vmstat. В каждом следующем наборе выдается информация, собранная за предшествующий интервал времени.

 

Ключи:

-f  -количество форков с последней загрузки

-w - красивый по ширине вывод

-t - добавить метки времени

-s - вывести статистику в виде таблицы

-d - добавить статистику дисков

-D  - суммарная статистика дисков

-p   - статистика по разделам диска



Выполнить vmstat каждые 5 секунд, 8 раз:

# vmstat 5 8

Красивый вывод:

# vmstat -w 5 8

Статистика в мегабайтах:

# vmsat -S m 5 8

Статистика дисков:

# vmsat -d

Суммарная статистика по дискам:

# vmstat -D

Статистика раздела диска:

# vmsat -p sda1

Статистика в мегабайтах:

# vmsat -S m

Вывод информации о slab:

# sudo vmstat -m

Slab – объём памяти, за счет которого кэш может увеличиваться или уменьшаться. Он представляет собой распределение памяти в кэш, а его размер обычно кратен размеру страницы памяти. Slab должен содержать список свободных буферов, а также список буферов, которые были выделены (в случае большого размера slab’а).

  1. Кэш: кэш представляет собой небольшой объём очень быстрой памяти. Здесь мы используем кэш как память для хранения таких объектов, как семафоры, дескрипторы процессов, объекты файлов и т. д. Каждый кэш способен хранить только один тип объектов.
  2. Slab: slab представляет собой непрерывный участок памяти, обычно составленный из нескольких физических смежных страниц. Кэш состоит из одного или более slab’ов.




vmstat 5 8

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 1626260 343384      0 501324   17   16    45  82    8   11 12  1    86   1    0

0  0 1626256 320320      0 523240   13    0    50  97 1531 1943  9  2 89  1  0

 

vmstat содержит следующие поля:

  • Procs – r: Среднее количество процессов, которые каждую секунду находятся в очереди выполнения(т.е. стоят в очереди на выполнение процессором). В это количество не входят процессы, находящиеся в режимах ожидания различных событий (как то , ввод с терминала, дисковый и сетевой ввод-вывод и т.п.). Усредненное значение этой величины называется Load Average и его можно видеть в выводе команд top и uptime. Высокое значение r(Load Average) говорит о том, что системе потенциально не хватает производительности. Для всех систем, за исключением SMP, оно должно быть меньше пяти.
  • Procs – b: Количество процессов в очереди ожидания, заблокированных на операциях дискового ввода-вывода, которые требуют завершения. В этой очереди находятся нити, ожидающие освобождения ресурса или выполнения операции ввода-вывода. Кроме того, в эту очередь помещаются нити, ожидающие загрузки одной из своих страниц в оперативную память. Обычно это значение близко к нулю.
  • Memory – swpd: Использованная виртуальная память.
  • Memory – free: Свободная виртуальная память(число свободных страниц).
  • Memory – buff: Память используемая в качестве буфера.
  • Memory – cache:Память используемая в качестве кэша.
  • Swap – si: Количество памяти выгруженной в области подкачки (swap).
  • Swap – so: Количество памяти загруженной из области подкачки (swap).
  • IO – bi: Количество блоков информации прочитанных с жестких дисков в секунду (blocks/s).
  • IO – bo: Количество блоков информации записанных на жесткие диски в секунду (blocks/s).
  • System – in:  Количество прерываний в секунду.
  • System – cs: Число переключений контекста. Все время работы процессора разделяется на логические кванты времени по 10 миллисекунд. Любая нить выполняется до тех пор, пока не истечет квант времени, пока она не будет замещена нитью с более высоким приоритетом, либо пока она добровольно не передаст управление другой нити. Когда управление передается другой нити, контекст, или рабочая среда, предыдущей нити сохраняется, а вместо него загружается контекст текущей нити. В операционной системе предусмотрена очень эффективная процедура переключения контекста, поэтому на переключение контекста тратится лишь незначительная часть ресурсов. Однако при значительном росте числа переключений контекста, например, когда значение cs становится намного больше скорости дискового ввода-вывода и скорости передачи пакетов по сети, необходимо дополнительно проанализировать ситуацию.
  • CPU – us, sy, id, wa, st: Процессорное время пользователя ( CPU user time), Системное время (system time), время простоя (idle time), время ожидания (wait time).




Давайте посмотрим, как читать информацию, представленную с vmstat:

Procs

Procs имеет r и b колонки. Колонка r показывает общее число процессов, ожидающих доступа для процессора. В то время как столбец «b» означает общее количество не процессов в состоянии сна.

Memory

Memory имеет следующие колонки: swpd, free, buff и cache. Эта информация такая же и для команды «free -m». Колонка swpd показать вам, сколько памяти было swapped на файл или диск. Колонка free показывает вам незанятую память (unallocated memory available). Buff колонка показывает сколько памяти в использовании. Колонка cache показать вам как много памяти может быть swapped в файле подкачки или на диска, если есть некоторые приложения которые используют их.

Swap

Swap показать нам, сколько памяти отправлено или получено из системы подкачки. Колонка «si» говорит нам, сколько памяти было перемещено из свопа в реальную памяти в секунду. Колонка «so»говорит нам, сколько памяти было перемещено из реальной памяти в swap.

I/O

Колонка «io» показывает нам сумму входной и выходной активности в секунду в блоках (terms) для чтения и для блока записи. Колонка «bi» говорит нам о количестве блоков, полученных и bo говорит о посланном номере блоков.

System

Система покажет нам количество системных операций в секунду. Число в столбце говорит о системном номере прерываний в секунду. В столбце CS, сообщается нам количество переключений контекста, которые система делает для того, чтобы обработать все задачи.

CPU

Процессор показать нам нагрузку на CPU ресурсы. Колонка «us» говорит о том, как много времени процессор тратит на процессы не в ядре. Колонка «sy» говорят нам о том, как много времени процессор тратит на процессы ядра связаных между собой. В столбце ID говорится о том, как долго процессор простаивает. В столбце «wa», говорится нам, сколько времени процессор ждал операции ввода/вывода (I/O) для завершения, прежде чем сможет продолжить выполнять задачи обработки.



ВАЖНО!

  • Если сумма значений в полях us и sy (соответственно пользователь и система) в разделе ресурсов cpu в каком-либо интервале превышает 90%, то нагрузка на ЦП в этом интервале была близка к предельной.
  • Сокращения si и so означают количество операций загрузки и выгрузки страниц из области подкачки (swap). Если эти операции выполнялись, то объем оперативной памяти недостаточно, стоит задуматься об увеличении.
  • Если значение в колонке wa (ожидающие операции ввода-вывода) отлично от нуля (в то время как значения в колонках si и so нулевые), то это означает, что некоторая часть времени уходит на ожидание операций ввода-вывода, поэтому производительность некоторых процессов в системе ограничена ресурсами устройств ввода-вывода. Для проверки можно использовать iostat.

 

Материалы:

https://wiki.dieg.info/vmstat