рекомендации

суббота, 26 марта 2022 г.

Команда vmstat для начинающих

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

В данной статье мы обсудим основы использования этой утилиты, используя несколько простых для понимания примеров. Необходимо отметить, что все примеры в этой статье были протестированы на машине с Ubuntu 18.04 LTS.

Команда vmstat

Команда vmstat в Linux выводит статистику использования виртуальной памяти. Ниже приводится ее синтаксис:
vmstat [options] [delay [count]]
И вот как справочная страница утилиты объясняет ее работу:

vmstat сообщает информацию о процессах, памяти, виртуальной памяти, вводе-выводе, дисках и активности процессора.

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

Ниже приведены примеры в стиле вопросов и ответов, которые должны дать вам лучшее представление о том, как работает команда vmstat:

Q1. Как использовать vmstat?

В базовом варианте вы просто выполняете команду 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 401160 100252 1307468    0    0     5    17   49   70  0  0 100  0  0
Как показывает первая строка, выходные данные разделены на шесть разделов. Справочная страница утилиты содержит подробную информацию об этих значениях. Вот выдержка:

Procs

r: количество запущенных процессов (работающих или ожидающих выполнения).
b: количество спящих процессов.

Memory

swpd: объем используемой виртуальной памяти.
free: объем свободной памяти.
buff: количество памяти, используемой в качестве буферов.
cache: объем памяти, используемой в качестве кеша.
inact: количество неактивной памяти (опция -a).
active: количество активной памяти. (опция -a)

Swap

si: объем памяти, выгруженный с диска (/s).
so: объем памяти, перенесенный на диск (/s).

IO

bi: блоки, полученные от блочного устройства (blocks/s).
bo: блоки, отправленные на блочное устройство (blocks/s).

System

in: количество прерываний в секунду, включая часы.
cs: количество переключений контекста в секунду.

CPU

Здесь проценты от общего времени процессора.
us: время, потраченное на запуск кода, не относящегося к ядру (время пользователя).
sy: время, потраченное на выполнение кода ядра (системное время).
id: время бездействия. До версии Linux 2.5.41 это включает время ожидания ввода-вывода.
wa: время, проведенное в ожидании ввода/вывода. До Linux 2.5.41, включено в idle.
st: время, украденное из виртуальной машины. До Linux 2.6.11 неизвестно.

Q2. Как заставить vmstat автоматически обновлять свой вывод?

По умолчанию vmstat выдает выходные данные один раз. Однако, если вы хотите, чтобы vmstat автоматически обновляла свои выходные данные, вы можете сделать это, указав числовое значение в качестве входных данных для команды.

Это числовое значение действует как задержка (в секундах), после которой вывод обновляется. Например:

vmstat 3

Таким образом, вывод vmstat будет обновляться каждые 3 секунды.

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 410928 100276 1307480    0    0     5    17   49   70  0  0 100  0  0
 0  0      0 410920 100284 1307480    0    0     0   181  108  143  0  0 100  0  0
 0  0      0 410920 100292 1307480    0    0     0     7   92  132  0  0 100  0  0
 0  0      0 410920 100292 1307480    0    0     0     0   87  124  0  0 100  0  0
...
...
...

Q3. Как заставить vmstat отображать slabinfo?

Для slabinfo вам нужно использовать параметр командной строки -m. Обратите внимание, что ядро вашего дистрибутива Linux должно поддерживать slabinfo, чтобы эта опция работала. Если поддержка есть, вам нужно запустить команду с привилегиями sudo.
sudo vmstat -m
Например, в моем случае выдержка из полученного вывода:

Cache                       Num  Total   Size  Pages
ufs_inode_cache               0      0    808     40
qnx4_inode_cache              0      0    680     48
hfsplus_attr_cache            0      0   3840      8
hfsplus_icache                0      0    896     36
hfs_inode_cache               0      0    832     39
minix_inode_cache             0      0    672     48
ntfs_big_inode_cache          0      0    960     34
ntfs_inode_cache              0      0    296     55
jfs_ip                        0      0   1280     25
xfs_dqtrx                     0      0    528     31
xfs_dquot                     0      0    496     33
xfs_buf                       0      0    384     42
xfs_rui_item                  0      0    696     47
xfs_rud_item                  0      0    176     46
xfs_inode                     0      0   1024     32
xfs_efd_item                  0      0    440     37
xfs_buf_item                  0      0    272     30
xfs_trans                     0      0    232     35
xfs_da_state                  0      0    480     34
xfs_btree_cur                 0      0    224     36
...
...
...

Q4. Как сделать отчет об активности диска с помощью vmstat?

Используйте для этого параметр командной строки -D
vmstat -D
Вот вывод этой команды в моей системе:

10 disks
            2 partitions
        15066 total reads
         5937 merged reads
      1272794 read sectors
        20063 milli reading
       155026 writes
       103687 merged writes
      4602472 written sectors
       105279 milli writing
            0 inprogress IO
          126 milli spent IO

Q5. Как заставить vmstat добавлять временную метку к каждой строке вывода?

Чтобы команда vmstat добавляла временную метку к каждой выходной строке, используйте командную строку -t:
vmstat -t

$ vmstat 2 -t
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- -----timestamp-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st                 UTC
 2  0      0 410116 100432 1308160    0    0     5    17   49   70  0  0 100  0  0 2020-05-08 09:40:05
 0  0      0 410116 100432 1308160    0    0     0    88  100  136  0  0 100  0  0 2020-05-08 09:40:07
 0  0      0 410116 100440 1308160    0    0     0    18   90  139  0  0 100  0  0 2020-05-08 09:40:09
 0  0      0 410116 100440 1308160    0    0     0     0   93  126  0  0 100  0  0 2020-05-08 09:40:11
 0  0      0 410368 100448 1308160    0    0     0    10  107  144  0  0 100  0  0 2020-05-08 09:40:13
 0  0      0 410368 100448 1308160    0    0     0     0   86  122  0  0 100  0  0 2020-05-08 09:40:15
 0  0      0 410368 100448 1308160    0    0     0     0  101  135  0  0 100  0  0 2020-05-08 09:40:17

Выделенные записи показывают метку времени, включенную в каждую строку.

Заключение

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

Комментариев нет:

Отправить комментарий