
Утилита vmstat для мониторинга производительности Unix/Linux
vmstat показывает информацию о процессах, памяти, страницах, I/O, и о работе процессора. Пользователи vmstat могут указать интервал дискретизации, который дает возможность наблюдать работу системы в близком к реальному времени.
Vmstat инструмент доступен работать на большинстве операционных системах UNIX и Unix-подобных (FreeBSD, Linux или Solaris). Синтаксис и вывод vmstat иногда немного отличается между различными операционными системами.
В своей статье «Утилита vmstat для мониторинга производительности Unix/Linux» я хотел бы рассказать о замечательной утилите vmstat которая нужна для мониторинга производительности в ОС Unix/Linux. Я покажу на готовых примерах как пользоваться данным инструментом. Если vmstat не доступны на вашем сервере, то необходимо установить пакет Sysstat.
Установка vmstat для мониторинга производительности Unix/Linux
Сейчас я расскажу как можно установить данную утилиту на различные Unix/Linux ОС.
Для RedHat’s используйте команду:
# yum -y install sysstat
Для Debian’s используйте команду:
# apt-get install sysstat
После чего, можно настроить немного sysstat, для этого отредактируем файл:
vim /etc/default/sysstat
Приводим строку к виду:
[...] ENABLED="true" [...]
И последним действием будет добавление задания в кронтаб:
# vim /etc/cron.d/sysstat
Находим:
5-55/10 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1
Заменяем на:
*/2 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1
После чего, выполняем перезапуск:
# service sysstat restart
Или
# /etc/init.d/sysstat restart
Для остальных дистрибутивов можно установить данную утилиту с исходного кода.
- Скачиваем утилиту:
# cd /usr/local/src && wget http://sebastien.godard.pagesperso-orange.fr/sysstat-11.1.6.tar.gz
- Выполним распаковку и перейдем в каталог:
# tar -xvf sysstat-* && cd sysstat-*
- Во-первых, вы можете использовать iconfig (который даст вам гибкость при выборе/вводt настроенных значений для каждого параметра):
# ./iconfig
Для помощи, можно использовать команду:
# ./configure --help
- Выполняем сборку, установку Sysstat пакета:
# ./configure && make && make install
Можно использовать:
# ./configure --prefix=/usr
И тогда утилита будет установлена в указанную папку.
Утилита vmstat для мониторинга производительности Unix/Linux
И так, утилита уже установлена на сервере и можно приступать к ее использованию. Сейчас я расскажу как пользоваться этой программой. Приведу несколько наглядных примеров, чтобы понималось лучше.
Простой пример использования vmstat
По умолчанию, vmstat будет отображать использование памяти (в том числе и своп), как показано ниже:
$ vmstat
На выходе, vmstat содержит следующие поля:
- Procs – r: Общее количество процессов, ожидающих запуска.
- Procs – b: Общее количество занятых процессов.
- Memory – swpd: Использованная виртуальная память.
- Memory – free: Свободная виртуальная память.
- Memory – buff: Память используемая в качестве буфера.
- Memory – cache:Память используемая в качестве кэша.
- Swap – si: Память которая использует СВАП (swapped) с диска (за каждую секунду).
- Swap – so:Память которая использует СВАП (swapped) на диск (за каждую секунду).
- IO – bi: Блоки «in». Т.е. блоки, посылаемые от устройства (за каждую секунду).
- IO – bo: Блоки «out». Блоки, посылаемые на устройство (за каждую секунду).
- System – in: Количество прерываний в секунду.
- System – 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) для завершения, прежде чем сможет продолжить выполнять задачи обработки.
vmstat — Вывод активной (active) и неактивной (inactive) памяти.
По умолчанию vmstat не отображает эту информацию. Используйте опцию «-a», чтобы отобразить активную и неактивную информацию о памяти, как показано ниже. В приведенном ниже примере, есть шесть колонок:
$ vmstat -a
Free – Сумма (количество) свободной памяти/время простоя.
si – Загружен за каждую секунду с диска в килобайтах.
so – Выгружена на каждый второй диск в килобайтах.
Примечание: Если вы запустите vmstat без параметров он покажет отчет с момента загрузки системы.
vmstat — Показать количество forks с момента последней загрузки.
Это покажет все системные вызовы, сделанные fork в системе с момента последней загрузки. Это показывает все fork-и, vfork-и, и клон системного вызова.
$ vmstat -f 8972 forks
vmstat – Выполнить каждые Х секунд (для «y» количества раз).
Чтобы выполнить каждые 3 секунды, выполните следующие действия. Вы должны нажать Ctrl-C, чтобы остановить это действие:
$ vmstat 3
Чтобы выполнить каждые 3 секунды и выполнить это только 13 раз, выполните следующие действия. Вам не нужно нажимать Ctrl-C в этом примере. После выполнения в 13 раз, утилита автоматически остановится:
$ vmstat 2 13
Использование опцию «-w», чтобы увеличить ширину выходных столбцов, как показано ниже. Это даст лучшую читаемость:
$ vmstat -w 1 3
vmstat – Показать метки (timestamp).
При использовании vmstat для контроля использования памяти, было бы неплохо посмотреть метку вместе с каждой позицией. Используйте опцию «-t» для отображения штампа времени (timestamp), как показано ниже:
$ vmstat -t 1 99
Проверялось это в версии:
$ vmstat -V procps version 3.2.8
Примечание: Если вы используете старую версию vmstat, опция «-t» могут быть недоступны. В этом случае, используйте метод, который я ранее предоставлял для отображения метки в vmstat.
vmstat – Вывод информации о плите (slab).
Используйте опцию «-m», чтобы вывести данные slab, как показано ниже:
$ vmstat -m Cache Num Total Size Pages bridge_fdb_cache 0 0 64 59 libfc_em 0 0 256 15 libfc_fcp_pkt 0 0 256 15 scsi_tgt_cmd 0 0 80 48 nf_conntrack_expect 0 0 240 16 nf_conntrack_ffffffff81b280e0 72 72 312 12 fib6_nodes 7 59 64 59 ip6_dst_cache 7 10 384 10 ndisc_cache 9 15 256 15 ip6_mrt_cache 0 0 128 30 RAWv6 67 70 1088 7 UDPLITEv6 0 0 1024 4 [...]
vmstat – Вывести статистику в виде таблицы.
Можете отобразить вывод vmstat в табличном формате, используя опцию -s, как показано ниже:
$ vmstat -s
На выходе получаем следующие данные:
vmstat – Показать дисплей (display unit).
Вы можете выбрать то, что хотите напечатать. Использование параметр «-S» с последующим k (1000), K (1024), m (1000000), M (1048576) байт. Если вы не выбираете никакую опцию, то vmstat будет использовать параметр K (1024):
$ vmstat -S k
vmstat – Вывести статистику диска.
Используйте опцию «d» для отображения статистики диска, как показано ниже. Это покажет чтение/запись и статистику ввода / вывода (I/O) диска:
$ vmstat -d
vmstat – Показать суммарную статистику по диску.
vmstat может показать статистику диска, если вы хотите. Используйте параметр «-D» для этого:
$ vmstat -D
vmstat –Показать статистику по разделам на диске.
Для отображения статистики I / O на конкретном разделе диска служит опция «-p», как показано ниже:
$ vmstat -p sda1
Получаем:
vmstat – Вывод информации на экран в MB.
По умолчанию vmstat отображает информацию о памяти в кб. Для вывода в мегабайтах, используйте параметр «-S м», как показано ниже.
$ vmstat -S m
или
$ vmstat -S M 1 5
На этом у меня все, тема «Утилита vmstat для мониторинга производительности Unix/Linux» завершена.