Поделиться через


Сбор метрик производительности для виртуальной машины Linux

Развернуть в Azure

Область применения: ✔️ виртуальные машины Linux

В этой статье описывается, как получить метрики производительности из виртуальной машины Linux в Microsoft Azure с помощью служебных программ Sysstat (средств мониторинга производительности). В нем приведены примеры использования этих служебных программ и чтения выходных данных.

Для сбора счетчиков производительности в Linux доступны несколько команд. Такие команды, как vmstat и uptime предоставление важных системных метрик, таких как использование ЦП, системная память и системная загрузка. Большинство этих команд предварительно установлены по умолчанию, а другие могут быть легко доступны из репозиториев по умолчанию.

В зависимости от типа метрик эти команды можно классифицировать по следующим категориям:

Установка служебных программ Sysstat для Linux

Служебные программы Sysstat можно установить на виртуальной машине Linux с помощью команды Bash или функции запуска с помощью Azure CLI. Если вы используете команды Azure CLI, указанные в этой статье, убедитесь, что заданы следующие две переменные среды. Необходимо заменить имя группы ресурсов и имя виртуальной машины фактическими значениями.

export MY_RESOURCE_GROUP_NAME="yourResourceGroup"
export MY_VM_NAME="yourVM"

Примечание.

Для некоторых из следующих команд требуются права корневого доступа.

Чтобы установить sysstat пакет на виртуальной машине Linux, выполните следующую команду:

Ubuntu:

sudo apt install sysstat -y

Red Hat:

sudo dnf install sysstat -y

SUSE:

sudo zypper install sysstat --non-interactive

ЦП

mpstat

Команда mpstat является частью sysstat пакета. В нем отображается загрузка ЦП и среднее значение каждого ЦП, которое полезно при определении использования ЦП. Эта mpstat команда содержит обзор использования ЦП доступных ЦП, помогая определить баланс использования и при перегрузке одного ЦП.

Ниже приведен пример запуска mpstat:

mpstat -P ALL 1 2
  • -P: указывает процессор для отображения статистики, а ALL аргумент указывает, что должна отображаться статистика всех сетевых ЦП в системе.
  • 1: первый числовой аргумент указывает интервал (в секундах), при котором mpstat должно обновляться и отображаться новая статистика.
  • 2: второй числовой аргумент указывает количество раз mpstat , когда должна отображаться статистика. В этом случае она выводит две статистики через один секунду.

Можно увеличить число аргументов времени для более длительного времени сбора данных. Как правило, достаточно трех или пяти секунд. Для систем с более высоким числом ядер сокращение его до двух секунд может помочь управлять объемом отображаемых данных.

Чтение выходных данных mpstat

Ниже приведен пример выходных mpstatданных:

Linux 5.14.0-362.8.1.el9_3.x86_64 (alma9)       02/21/24        _x86_64_        (8 CPU)

16:55:50     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
16:55:51     all   69.09    0.00   30.16    0.00    0.38    0.38    0.00    0.00    0.00    0.00
16:55:51       0   77.23    0.00   21.78    0.00    0.99    0.00    0.00    0.00    0.00    0.00
16:55:51       1   97.03    0.00    0.99    0.00    0.99    0.99    0.00    0.00    0.00    0.00
16:55:51       2   11.11    0.00   88.89    0.00    0.00    0.00    0.00    0.00    0.00    0.00
16:55:51       3   11.00    0.00   88.00    0.00    0.00    1.00    0.00    0.00    0.00    0.00
16:55:51       4   83.84    0.00   16.16    0.00    0.00    0.00    0.00    0.00    0.00    0.00
16:55:51       5   76.00    0.00   23.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00
16:55:51       6   96.00    0.00    3.00    0.00    0.00    1.00    0.00    0.00    0.00    0.00
16:55:51       7  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
[...]

Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
Average:     all   74.02    0.00   25.52    0.00    0.25    0.21    0.00    0.00    0.00    0.00
Average:       0   63.00    0.00   36.67    0.00    0.33    0.00    0.00    0.00    0.00    0.00
Average:       1   97.33    0.00    1.67    0.00    0.33    0.67    0.00    0.00    0.00    0.00
Average:       2   42.33    0.00   57.33    0.00    0.33    0.00    0.00    0.00    0.00    0.00
Average:       3   34.33    0.00   65.00    0.00    0.33    0.33    0.00    0.00    0.00    0.00
Average:       4   88.63    0.00   11.04    0.00    0.00    0.33    0.00    0.00    0.00    0.00
Average:       5   71.33    0.00   28.33    0.00    0.33    0.00    0.00    0.00    0.00    0.00
Average:       6   95.65    0.00    4.01    0.00    0.00    0.33    0.00    0.00    0.00    0.00
Average:       7   99.67    0.00    0.00    0.00    0.33    0.00    0.00    0.00    0.00    0.00

Есть несколько важных вещей, которые следует отметить. Первая строка содержит полезные сведения:

  • Ядро и выпуск: 5.14.0-362.8.1.el9_3.x86_64
  • Имя узла: alma9
  • Дата: 02/21/24
  • Архитектура: _x86_64_
  • Общее количество ЦП (эта информация полезна для интерпретации выходных данных других команд): (8 CPU)

Затем отображаются метрики для ЦП. Ниже приведено описание каждого столбца:

  • Time: метка времени, указывающая, когда был собран пример.
  • CPU: числовой идентификатор ЦП. all Идентификатор представляет среднее значение для всех ЦП.
  • %usr: процент использования ЦП процессами пользовательского пространства, как правило, пользовательскими приложениями.
  • %nice: процент использования ЦП процессами пользовательского пространства с хорошим значением (приоритетом).
  • %sys: процент использования ЦП процессами пространства ядра.
  • %iowait: процент времени простоя ЦП, ожидающего невыполненных операций ввода-вывода.
  • %irq: процент времени, затраченного на обслуживание оборудования.
  • %soft: процент времени, затраченного на обслуживание программного обеспечения, прерывает работу программного обеспечения.
  • %steal: процент времени ЦП, затраченного на обслуживание других виртуальных машин (не применимо к Azure из-за нехватки ресурсов ЦП).
  • %guest: процент времени ЦП, затраченного на обслуживание виртуальных машин ЦП (неприменимо к Azure; относится только к системам без операционной системы под управлением виртуальных машин).
  • %gnice: процент времени ЦП виртуальной ЦП с хорошим значением, потраченным на обслуживание виртуальных машин (не применимо к Azure; только к системам без операционной системы под управлением виртуальных машин).
  • %idle: процент времени простоя ЦП и не ожидающий запросов ввода-вывода.

Основные рекомендации

Ключевые аспекты при проверке выходных mpstatданных:

  • Убедитесь, что все ЦП загружены должным образом, а не один ЦП обслуживает всю нагрузку. Эти сведения могут указывать на однопоточное приложение.
  • Найдите здоровый баланс между %usr и %sys, как противоположность указывает больше времени, потраченного на фактическую рабочую нагрузку, чем обслуживание процессов ядра.
  • %iowait Ищите проценты, так как высокие значения могут указывать на систему, которая постоянно ожидает запросов ввода-вывода.
  • Высокий %soft уровень использования может указывать на высокий сетевой трафик.

vmstat

Эта vmstat программа широко доступна в большинстве дистрибутивов Linux. Он предоставляет общий обзор использования ЦП, памяти и дискового ввода-вывода в одной области.

Ниже приведен пример запуска vmstat:

vmstat -w 1 5
  • -w: используйте широкую печать для поддержания согласованности столбцов.
  • 1: первый числовой аргумент указывает интервал в секундах между каждым отчетом. В этом случае vmstat выводит отчет каждые одну секунду.
  • 5: второй числовой аргумент указывает количество отчетов vmstat, которое должно быть создано. При 5 указании здесь 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
  14    0            0     26059408          164       137468    0    0    89  3228   56  122   3   1  95   1   0
  14    1            0     24388660          164       145468    0    0     0  7811 3264 13870  76  24   0   0   0
  18    1            0     23060116          164       155272    0    0    44  8075 3704 15129  78  22   0   0   0
  18    1            0     21078640          164       165108    0    0   295  8837 3742 15529  73  27   0   0   0
  15    2            0     19015276          164       175960    0    0     9  8561 3639 15177  73  27   0   0   0

Выходные данные классифицируются по следующим шести группам. Выходные данные показывают общую статистику для всей системы (то есть все ЦП и агрегированные устройства).

  • procs: статистика для процессов.
  • memory: статистика для системной памяти.
  • swap: статистика для переключения.
  • io: статистика операций ввода-вывода диска.
  • system: статистика для переключений контекста и прерываний.
  • cpu: статистика использования ЦП.

procs

В разделе procs есть два столбца:

  • r: количество выполняемых процессов в очереди выполнения.
  • b: количество процессов, заблокированных в ожидании ввода-вывода.

В этом разделе немедленно показано, есть ли узкие места в системе. Большое число в любом столбце указывает на процессы очереди и ожидания ресурсов.

Столбец r указывает количество процессов, ожидающих выполнения ЦП. Проще интерпретировать это число следующим образом: если количество процессов в r очереди превышает общее количество ЦП, можно определить, что ЦП системы слишком сильно загружен, чтобы выделить время ЦП для всех процессов, ожидающих выполнения.

Столбец b указывает количество процессов, ожидающих выполнения и блокирования запросов ввода-вывода. Большое число в этом столбце указывает на систему, которая испытывает высокий уровень ввода-вывода, и процессы не могут выполняться из-за других процессов, ожидающих завершения запросов ввода-вывода. Это также может указывать на высокую задержку диска.

memory

В разделе памяти четыре столбца. Значения отображаются в байтах. В этом разделе представлен общий обзор использования памяти.

  • swpd: объем используемой памяти буфера.
  • free: объем свободной памяти.
  • buff: объем памяти, используемой для буферов.
  • cache: объем памяти, используемой для кэша.

swap

Раздел буфера содержит два столбца:

  • si: объем переключения памяти (перемещается из системной памяти в секунду).
  • so: объем переключения памяти (перемещен из переключения в системную память) в секунду.

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

Ио

Раздел интернета вещей содержит два столбца. Эти значения находятся в блоках в секунду.

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

system

Системный раздел содержит два столбца:

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

Большое количество прерываний в секунду может указывать на систему, занятую аппаратными устройствами (например, сетевыми операциями).

Большое количество коммутаторов контекста может указывать на занятую систему с множеством коротких процессов. Здесь нет хорошего или плохого числа.

cpu

В cpu разделе есть пять столбцов:

  • us: процент использования пространства пользователя.
  • sy: процент использования системного пространства (пространства ядра).
  • id: процент использования времени простоя ЦП.
  • wa: процент использования времени ожидания простоя ЦП с помощью операций ввода-вывода.
  • st: процент использования времени ЦП, затраченного на обслуживание других виртуальных ЦП (неприменимо к Azure).

Значения представлены в процентах. Эти значения совпадают с теми, которые представлены mpstat служебной программой и служат для предоставления высокого уровня обзора использования ЦП. Следуйте процессу, аналогичному mpstat при просмотре этих значений.

время безотказной работы

Служебная uptime программа предоставляет широкий обзор системной нагрузки со средними значениями нагрузки.

uptime

Чтение выходных данных времени простоя

Ниже приведен пример выходных uptimeданных:

16:55:53 up 9 min,  2 users,  load average: 9.26, 2.91, 1.18

Отображается load average три числа. Эти числа соответствуют системной нагрузке и 1515 интервалам минут.

Чтобы интерпретировать эти значения, важно знать количество ЦП, доступных в системе, полученное из предыдущих mpstat выходных данных. Значение зависит от общего количества ЦП, поэтому при использовании mpstat выходных данных в качестве примера система имеет восемь ЦП, а средняя 8 нагрузка будет означать, что все ядра загружаются на 100 %.

Значение 4 будет означать, что половина ЦП загружается на 100 % (или общую нагрузку 50% для всех ЦП). В предыдущих выходных данных среднее значение нагрузки 9.26— это означает, что ЦП загружается примерно на 115 %.

Значения 1mи 5m15m интервалы помогают определить, увеличивается ли нагрузка или уменьшается с течением времени.

Кроме того, nproc для получения количества ЦП можно использовать команду.

Память

Для памяти две команды могут получить сведения об использовании памяти.

free

Команда free показывает использование системной памяти.

Ниже приведен пример запуска free:

free -h
  • -h: этот параметр указывает формат выходных данных, доступный для чтения человеком. Он преобразует размеры памяти из байтов в более удобочитаемый формат (килобайты, мегабайты и гигабайты) и добавляет соответствующие метки единиц (КБ, МБ и ГБ).

Чтение бесплатных выходных данных

Ниже приведен пример выходных freeданных:

               total        used        free      shared  buff/cache   available
Mem:            31Gi        19Gi        12Gi        23Mi        87Mi        11Gi
Swap:           23Gi          0B        23Gi

Из выходных данных просмотрите системную total память и available память, а также usedtotal переключение. Доступная память учитывает память, выделенную для кэша, которая может быть возвращена пользовательским приложениям. Некоторые использование буферов обычно используется в современных ядрах, так как некоторые редко используемые страницы памяти можно перемещать для переключения.

переключение

Команда swapon отображает, где настроена переключение, а также соответствующие приоритеты устройств или файлов.

Ниже приведен пример запуска swapon:

swapon -s

Ниже приведен пример выходных swaponданных:

Filename      Type          Size          Used   Priority
/dev/zram0    partition     16G           0B      100
/mnt/swapfile file          8G            0B      -2

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

Основные рекомендации

  • Помните, что память является конечным ресурсом. Как только системная память (ОЗУ) и переключение исчерпаны, убийца вне памяти (убийца OOM) убьет процессы.
  • Убедитесь, что переключение не настроено на диске данных или диске ОС, так как это может привести к проблемам с ввода-выводом из-за различий в задержке. Переключение должно быть настроено на эфемерном диске.
  • Кроме того, обратите внимание, что в выходных данных часто отображаются свободные значения, близкие free -h к нулю. Это поведение связано с кэшем страниц; ядро освобождает эти страницы по мере необходимости.

ВВОД-ВЫВОД

Дисковый ввод-вывод — это одна из областей, которые Azure страдают чаще всего при регулировании, так как задержки на дисках могут достигаться 100ms+. Следующие команды помогут определить эти сценарии.

iostat

Программа iostat является частью sysstat пакета. Он отображает статистику использования для каждого блочного устройства и помогает определить проблемы с производительностью, связанные с блоками. Он содержит сведения о таких метриках, как пропускная способность, задержка и размер очереди. Эти метрики помогают понять, становится ли объем операций ввода-вывода диска ограничивающим фактором.

Ниже приведен пример запуска iostat:

iostat -dxtm 1 5
  • -d: отчет об использовании для каждого устройства.
  • -x: расширенная статистика.
  • -t: отображает метку времени для каждого отчета.
  • -m: отображается в МБ/с.
  • 1: первый числовой аргумент указывает, как часто обновлять отображение в секундах.
  • 2: второй числовой аргумент указывает, сколько раз обновляются данные.

Чтение выходных данных iostat

Ниже приведен пример выходных iostatданных:

Linux 5.14.0-362.8.1.el9_3.x86_64 (alma9)       02/21/24        _x86_64_        (8 CPU)

02/21/24 16:55:50
Device            r/s     rMB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wMB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dMB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
sda              1.07      0.02     0.00   0.00    1.95    20.40   23.25     24.55     3.30  12.42  113.75  1081.06    0.26    537.75     0.26  49.83    0.03 2083250.04    0.00    0.00    2.65   2.42
sdb             16.99      0.67     0.36   2.05    2.00    40.47   65.26      0.44     1.55   2.32    1.32     6.92    0.00      0.00     0.00   0.00    0.00     0.00   30.56    1.30    0.16   7.16
zram0            0.51      0.00     0.00   0.00    0.00     4.00    0.00      0.00     0.00   0.00    0.00     4.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.00   0.00

Выходные данные имеют несколько столбцов, которые не важны (дополнительные столбцы из-за -x параметра). Ниже приведены некоторые из важных:

  • r/s: операции чтения в секунду (операции ввода-вывода в секунду).
  • rMB/s: чтение мегабайт в секунду.
  • r_await: задержка чтения в миллисекундах.
  • rareq-sz: средний размер запроса чтения в килобайтах.
  • w/s: операции записи в секунду (операции ввода-вывода в секунду).
  • wMB/s: записывайте мегабайты в секунду.
  • w_await: задержка записи в миллисекундах.
  • wareq-size: средний размер запроса записи в килобайтах.
  • aqu-sz: средний размер очереди.

Основные рекомендации

  • r/sНайдите и w/srMB/sубедитесь, что эти значения находятся в пределах заданного диска, и wMB/sубедитесь, что эти значения находятся в пределах заданного диска. Если значения близки к ограничениям или выше, диск будет регулироваться, что приводит к высокой задержке. Эти сведения также можно подтвердить с %iowait помощью метрик из mpstat.
  • Задержка — это отличная метрика, чтобы проверить, выполняется ли диск должным образом. Как правило, меньше 9ms ожидаемой задержки для PremiumSSD. Другие предложения имеют разные целевые показатели задержки.
  • Размер очереди является большим индикатором насыщенности. Как правило, запросы обслуживаются практически в режиме реального времени, и число остается близко к одному (так как очередь никогда не растет). Более высокое число может указывать на насыщенность диска (то есть запросы в очередь). Для этой метрики нет хорошего или плохого числа. Понимание того, что любое число выше одного означает, что запросы в очереди помогают определить, есть ли насыщенность диска.

lsblk

В lsblk служебной программе показаны блочные устройства, подключенные к системе. Хотя он не предоставляет метрики производительности, он позволяет быстро узнать, как настроены эти устройства и какие точки подключения используются.

Ниже приведен пример запуска lsblk:

lsblk

Чтение выходных данных lsblk

Ниже приведен пример выходных lsblkданных:

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda      8:0    0  300G  0 disk
└─sda1   8:1    0  300G  0 part /mnt
sdb      8:16   0   30G  0 disk
├─sdb1   8:17   0    1M  0 part
├─sdb2   8:18   0  200M  0 part /boot/efi
├─sdb3   8:19   0    1G  0 part /boot
└─sdb4   8:20   0 28.8G  0 part /
zram0  252:0    0   16G  0 disk [SWAP]

Основные рекомендации

  • Найдите место подключения устройств.
  • Убедитесь, что переключение не настроено внутри диска данных или диска ОС, если он включен.
  • Простой способ сопоставления блочного устройства с LUN в Azure выполняется ls -lr /dev/disk/azure.

Процедура

Сбор сведений о каждом процессе помогает понять, откуда поступает системная нагрузка. Основная программа сбора статистики процессов заключается в pidstatтом, что она содержит сведения о статистике ЦП, памяти и ввода-вывода для каждого процесса. Наконец, простой ps для сортировки процесса по верхнему использованию ЦП и памяти завершает метрики.

Примечание.

Для этих команд требуются корневые привилегии, использующиеся sudo для отображения сведений обо всех выполняемых процессах, а не только о текущих пользователях.

pidstat

Программа pidstat также является частью sysstat пакета. Это похоже mpstat или iostat в том, что он отображает метрики для заданного диапазона времени. По умолчанию pidstat отображаются метрики только для процессов с действием.

Аргументы для pidstat других служебных программ аналогичны следующим sysstat :

  • 1: первый числовой аргумент указывает, как часто обновлять отображение в секундах.
  • 2: второй числовой аргумент указывает, сколько раз обновляются данные.

Примечание.

Выходные данные могут значительно расти, если есть много процессов с действием.

Обработка статистики ЦП

Чтобы собрать статистику ЦП процесса, запустите без pidstat каких-либо параметров:

pidstat 1 2
Чтение выходных данных статистики ЦП

Ниже приведен пример выходных pidstatданных:

Linux 5.14.0-362.8.1.el9_3.x86_64 (alma9)       02/21/24        _x86_64_        (8 CPU)

# Time        UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
16:55:48        0        66    0.0%    1.0%    0.0%    0.0%    1.0%     0  kworker/u16:2-xfs-cil/sdb4
16:55:48        0        70    0.0%    1.0%    0.0%    0.0%    1.0%     0  kworker/u16:6-xfs-cil/sdb4
16:55:48        0        92    0.0%    1.0%    0.0%    0.0%    1.0%     3  kworker/3:1H-kblockd
16:55:48        0       308    0.0%    1.0%    0.0%    0.0%    1.0%     1  kworker/1:1H-kblockd
16:55:48        0      2068    0.0%    1.0%    0.0%    0.0%    1.0%     1  kworker/1:3-xfs-conv/sdb4
16:55:48        0      2181   63.1%    1.0%    0.0%   35.9%   64.1%     5  stress-ng-cpu
16:55:48        0      2182   28.2%    0.0%    0.0%   70.9%   28.2%     6  stress-ng-cpu
16:55:48        0      2183   28.2%    0.0%    0.0%   69.9%   28.2%     7  stress-ng-cpu
16:55:48        0      2184   62.1%    0.0%    0.0%   36.9%   62.1%     0  stress-ng-cpu
16:55:48        0      2185   43.7%    0.0%    0.0%   54.4%   43.7%     2  stress-ng-cpu
16:55:48        0      2186   30.1%    0.0%    0.0%   68.0%   30.1%     7  stress-ng-cpu
16:55:48        0      2187   64.1%    0.0%    0.0%   34.0%   64.1%     3  stress-ng-cpu

Команда отображает использование %usr, %system%guest (не применимо к Azure) %waitи общее %CPU использование для каждого процесса.

Основные рекомендации
  • Найдите процессы с высоким %wait процентом (iowait), так как это может указывать на процессы, которые блокируются в ожидании ввода-вывода, что также может указывать на насыщенность диска.
  • Убедитесь, что ни один процесс не потребляет 100 % ЦП, так как это может указывать на однопоточное приложение.

Статистика памяти обработки

Чтобы собрать статистику памяти процесса, используйте -r этот параметр:

pidstat -r 1 2
Чтение выходных данных статистики памяти

Ниже приведен пример выходных pidstatданных:

Linux 5.14.0-362.8.1.el9_3.x86_64 (alma9)       02/21/24        _x86_64_        (8 CPU)

# Time        UID       PID  minflt/s  majflt/s     VSZ     RSS   %MEM  Command
16:55:49        0      2199 119244.12      0.00   13.6G    7.4G  23.5%  stress-ng-vm
16:55:49        0      2200 392911.76      0.00   13.6G    9.3G  29.7%  stress-ng-vm
16:55:49        0      2211   1129.41      0.00   72.3M    3.2M   0.0%  stress-ng-iomix
16:55:49        0      2220      0.98      0.00   71.8M    2.4M   0.0%  stress-ng-iomix
16:55:49        0      2239   1129.41      0.00   72.3M    3.2M   0.0%  stress-ng-iomix
16:55:49        0      2240   1129.41      0.00   72.3M    3.2M   0.0%  stress-ng-iomix
16:55:49        0      2256      0.98      0.00   71.8M    2.4M   0.0%  stress-ng-iomix
16:55:49        0      2265   1129.41      0.00   72.3M    3.2M   0.0%  stress-ng-iomix

Собранные метрики:

  • minflt/s: незначительные ошибки в секунду. Эта метрика указывает количество страниц, загруженных из системной памяти (ОЗУ).
  • mjflt/s: крупные ошибки в секунду. Эта метрика указывает количество страниц, загруженных с диска (SWAP).
  • VSZ: виртуальная память, используемая в байтах.
  • RSS: резидентная память, используемая (фактическая выделенная память) в байтах.
  • %MEM: процент используемой общей памяти.
  • Command: имя процесса.
Основные рекомендации
  • Найдите основные ошибки в секунду, так как это значение будет указывать на процесс, который переключает страницы на диск или с диска. Это поведение может указывать на нехватку памяти и привести к OOM событиям или снижению производительности из-за замедления переключения.
  • Убедитесь, что один процесс не потребляет 100 % доступной памяти. Это поведение может указывать на утечку памяти.

Совет

Этот --human параметр можно использовать для отображения чисел в удобочитаемом формате (т. е. КБ, МБ и ГБ).

Статистика операций ввода-вывода обработки

Чтобы собрать статистику -d ввода-вывода процесса, используйте этот параметр:

pidstat -d 1 2

Ниже приведен пример выходных pidstatданных:


# Time        UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s iodelay  Command
16:55:50        0        86     55.4k      0.0B      0.0B       0  kworker/1:1-xfs-conv/sdb4
16:55:50        0      2201      4.0k    194.1k      0.0B       0  stress-ng-iomix
16:55:50        0      2202      0.0B     99.0k      0.0B       0  stress-ng-iomix
16:55:50        0      2203      0.0B     23.8k      0.0B       0  stress-ng-iomix
16:55:50        0      2204      0.0B     15.8k      0.0B       0  stress-ng-iomix
16:55:50        0      2212      0.0B    103.0k      0.0B       0  stress-ng-iomix
16:55:50        0      2213      4.0k     99.0k      0.0B       0  stress-ng-iomix
16:55:50        0      2215      0.0B    178.2k      0.0B       0  stress-ng-iomix
16:55:50        0      2216      7.9k    237.6k      0.0B       0  stress-ng-iomix
16:55:50        0      2218      0.0B     95.0k      0.0B       0  stress-ng-iomix
16:55:50        0      2221      0.0B     15.8k      0.0B       0  stress-ng-iomix

Собранные метрики:

  • kB_rd/s: чтение килобайтов в секунду.
  • kB_wr/s: запись килобайтов в секунду.
  • Command: имя процесса.
Основные рекомендации
  • Поиск отдельных процессов с высокой скоростью чтения и записи в секунду. Эта информация содержит рекомендации по процессам с помощью операций ввода-вывода больше, чем определение проблем.

Совет

Этот --human параметр можно использовать для отображения чисел в удобочитаемом формате (т. е. КБ, МБ и ГБ).

ps

Наконец, ps команда отображает системные процессы и может быть отсортирована по ЦП или памяти.

Чтобы отсортировать и получить первые 10 процессов, выполните следующие %CPU действия.

ps aux --sort=-%cpu | head -10
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root        2190 94.8  0.0  73524  5588 pts/1    R+   16:55   0:14 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root        2200 56.8 43.1 14248092 14175632 pts/1 R+ 16:55   0:08 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root        2192 50.6  0.0  73524  5836 pts/1    R+   16:55   0:07 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root        2184 50.4  0.0  73524  5836 pts/1    R+   16:55   0:07 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root        2182 44.3  0.0  73524  5808 pts/1    R+   16:55   0:06 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root        2187 43.4  0.0  73524  5708 pts/1    R+   16:55   0:06 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root        2199 42.9 33.0 14248092 10845272 pts/1 R+ 16:55   0:06 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root        2186 42.0  0.0  73524  5836 pts/1    R+   16:55   0:06 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root        2191 41.2  0.0  73524  5592 pts/1    R+   16:55   0:06 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240

Чтобы отсортировать и получить первые 10 процессов, выполните следующие %MEM действия.

ps aux --sort=-%mem| head -10
       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root        2200 57.0 43.1 14248092 14175632 pts/1 R+ 16:55   0:08 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root        2199 43.0 33.0 14248092 10871144 pts/1 R+ 16:55   0:06 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240
root        1231  0.2  0.1 336308 33764 ?        Sl   16:46   0:01 /usr/bin/python3 -u bin/WALinuxAgent-2.9.1.1-py3.8.egg -run-exthandlers
root         835  0.0  0.0 127076 24860 ?        Ssl  16:46   0:00 /usr/bin/python3 -s /usr/sbin/firewalld --nofork --nopid
root        1199  0.0  0.0  30164 15600 ?        Ss   16:46   0:00 /usr/bin/python3 -u /usr/sbin/waagent -daemon
root           1  0.2  0.0 173208 12356 ?        Ss   16:46   0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 31
root         966  0.0  0.0 3102460 10936 ?       Sl   16:46   0:00 /var/lib/waagent/Microsoft.GuestConfiguration.ConfigurationforLinux-1.26.60/GCAgent/GC/gc_linux_service
panzer      1803  0.0  0.0  22360  8220 ?        Ss   16:49   0:00 /usr/lib/systemd/systemd --user
root        2180  0.0  0.0  73524  6968 pts/1    SL+  16:55   0:00 stress-ng --cpu 12 --vm 2 --vm-bytes 120% --iomix 4 --timeout 240

Консолидация отчетов

Следующий скрипт Bash может собрать все сведения в одном выполнении и добавить выходные данные в файл для последующей ссылки:

mpstat -P ALL 1 2 && vmstat -w 1 5 && uptime && free -h && swapon && iostat -dxtm 1 1 && lsblk && ls -l /dev/disk/azure && pidstat 1 1 -h --human && pidstat -r 1 1 -h --human && pidstat -d 1 1 -h --human && ps aux --sort=-%cpu | head -20 && ps aux --sort=-%mem | head -20

Чтобы запустить, создайте файл с предыдущим содержимым, добавьте execute разрешения, выполнив его chmod +x gather.sh, а затем запустите с sudo ./gather.shпомощью .

Этот скрипт сохраняет выходные данные команд в файле, расположенном в том же каталоге, где был вызван скрипт.

Кроме того, все команды в кодах блоков Bash, описанных в этом документе, можно выполнять через Azure CLI с помощью run-command расширения и анализа выходных jq данных для получения выходных данных, аналогичных локальному выполнению команд.

az vm run-command invoke -g $MY_RESOURCE_GROUP_NAME --name $MY_VM_NAME --command-id RunShellScript --scripts "ls -l /dev/disk/azure" | jq -r '.value[0].message'

Заявление об отказе от ответственности за сведения о продуктах сторонних производителей

В этой статье упомянуты программные продукты независимых производителей. Корпорация Microsoft не дает никаких гарантий, подразумеваемых и прочих, относительно производительности и надежности этих продуктов.

Свяжитесь с нами для получения помощи

Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.