Compartir a través de


Recopilación de métricas de rendimiento para una máquina virtual Linux

Se aplica a: ✔️ Máquinas virtuales Linux

En este artículo se describe cómo recuperar las métricas de rendimiento de una máquina virtual Linux en Microsoft Azure mediante las utilidades sysstat (herramientas de supervisión del rendimiento). Proporciona ejemplos de cómo usar estas utilidades y leer sus salidas.

Hay varios comandos disponibles para recopilar contadores de rendimiento en Linux. Comandos como vmstat y uptime proporcionan métricas esenciales del sistema, como el uso de CPU, la memoria del sistema y la carga del sistema. La mayoría de estos comandos están preinstalados de forma predeterminada, mientras que otros se pueden acceder fácilmente desde los repositorios predeterminados.

En función del tipo de métricas, estos comandos se pueden clasificar en:

Instalación de utilidades de Sysstat para Linux

Puede instalar las utilidades de Sysstat en una máquina virtual Linux mediante un comando de Bash o la característica Ejecutar comando a través de la CLI de Azure. Si usa los comandos de la CLI de Azure proporcionados en este artículo, asegúrese de que se establecen las dos variables de entorno siguientes. Debe reemplazar el nombre del grupo de recursos y el nombre de la máquina virtual por los valores reales.

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

Nota:

Algunos de los siguientes comandos requieren privilegios raíz.

Para instalar el sysstat paquete en una máquina virtual Linux, use el siguiente comando:

Ubuntu:

sudo apt install sysstat -y

Red Hat:

sudo dnf install sysstat -y

SUSE:

sudo zypper install sysstat --non-interactive

CPU

mpstat

El mpstat comando forma parte del sysstat paquete. Muestra el uso de cpu y el promedio de cada CPU, lo que resulta útil para identificar el uso de la CPU. El mpstat comando proporciona información general sobre el uso de cpu de las CPU disponibles, lo que ayuda a identificar el equilibrio de uso y si se sobrecarga una sola CPU.

Este es un ejemplo de cómo ejecutar mpstat:

mpstat -P ALL 1 2
  • -P: indica el procesador para mostrar las estadísticas y el ALL argumento indica que se deben mostrar las estadísticas de todas las CPU en línea del sistema.
  • 1: el primer argumento numérico especifica el intervalo (en segundos) en el que mpstat se deben actualizar y mostrar nuevas estadísticas.
  • 2: el segundo argumento numérico especifica el número de veces mpstat que se deben mostrar las estadísticas. En este caso, imprime dos estadísticas en un intervalo de un segundo.

Puede aumentar el número de veces que el argumento admite tiempos de recopilación de datos más largos. Por lo general, tres o cinco segundos son suficientes. En el caso de los sistemas con mayores recuentos de núcleos, reducirlo a dos segundos puede ayudar a administrar el volumen de datos mostrado.

Cómo leer la salida de mpstat

Esta es una salida de ejemplo de 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

Hay varias cosas importantes que hay que tener en cuenta. La primera línea proporciona información útil:

  • Kernel y versión: 5.14.0-362.8.1.el9_3.x86_64
  • Nombre de host: alma9
  • Fecha: 02/21/24
  • Arquitectura: _x86_64_
  • Número total de CPU (esta información es útil para interpretar la salida de otros comandos): (8 CPU)

A continuación, se muestran las métricas de las CPU. Esta es una explicación de cada columna:

  • Time: marca de tiempo que indica cuándo se recopiló la muestra.
  • CPU: identificador numérico de la CPU. El identificador all representa un promedio para todas las CPU.
  • %usr: porcentaje de uso de CPU por procesos de espacio de usuario, normalmente aplicaciones de usuario.
  • %nice: porcentaje de uso de CPU por procesos de espacio de usuario con un buen valor (prioridad).
  • %sys: porcentaje de uso de CPU por procesos de espacio de kernel.
  • %iowait: el porcentaje de tiempo de inactividad de CPU en espera de operaciones de E/S pendientes.
  • %irq: porcentaje del tiempo de CPU dedicado a las interrupciones de hardware de mantenimiento.
  • %soft: porcentaje del tiempo de CPU dedicado a las interrupciones del software de mantenimiento.
  • %steal: el porcentaje de tiempo de CPU que una máquina virtual ha dedicado a atender otras máquinas virtuales (no aplicables a Azure debido a la falta de aprovisionamiento excesivo de CPU).
  • %guest: el porcentaje de tiempo de CPU que una CPU virtual ha dedicado a atender máquinas virtuales (no aplicables a Azure; solo es relevante para sistemas sin sistema operativo que ejecutan máquinas virtuales).
  • %gnice: el porcentaje de tiempo de CPU que una CPU virtual tiene un buen valor dedicado a atender máquinas virtuales (no aplicables a Azure; solo es relevante para los sistemas sin sistema operativo que ejecutan máquinas virtuales).
  • %idle: el porcentaje de tiempo de CPU que estaba inactivo y no está esperando solicitudes de E/S.

Aspectos importantes

Consideraciones clave al revisar la salida de mpstat:

  • Compruebe que todas las CPU se cargan correctamente y que no una sola CPU sirve toda la carga. Esta información podría indicar una aplicación de un solo subproceso.
  • Busque un equilibrio correcto entre %usr y %sys, como lo contrario indicaría más tiempo invertido en la carga de trabajo real que servir procesos de kernel.
  • %iowait Busque porcentajes, ya que los valores altos podrían indicar un sistema que espera constantemente las solicitudes de E/S.
  • Un uso elevado %soft podría indicar un tráfico de red elevado.

vmstat

La vmstat utilidad está ampliamente disponible en la mayoría de las distribuciones de Linux. Proporciona información general de alto nivel sobre el uso de CPU, memoria y E/S de disco en un único panel.

Este es un ejemplo de cómo ejecutar vmstat:

vmstat -w 1 5
  • -w: use la impresión ancha para mantener columnas coherentes.
  • 1: el primer argumento numérico especifica el intervalo en segundos entre cada informe. En este caso, vmstat generará un informe cada segundo.
  • 5: el segundo argumento numérico especifica el número de informes que vmstat debe generar. Con 5 lo especificado aquí, vmstat generará un total de cinco informes.

Cómo leer la salida de vmstat

Esta es una salida de ejemplo de 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

La salida se clasifica en los seis grupos siguientes. La salida muestra estadísticas generales para todo el sistema (es decir, todas las CPU y los dispositivos de bloque agregados).

  • procs: estadísticas de procesos.
  • memory: estadísticas de memoria del sistema.
  • swap: estadísticas de intercambio.
  • io: estadísticas de E/S de disco.
  • system: estadísticas de modificadores de contexto e interrupciones.
  • cpu: estadísticas de uso de CPU.

procs

La sección procs tiene dos columnas :

  • r: número de procesos ejecutables en la cola de ejecución.
  • b: el número de procesos bloqueados en espera de E/S.

En esta sección se muestra inmediatamente si hay algún cuello de botella en el sistema. Los números altos en cualquiera de las columnas indican los procesos en cola y esperando recursos.

La r columna indica el número de procesos que están esperando a que se ejecute el tiempo de CPU. Una manera fácil de interpretar este número es la siguiente: si el número de procesos de la r cola es mayor que el número total de CPU, se puede deducir que la CPU del sistema está demasiado cargada para asignar tiempo de CPU para todos los procesos que esperan a ejecutarse.

La b columna indica el número de procesos en espera de ejecución y bloqueados por solicitudes de E/S. Un número alto de esta columna indicaría un sistema que experimenta una E/S elevada y los procesos no se pueden ejecutar debido a otros procesos que esperan a que se completen las solicitudes de E/S. Esto también podría indicar una latencia de disco alta.

memory

La sección memoria tiene cuatro columnas. Los valores se muestran en bytes. En esta sección se proporciona información general de alto nivel sobre el uso de memoria.

  • swpd: cantidad de memoria de intercambio usada.
  • free: cantidad de memoria libre.
  • buff: la cantidad de memoria usada para los búferes.
  • cache: la cantidad de memoria usada para la memoria caché.

swap

La sección swap tiene dos columnas:

  • si: cantidad de memoria intercambiada en (movido de memoria del sistema a intercambio) por segundo.
  • so: cantidad de memoria intercambiada (movida de intercambio a memoria del sistema) por segundo.

Si se observa un valor alto si , podría representar un sistema que se está quedando sin memoria del sistema y moviendo páginas para intercambiar (intercambio).

Io

La sección io tiene dos columnas. Estos valores están en bloques por segundo.

  • bi: el número de bloques recibidos de un dispositivo de bloque (lee bloques por segundo) por segundo.
  • bo: número de bloques enviados a un dispositivo de bloque (escrituras por segundo) por segundo.

fría

La sección del sistema tiene dos columnas:

  • in: número de interrupciones por segundo.
  • cs: número de modificadores de contexto por segundo.

Un gran número de interrupciones por segundo podría indicar un sistema ocupado con dispositivos de hardware (por ejemplo, operaciones de red).

Un gran número de modificadores de contexto podría indicar un sistema ocupado con muchos procesos de ejecución corta. No hay un número bueno o malo aquí.

cpu

La cpu sección tiene cinco columnas:

  • us: porcentaje de uso del espacio de usuario.
  • sy: porcentaje de uso del sistema (espacio de kernel).
  • id: porcentaje de uso del tiempo de inactividad de la CPU.
  • wa: porcentaje de uso del tiempo de inactividad de cpu en espera de procesos con E/S.
  • st: porcentaje de uso del tiempo de CPU dedicado a atender otras CPU virtuales (no aplicables a Azure).

Los valores se presentan en porcentajes. Estos valores son los mismos que los presentados por la mpstat utilidad y sirven para proporcionar información general de alto nivel sobre el uso de la CPU. Siga un proceso similar a mpstat al revisar estos valores.

Uptime

La uptime utilidad proporciona una amplia introducción a la carga del sistema con los valores medios de carga.

uptime

Cómo leer la salida de tiempo de actividad

Esta es una salida de ejemplo de uptime:

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

load average Muestra tres números. Estos números corresponden a la carga del sistema en 1intervalos de minutos , 5y 15 .

Para interpretar estos valores, es importante conocer el número de CPU disponibles en el sistema, que se obtiene de la salida anterior mpstat . El valor depende del número total de CPU, por lo que el uso de la mpstat salida como ejemplo, el sistema tiene ocho CPU y un promedio de carga de 8 significaría que todos los núcleos se cargan al 100 %.

Un valor de 4 significaría que la mitad de las CPU se cargan al 100 % (o una carga total del 50 % para todas las CPU). En la salida anterior, el promedio de carga es 9.26, lo que significa que la CPU se carga aproximadamente en un 115 %.

Los 1mintervalos , 5my 15m ayudan a identificar si la carga aumenta o disminuye con el tiempo.

Además, el nproc comando se puede usar para recuperar el número de CPU.

Memoria

En el caso de la memoria, dos comandos pueden recuperar los detalles de uso de memoria.

free

El free comando muestra el uso de memoria del sistema.

Este es un ejemplo de cómo ejecutar free:

free -h
  • -h: esta opción especifica el formato de salida que se va a leer de forma humana. Convierte los tamaños de memoria de bytes a un formato más legible (kilobytes, megabytes y gigabytes) y anexa las etiquetas de unidad adecuadas (KB, MB y GB).

Cómo leer la salida gratuita

Esta es una salida de ejemplo de free:

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

En la salida, observe la memoria del total sistema frente a la available memoria y el used intercambio total . La memoria disponible considera la memoria asignada a la memoria caché, que se puede devolver a las aplicaciones de usuario. Algunos usos de intercambio son normales en kernels modernos, ya que algunas páginas de memoria usadas con poca frecuencia se pueden mover al intercambio.

swapon

El swapon comando muestra dónde se configura el intercambio y las prioridades respectivas de los dispositivos o archivos de intercambio.

Este es un ejemplo de cómo ejecutar swapon:

swapon -s

Esta es una salida de ejemplo de swapon:

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

Esta información es importante para comprobar si el intercambio está configurado en una ubicación noideal, por ejemplo, en un disco de datos o sistema operativo. En el marco de referencia de Azure, el intercambio debe configurarse en la unidad efímera, ya que proporciona el mejor rendimiento.

Aspectos importantes

  • Recuerde que la memoria es un recurso finito. Una vez agotada la memoria del sistema (RAM) y el intercambio, el asesino fuera de memoria (asesino de OOM) matará los procesos.
  • Compruebe que el intercambio no está configurado en un disco de datos o en un disco del sistema operativo, ya que puede causar problemas con la E/S debido a diferencias de latencia. El intercambio debe configurarse en la unidad efímera.
  • Tenga en cuenta también que es habitual ver valores libres cerca de cero en la free -h salida. Este comportamiento se debe a la memoria caché de páginas; el kernel libera esas páginas según sea necesario.

E/S

La E/S de disco es una de las áreas que Azure sufre más cuando se limita, ya que las latencias en los discos pueden alcanzar 100ms+. Los siguientes comandos pueden ayudar a identificar estos escenarios.

iostat

La iostat utilidad forma parte del sysstat paquete. Muestra las estadísticas de uso de cada dispositivo de bloque y ayuda a identificar problemas de rendimiento relacionados con los bloques. Proporciona detalles sobre las métricas, como el rendimiento, la latencia y el tamaño de la cola. Estas métricas ayudan a comprender si la E/S de disco se convierte en un factor de limitación.

Este es un ejemplo de cómo ejecutar iostat:

iostat -dxtm 1 5
  • -d: informe de uso de cada dispositivo.
  • -x: estadísticas extendidas.
  • -t: muestra la marca de tiempo de cada informe.
  • -m: se muestra en MB/s.
  • 1: el primer argumento numérico indica la frecuencia con la que se actualiza la presentación en segundos.
  • 2: el segundo argumento numérico indica cuántas veces se actualizan los datos.

Cómo leer la salida de iostat

Esta es una salida de ejemplo de 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

La salida tiene varias columnas que no son importantes (columnas adicionales debido a la -x opción ). Algunos de los importantes son:

  • r/s: Operaciones de lectura por segundo (IOPS).
  • rMB/s: lectura de megabytes por segundo.
  • r_await: latencia de lectura en milisegundos.
  • rareq-sz: tamaño medio de la solicitud de lectura en kilobytes.
  • w/s: Operaciones de escritura por segundo (IOPS).
  • wMB/s: escriba megabytes por segundo.
  • w_await: latencia de escritura en milisegundos.
  • wareq-size: tamaño medio de la solicitud de escritura en kilobytes.
  • aqu-sz: tamaño medio de cola.

Aspectos importantes

  • r/sBusque , w/s (IOPS), rMB/sy , y wMB/scompruebe que estos valores están dentro de los límites del disco especificado. Si los valores están cerca o superior a los límites, el disco se limitará, lo que dará lugar a una latencia alta. Esta información también se puede confirmar con la %iowait métrica de mpstat.
  • La latencia es una métrica excelente para comprobar si el disco funciona según lo previsto. Normalmente, menor que 9ms es la latencia esperada para PremiumSSD. Otras ofertas tienen diferentes destinos de latencia.
  • El tamaño de la cola es un gran indicador de saturación. Normalmente, las solicitudes se sirven casi en tiempo real y el número permanece cerca de uno (ya que la cola nunca crece). Un número mayor podría indicar la saturación del disco (es decir, solicitudes en cola). No hay ningún número bueno o incorrecto para esta métrica. Comprender que cualquier número mayor que uno significa que las solicitudes se están poniendo en cola ayudan a determinar si hay saturación del disco.

lsblk

La lsblk utilidad muestra los dispositivos de bloqueo conectados al sistema. Aunque no proporciona métricas de rendimiento, permite una visión general rápida de cómo se configuran estos dispositivos y qué puntos de montaje se usan.

Este es un ejemplo de cómo ejecutar lsblk:

lsblk

Cómo leer la salida de lsblk

Esta es una salida de ejemplo de 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]

Aspectos importantes

  • Busque dónde se montan los dispositivos.
  • Compruebe que el intercambio no está configurado dentro de un disco de datos o disco del sistema operativo, si está habilitado.
  • Una manera sencilla de correlacionar un dispositivo de bloque con un LUN en Azure es mediante la ejecución ls -lr /dev/disk/azurede .

Proceso

La recopilación de detalles por proceso ayuda a comprender de dónde procede la carga del sistema. La utilidad principal para recopilar estadísticas de proceso es pidstat, ya que proporciona detalles sobre las estadísticas de CPU, memoria y E/S para cada proceso. Por último, un sencillo ps para ordenar el proceso por uso superior de CPU y memoria completa las métricas.

Nota:

Estos comandos requieren privilegios raíz mediante sudo para mostrar los detalles de todos los procesos en ejecución, no solo los del usuario actual.

pidstat

La pidstat utilidad también forma parte del sysstat paquete. Es como mpstat o iostat en que muestra métricas para un intervalo de tiempo determinado. De forma predeterminada, pidstat muestra las métricas solo para los procesos con actividad.

Los argumentos de pidstat son los mismos que para otras sysstat utilidades:

  • 1: el primer argumento numérico indica la frecuencia con la que se actualiza la presentación en segundos.
  • 2: el segundo argumento numérico indica cuántas veces se actualizan los datos.

Nota:

La salida puede crecer considerablemente si hay muchos procesos con actividad.

Procesar estadísticas de CPU

Para recopilar estadísticas de CPU del proceso, ejecute pidstat sin opciones:

pidstat 1 2
Cómo leer la salida de estadísticas de CPU

Esta es una salida de ejemplo de 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

El comando muestra el uso de %usr, %system, %guest (no aplicable a Azure), %waity el uso total %CPU de cada proceso.

Aspectos importantes
  • Busque procesos con porcentajes altos %wait (iowait), ya que podría indicar procesos bloqueados en espera de E/S, lo que también podría indicar la saturación del disco.
  • Compruebe que ningún proceso único consume el 100 % de la CPU, ya que podría indicar una aplicación de un solo subproceso.

Procesar estadísticas de memoria

Para recopilar estadísticas de memoria de proceso, use la -r opción :

pidstat -r 1 2
Cómo leer la salida de estadísticas de memoria

Esta es una salida de ejemplo de 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

Las métricas recopiladas son:

  • minflt/s: errores menores por segundo. Esta métrica indica el número de páginas cargadas desde la memoria del sistema (RAM).
  • mjflt/s: errores principales por segundo. Esta métrica indica el número de páginas cargadas desde el disco (SWAP).
  • VSZ: memoria virtual usada en bytes.
  • RSS: memoria residente usada (memoria asignada real) en bytes.
  • %MEM: porcentaje de memoria total utilizada.
  • Command: nombre del proceso.
Aspectos importantes
  • Busque errores principales por segundo, ya que este valor indicaría un proceso que intercambia páginas hacia o desde el disco. Este comportamiento podría indicar el agotamiento de memoria y provocar OOM eventos o degradación del rendimiento debido a un intercambio más lento.
  • Compruebe que un único proceso no consume el 100 % de la memoria disponible. Este comportamiento podría indicar una pérdida de memoria.

Sugerencia

La --human opción se puede usar para mostrar números en un formato legible (es decir, KB, MB y GB).

Estadísticas de E/S de proceso

Para recopilar estadísticas de E/S del proceso, use la -d opción :

pidstat -d 1 2

Esta es una salida de ejemplo de 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

Las métricas recopiladas son:

  • kB_rd/s: kilobytes de lectura por segundo.
  • kB_wr/s: escriba kilobytes por segundo.
  • Command: nombre del proceso.
Aspectos importantes
  • Busque procesos únicos con altas tasas de lectura y escritura por segundo. Esta información es una guía para los procesos con E/S más que identificar problemas.

Sugerencia

La --human opción se puede usar para mostrar números en un formato legible (es decir, KB, MB y GB).

P.D

Por último, el ps comando muestra los procesos del sistema y se pueden ordenar por CPU o memoria.

Para ordenar por %CPU y obtener los 10 procesos principales:

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

Para ordenar por %MEM y obtener los 10 procesos principales:

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

Consolidar informes

El siguiente script de Bash puede recopilar todos los detalles de una sola ejecución y anexar la salida a un archivo para una referencia futura:

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

Para ejecutar, cree un archivo con el contenido anterior, agregue execute permisos mediante la ejecución chmod +x gather.shde y, a continuación, ejecute con sudo ./gather.sh.

Este script guarda la salida de los comandos en un archivo ubicado en el mismo directorio donde se invocó el script.

Además, todos los comandos de los códigos de bloque de Bash descritos en este documento se pueden ejecutar a través de la CLI de Azure mediante la run-command extensión y el análisis de la salida a través jq de para obtener salidas similares a ejecutar los comandos localmente.

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'

Aviso de declinación de responsabilidades sobre la información de terceros

Los productos de otros fabricantes que se mencionan en este artículo han sido creados por compañías independientes de Microsoft. Microsoft no ofrece ninguna garantía, ya sea implícita o de otro tipo, sobre la confiabilidad o el rendimiento de dichos productos.

Ponte en contacto con nosotros para obtener ayuda

Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.