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:
Red Hat:
SUSE:
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
:
-P
: indica el procesador para mostrar las estadísticas y elALL
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 quempstat
se deben actualizar y mostrar nuevas estadísticas.2
: el segundo argumento numérico especifica el número de vecesmpstat
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 identificadorall
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
:
-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. Con5
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.
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 1
intervalos de minutos , 5
y 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 1m
intervalos , 5m
y 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
:
-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
:
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
:
-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/s
Busque ,w/s
(IOPS),rMB/s
y , ywMB/s
compruebe 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 dempstat
.- 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
:
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/azure
de .
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:
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), %wait
y 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 :
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 :
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:
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:
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.sh
de 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.