Как узнать загрузку процессора и памяти в Linux — команда vmstat

Производительность (или непроизводительность) систем очень сложно оценивать «на глаз» или даже с секундомером. Ведь даже если это и получится, то из виду будут упущены ключевые детали, предоставляющие информацию о том, почему производительность может быть именно такой, а не больше (или меньше). Для выяснения причин стоит углубиться в анализ этой самой производительности более основательно. И для этих целей существуют специализированные утилиты, одной из которых является vmstat – довольно популярный инструмент (после команды top разве что), которым пользуются многие системные администраторы Linux.

Как нужно оценивать производительность?

Вообще, производительность и/или быстродействие — величины постоянные только для конкретного (и довольно короткого) промежутка времени для конкретной системы. Для более объективной оценки необходимо проводить многочисленные «замеры» в разное время в течении довольно длительного (месяц и более) периода.

Немаловажно и то, что анализ следует проводить без использования всевозможных «синтетических» тестов — т. е. только в условиях реальной и пиковой нагрузки, возникающей во время реальный задач, предусмотренных техпроцессом, регламентом в рамках реальной «производственной» необходимости. Очень часто именно в таких условиях можно выявить ошибки в конфигурации системы, приводящие к ограничениям в использовании программно-аппаратных ресурсов.

Синтаксис команды vmstat

Утилитой vmstat можно анализировать не только использование процессора, но также память — оперативную и/или дисковую. Синтаксис команды следующий:

vmstat [options] [delay [count]]

Основными аргументами являются delay – время (в секундах), в течение которого следует производить замер, а также count – количество замеров или отчётов. Если дать команду vmstat без указания количества замеров, то она будет выводить отчёты, пока не будет прервано её выполнение сочетанием клавиш .

Вывод vmstat разбит на столбцы, которые объединены в следующие категории:

  • procs – информация о процессах;
  • memory – состояние оперативной памяти;
  • swap – состояние виртуальной памяти (раздел или файл подкачки);
  • io – активность устройств хранения (диски, флешки и т. д.);
  • system – общая активность системы;
  • cpu – использование центрального процессора.

Как уже было отмечено выше, эти категории объединяют колонки из вывода vmstat по соответствующему типу информации. Стоит рассмотреть их по отдельности. Для раздела procs:

  • r – количество процессов в обрабатываемой процессором очереди;
  • b – количество процессов, стоящих в очереди на выполнение операций ввода/вывода.

Для раздела memory:

  • free – размер свободной памяти. То же значение, которое определяется командой free;
  • swpd – количество блоков, которые были перемещены в Swap;
  • buff – буферы памяти;
  • cache – кеш памяти.

Раздел swap:

  • si – общее количество блоков, считываемых системой из Swap;
  • so – общее количество блоков, перемещаемых системой в Swap.

Раздел io:

  • bi – количество блоков в секунду, считываемых с диска;
  • bo – количество блоков в секунду, записанных на диск.

Раздел system:

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

Раздел cpu:

  • us – используемое (в процентах) время для выполнения «пользовательских» (т. е. не принадлежащих ядру) задач;
  • sy — используемое (в процентах) время для выполнения задач ядра;
  • id – время (в процентах) в простое;
  • wa — время (в процентах), отведённое на ожидание операций ввода/вывода.

Опции vmstat

Доступные для vmstat опции приведены в следующей таблице:

Опция  Назначение 
-a, —active  Выводит активную и неактивную память. Доступно начиная с ядра версии 2.5.41 и выше. 
-f, —forks  Выводит количество системных вызовов fork, vfork и rfork, а также страниц виртуальной памяти, используемых этими вызовами. 
-m, —slabs  Количество используемой динамической памяти для ядра. 
-n, —one-header  Отображает заголовок таблицы результатов только один раз, а не периодически. 
-s, —stats  Переключение режима отображения вывода. 
-d, —disk  Выводит статистику использования диска. 
-w  Для больших объёмов данных увеличивает визуально ширину столбцов. 
-p, —partition device  Выводит статистику использования раздела. Необходимо указывать раздел device. 
-S, —unit character  Выводит статистику в указанных единицах [k, K, m, M] – в килобитах, килобайтах, мегабитах и мегабайтах соответственно. 
t, —timestamp  Добавлять к выводу время замеров. 
D, —disk-sum  Выводит общую статистику по использованию дисков. 

Примеры использования vmstat

Несмотря на то, что опции vmstat и позволяют получить ценные сведения, однако в большинстве случаев системные администраторы их практически не используют. Чаще всего использование vmstat сводится к следующему (что вполне достаточно):

$ vmstat 5 5
procs -----------memory------- -swap- --io-- -system-- ----cpu---- 
r b swpd free    buff   cache  si so bi   bo in   cs   us sy id wa 
1 0 820  2606356 428776 487092 0  0  4741 65 1063 4857 25 1  73 0 
1 0 820  2570324 428812 510196 0  0  4613 11 1054 4732 25 1  74 0 
1 0 820  2539028 428852 535636 0  0  5099 13 1057 5219 90 1  9  0 
1 0 820  2472340 428920 581588 0  0  4536 10 1056 4686 87 3  10 0 
3 0 820  2440276 428960 605728 0  0  4818 21 1060 4943 20 3  77 0

Вообще, сервер общего назначения считается хорошо отбалансирован в плане нагрузки, если около 50% времени он тратит на обработку пользовательских задач и ещё столько же — на работу системных вызовов, взаимодействующих с ядром. Простои в системе должны быть — это потенциал для увеличения нагрузки, но в то же время они (простои) не должны быть слишком большими — это значит, что мощности сервера расходуются впустую.

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

Заключение

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

ИТ Проффи

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: