В системах Linux существует большое количество инструментов для мониторинга системы. vmstat — это один из них.
С помощью этой утилиты можно получить статистику использования виртуальной памяти, системных процессов, памяти, подкачке, прерываниях, ввод-вывод блочными устройствами, активности диска и центрального процессора. vmstat — является очень важной частью мониторинга в Linux.
Вы можете сразу начать использовать утилиту vmstat, просто введя имя команды в строку, но я бы рекомендовал сначала ознакомиться с основными опциями для более эффективного использования.
Базовый синтаксис vmstat.
Базовый синтаксис команды vmstat следующий:
$ vmstat [options] [delay[count]]
- [options]: вы можете изменить вывод по умолчанию с помощью опций.
- [delay[count]]. — установка задержки и частоты обновления информации.
И, как говорилось выше, опции можно не использовать. И если вы попытаетесь запустить на своем экране 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 4586948 4532 958900 0 0 0 2 1 11 1 0 99 0 0
Использование vmstat
Есть несколько опций для использования с 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 4606004 4548 966192 0 0 0 2 7 17 1 0 99 0 0
Выход по умолчанию имеет шесть заголовков со следующими именами: procs, memory, swap, io, system и CPU.
- procs — запущенные процессы, имеют две подкатегории r и b
- r — означает исполняемый процесс. Он показывает количество процессов, которые запущены или ожидают выполнения.
- b — число заблокированных процессов
- memory — этот раздел отвечает за статистику в отношении памяти. Здесь имеется четыре подраздела
- swpd: использование файла подкачки
- free: свободная память
- buff: объем памяти, используемой в качестве буфера
- cache: объем кэш-памяти.
- swap: сведения об использовании файла подкачки.
- si: количество выгружаемых данных с диска (диск => память)
- so: количество выгружаемых данных на диск (память => диск)
- io — информация о блочных устройствах или файлах
- bi: количество блоков отправленных с блочного устройства
- bo: количество блоков отправленных на блочное устройство
- system — информация о системных прерываниях и переключениях контекста.
- in: количество прерываний в секунду.
- cs: количество переключений состояний процесса.
- cpu: информация о нагрузке на ЦП (отображается в процентах)
- us: время потраченное на запуск пользовательского ПО (пользовательского пространства)
- sy: время потраченное на запуск процессов из ядра (в пространстве ядра)
- id: время простоя
- wa: время ожидания IO (ввода/вывода)
- st: среднее время ожидания завершения процесса.
Поиск активной и неактивной памяти.
Неактивная и активная память не является частью вывода по умолчанию. Но можно легко найти неактивное и активное использование памяти, используя параметр -a.
$ vmstat -a procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free inact active si so bi bo in cs us sy id wa st 0 0 0 4560008 610600 471456 0 0 0 2 18 5 1 0 99 0 0
Неактивная память — это пространство, которое недавно использовалось, а активная память используется запущенными в данный момент программами.
Изменить единицы измерения в выводе vmstat.
Вывод по умолчанию показывает информацию в килобайтах, что на сегодняшний день не всегда актуально. Вы можете изменить единицы измерения различных размеров, таких как k, K, m или, M, с помощью параметров -S или ——unit.
Чтобы показать данные в мегабайтах, вы можете ввести следующую команду.
$ vmstat -a -S M procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free inact active si so bi bo in cs us sy id wa st 0 0 0 4474 574 460 0 0 0 2 18 5 1 0 99 0 0
Жалко, что Гигабайтов — нет, в скором времени, наверное очень актуально будет.
Найти количество fork с начала загрузки.
Fork показывают количество процессов, которые были созданы из родительского процесса, а процесс fork называется дочерним по отношению к родительскому процессу.
Мы можем найти количество fork с помощью -f или —forks.
$ vmstat -f 1442646 forks
Приведенный выше вывод показывает количество fork, созданных с момента загрузки системы.
Проверить состояние диска с помощью vmstat.
Вы можете использовать vmstat для определения производительности диска вместе с информацией о памяти, vmstat будет отображать количество периферийных устройств хранения, операций чтения и записи вместе с вводом-выводом.
Для этого используется параметр -d или —disk
$ vmstat -d disk- ------------reads------------ ------------writes----------- -----IO------ total merged sectors ms total merged sectors ms cur sec sda 317 1 91170 227 103 143 1968 112 0 0 sdb 14240 70 1100269 7811 431943 113120 8710739 292177 0 314 sr0 9 0 3 5 0 0 0 0 0 774883
На нем показаны три блочных устройства, sda и sdb для SSD и sr0 в качестве CD-ROM.
Если вам интересно узнать общую статистику по всем дискам, введите следующую команду.
$ vmstat -D 3 disks 1 partitions 28692 total reads 71 merged reads 2283967 read sectors 15607 milli reading 976344 writes 113263 merged writes 17423642 written sectors 591969 milli writing 0 inprogress IO 775511 milli spent IO
Получить всю информацию о памяти, аналогичную /proc/meminfo
Для получение информации, такой как память, ЦП, время загрузки, форки, события и т. д., нужно использовать параметр -s.
Добавляем несколько параметров для красивого вывода и получаем следующее
$ vmstat -s -S M 5747 M total memory 305 M used memory 460 M active memory 575 M inactive memory 4473 M free memory 4 M buffer memory 964 M swap cache 1023 M total swap 0 M used swap 1023 M free swap 1013132 non-nice user cpu ticks 27740 nice user cpu ticks 378347 system cpu ticks 195851048 idle cpu ticks 9834 IO-wait cpu ticks 140679 IRQ cpu ticks 106710 softirq cpu ticks 0 stolen cpu ticks 595719 pages paged in 4362616 pages paged out 0 pages swapped in 0 pages swapped out 337351830 interrupts 354454159 CPU context switches 1670788740 boot time 1453745 forks
Хотя вы можете найти всю эту информацию в /proc/meminfo, но там не сможете контролировать размерность соответствующих столбцов. Так что vmstat удобнее.
Использование отметки времени.
Вы можете изменить вывод vmstat по умолчанию с указанием временной метки, который может быть полезен в параметрах задержки. Чтобы напечатать временную метку, используйте -t или –timestamp.
$ vmstat -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 MSK 1 0 0 4580344 4564 988024 0 0 0 2 19 6 1 0 99 0 0 2022-12-23 09:44:05
Использование задержки, чтобы найти последнюю информацию о памяти.
Вы можете использовать параметры задержки для мониторинга производительности системы с определенным интервалом времени. Другими словами, вы можете задать интервал через который команда vmstat будет выполняться автоматически.
Если вам требуется распечатывать системную информацию каждые 2 секунды, введите следующую команду. Для отмены выполнения, нажмите Ctrl-C.
$ 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 4580240 4564 988044 0 0 0 2 19 6 1 0 99 0 0 0 0 0 4580044 4564 988044 0 0 0 0 527 534 1 1 99 0 0 0 0 0 4580016 4564 988044 0 0 0 0 535 523 0 1 99 0 0 0 0 0 4579884 4564 988044 0 0 0 0 553 529 1 1 99 0 0
Вы также можете автоматически остановить вывод vmstat после определенного количества подсчетов или обновлений. Например, если вы хотите отображать системную информацию каждые 2 секунды, но команда должна прерываться после пяти циклов, то можно использовать следующую команду
$ vmstat 2 5 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 4673324 4580 898648 0 0 0 2 4 12 1 0 99 0 0 0 0 0 4673064 4580 898648 0 0 0 0 322 359 0 1 99 0 0 0 0 0 4673208 4580 898648 0 0 0 0 327 368 0 1 99 0 0 1 0 0 4673040 4580 898648 0 0 0 9 310 357 1 0 99 0 0 0 0 0 4673064 4580 898648 0 0 0 0 337 381 0 0 99 0 0
Иногда разобраться в выводе может стать сложной задачей, когда вы запускаете указанную выше команду в течение более длительного периода. Например, в приведенном выше примере, невозможно узнать точное время вывода и надо держать в голове с какими параметрами мы запустили команду.
Чтобы решить эту проблему, вы можете использовать -t или —timestamps вместе с задержкой и количеством.
$ vmstat -t 2 5 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- -----timestamp----- r b swpd free buff cache si so bi bo in cs us sy id wa st MSK 1 0 0 4673472 4580 898656 0 0 0 2 4 12 1 0 99 0 0 2022-12-23 19:49:36 0 0 0 4672992 4580 898656 0 0 0 0 395 399 0 1 99 0 0 2022-12-23 19:49:38 0 0 0 4673352 4580 898656 0 0 0 0 343 354 0 1 99 0 0 2022-12-23 19:49:40 0 0 0 4673084 4580 898656 0 0 0 0 343 364 0 1 99 0 0 2022-12-23 19:49:42 0 0 0 4673224 4580 898656 0 0 0 0 348 369 1 0 99 0 0 2022-12-23 19:49:44
Заключение.
На этом все пожалуй. Но команда vmstat не ограничивается параметрами приведенными выше, это частные применения, которые использовались мной чаще всего. Чтобы поподробнее узнать о том, какие опции есть еще у этой команды, советую использовать соответствующий man.
Was this helpful?
0 / 0