Сбор метрик производительности для виртуальной машины Linux
Область применения: ✔️ виртуальные машины Linux
В этой статье описывается, как получить метрики производительности из виртуальной машины Linux в Microsoft Azure с помощью служебных программ Sysstat (средств мониторинга производительности). В нем приведены примеры использования этих служебных программ и чтения выходных данных.
Для сбора счетчиков производительности в Linux доступны несколько команд. Такие команды, как vmstat
и uptime
предоставление важных системных метрик, таких как использование ЦП, системная память и системная загрузка. Большинство этих команд предварительно установлены по умолчанию, а другие могут быть легко доступны из репозиториев по умолчанию.
В зависимости от типа метрик эти команды можно классифицировать по следующим категориям:
- ЦП: mpstat, vmstat
- Память: бесплатная, переключение
- Диск ввода-вывода: iostat, lsblk
- Процессы: pidstat, ps
Установка служебных программ Sysstat для Linux
Служебные программы Sysstat можно установить на виртуальной машине Linux с помощью команды Bash или функции запуска с помощью Azure CLI. Если вы используете команды Azure CLI, указанные в этой статье, убедитесь, что заданы следующие две переменные среды. Необходимо заменить имя группы ресурсов и имя виртуальной машины фактическими значениями.
export MY_RESOURCE_GROUP_NAME="yourResourceGroup"
export MY_VM_NAME="yourVM"
Примечание.
Для некоторых из следующих команд требуются права корневого доступа.
Чтобы установить sysstat
пакет на виртуальной машине Linux, выполните следующую команду:
Ubuntu:
Red Hat:
SUSE:
ЦП
mpstat
Команда mpstat
является частью sysstat
пакета. В нем отображается загрузка ЦП и среднее значение каждого ЦП, которое полезно при определении использования ЦП. Эта mpstat
команда содержит обзор использования ЦП доступных ЦП, помогая определить баланс использования и при перегрузке одного ЦП.
Ниже приведен пример запуска mpstat
:
-
-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
:
-
-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
данных:
16:55:53 up 9 min, 2 users, load average: 9.26, 2.91, 1.18
Отображается load average
три числа. Эти числа соответствуют системной нагрузке и 1
5
15
интервалам минут.
Чтобы интерпретировать эти значения, важно знать количество ЦП, доступных в системе, полученное из предыдущих mpstat
выходных данных. Значение зависит от общего количества ЦП, поэтому при использовании mpstat
выходных данных в качестве примера система имеет восемь ЦП, а средняя 8
нагрузка будет означать, что все ядра загружаются на 100 %.
Значение 4
будет означать, что половина ЦП загружается на 100 % (или общую нагрузку 50% для всех ЦП). В предыдущих выходных данных среднее значение нагрузки 9.26
— это означает, что ЦП загружается примерно на 115 %.
Значения 1m
и 5m
15m
интервалы помогают определить, увеличивается ли нагрузка или уменьшается с течением времени.
Кроме того, nproc
для получения количества ЦП можно использовать команду.
Память
Для памяти две команды могут получить сведения об использовании памяти.
free
Команда free
показывает использование системной памяти.
Ниже приведен пример запуска free
:
-
-h
: этот параметр указывает формат выходных данных, доступный для чтения человеком. Он преобразует размеры памяти из байтов в более удобочитаемый формат (килобайты, мегабайты и гигабайты) и добавляет соответствующие метки единиц (КБ, МБ и ГБ).
Чтение бесплатных выходных данных
Ниже приведен пример выходных free
данных:
total used free shared buff/cache available
Mem: 31Gi 19Gi 12Gi 23Mi 87Mi 11Gi
Swap: 23Gi 0B 23Gi
Из выходных данных просмотрите системную total
память и available
память, а также used
total
переключение. Доступная память учитывает память, выделенную для кэша, которая может быть возвращена пользовательским приложениям. Некоторые использование буферов обычно используется в современных ядрах, так как некоторые редко используемые страницы памяти можно перемещать для переключения.
переключение
Команда swapon
отображает, где настроена переключение, а также соответствующие приоритеты устройств или файлов.
Ниже приведен пример запуска swapon
:
Ниже приведен пример выходных 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
:
-
-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/s
rMB/s
убедитесь, что эти значения находятся в пределах заданного диска, иwMB/s
убедитесь, что эти значения находятся в пределах заданного диска. Если значения близки к ограничениям или выше, диск будет регулироваться, что приводит к высокой задержке. Эти сведения также можно подтвердить с%iowait
помощью метрик изmpstat
. - Задержка — это отличная метрика, чтобы проверить, выполняется ли диск должным образом. Как правило, меньше
9ms
ожидаемой задержки для PremiumSSD. Другие предложения имеют разные целевые показатели задержки. - Размер очереди является большим индикатором насыщенности. Как правило, запросы обслуживаются практически в режиме реального времени, и число остается близко к одному (так как очередь никогда не растет). Более высокое число может указывать на насыщенность диска (то есть запросы в очередь). Для этой метрики нет хорошего или плохого числа. Понимание того, что любое число выше одного означает, что запросы в очереди помогают определить, есть ли насыщенность диска.
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
данных:
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
данных:
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
данных:
# 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
действия.
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
действия.
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.