En esta publicación, se analizarán una serie de herramientas básicas de creación de perfiles que se incluyen en la mayoría de los sistemas Linux de forma predeterminada. Las herramientas presentadas en esta publicación, vmstat, sar, iostat y mpstat, son relativamente simples pero brindan datos básicos que pueden ser muy útiles al analizar el rendimiento de un sistema. Para la mayoría de los ejemplos, usaremos una máquina CentOS 8.
vmstat:estadísticas de memoria virtual
Una de las herramientas más útiles para solucionar problemas de rendimiento relacionados con la memoria es vmstat. El comando vmstat es parte de procps-ng paquete, que incluye otros útiles comandos de análisis de rendimiento, como free y top.
El comando vmstat, si no se le dan argumentos, imprimirá los promedios de varias estadísticas del sistema desde el arranque. El comando vmstat acepta dos argumentos. El primero es el retraso , y el segundo es el contar . El retraso es un valor en segundos entre la salida. El conteo es el número de iteraciones de estadísticas para informar. Si no se proporciona ningún recuento, vmstat informará continuamente sobre las estadísticas.
Las estadísticas de memoria se informan en KiB por defecto. La opción —S permite cambiar esto para informar en KB, MB o MiB con -S k , -S·m y -S M , respectivamente.
La primera línea de la salida de vmstat es siempre un promedio desde el inicio, por lo que al recopilar métricas, elimine la primera línea y use las líneas posteriores. Las primeras dos líneas de salida son información de encabezado y la tercera es el promedio de tiempo de actividad. El siguiente ejemplo muestra la salida de vmstat a partir de la cuarta línea de salida:
# vmstat 10 | tail -n +4 1 0 0 479748 1044 570784 0 0 0 5 90 132 0 0 100 0 0 0 0 0 475952 1044 570912 0 0 0 0 81 130 0 0 100 0 0 0 0 0 479456 1044 570856 0 0 0 52 87 137 0 0 100 0 0 ...
Descripción general de las columnas vmstat
ejemplos de vmstat
1. El comando vmstat, si no se le dan argumentos, imprimirá los promedios de varias estadísticas del sistema desde el arranque:
# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 424444 1044 615940 0 0 89 14 58 78 1 0 98 1 0
2. Aquí hay un ejemplo donde vmstat generará estadísticas cada 10 segundos hasta que se interrumpa:
# vmstat 10 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 426440 1044 615872 0 0 88 14 58 78 1 0 98 1 0 0 0 0 426072 1044 615872 0 0 0 1 92 137 0 0 100 0 0 0 0 0 426072 1044 615872 0 0 0 5 74 116 0 0 100 0 0 ...
3. Si desea que vmstat salga después de imprimir cuatro informes, agregue un argumento de conteo:
# vmstat 10 4 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 0 0 425236 1044 616252 0 0 86 13 58 78 1 0 98 1 0 0 0 0 424936 1044 616252 0 0 0 1 85 129 0 0 100 0 0 0 0 0 424876 1044 616252 0 0 0 15 70 111 0 0 100 0 0 0 0 0 423360 1044 616252 0 0 0 1 89 130 0 0 100 0 0
sar:el reportero de actividad del sistema
El comando sar es una herramienta de análisis multipropósito que forma parte del paquete sysstat. Funciona en dos modos. Puede leer los datos recopilados por un trabajo cron cada 10 minutos o puede usarse para recopilar datos instantáneos sobre el estado del sistema.
Nota :El trabajo cron se instala como /etc/cron.d/sysstat , que ejecuta los comandos /usr/lib64/sa/sa1 y /usr/lib64/sa/sa2 que recopilan datos mediante /usr/lib64/sa/sadc y sar. Estos datos se almacenan en /var/log/sa/sadd, donde dd es el día del mes de dos dígitos.Nota :Al igual que el comando vmstat, sar se puede ejecutar con argumentos de retraso y recuento para informar estadísticas para un cierto número de iteraciones y con una cantidad específica de retraso entre cada iteración.Asegúrese de que sar esté instalado antes de comenzar. Si no está instalado, instálelo usando yum:
# yum install sysstat
Una vez instalado, configure sar para recopilar datos en intervalos de 5 minutos:
# vim /etc/cron.d/sysstat # Run system activity accounting tool every 10 minutes */5 * * * * root /usr/lib64/sa/sa1 1 1
Para obtener los mejores resultados al usar sar, asegúrese de establecer una configuración regional con un LANG variable de entorno que proporciona soporte de tiempo de 24 horas. Por ejemplo, si ordena los datos de sar por la primera columna (la columna de tiempo), en_US.UTF-8 locale colocará 01:00:00 PM antes de las 02:00:00 AM. Es probable que esto distorsione los puntos de datos y haga que un gráfico no tenga valor. La configuración regional c es una que cumple con este requisito de clasificación. Cuando trabaje con datos sar, anule la configuración regional de esta manera:
# LANG=C sar -q Linux 4.18.0-193.28.1.el8_2.x86_64 (2713138b141c.mylabserver.com) 02/09/21 _x86_64_ (2 CPU) 00:00:01 runq-sz plist-sz ldavg-l ldavg-S 1davg-15 blocked 00:10:01 0 317 0.20 0.17 0.18 0 00:20:01 0 317 0.00 0.07 0.13 0 ... Output Truncated ...
De hecho, simplemente se puede crear un alias para sar. Agregue la siguiente línea a /etc/bashrc o ~/.bashrc :
alias sar='LANG=C sar'
sar se puede usar para leer uno de los archivos de registro (o cualquier archivo de datos sar en general) usando la opción -f.
# sar -q -f /var/log/sa/sa09 Linux 4.18.0-193.28.1.el8_2.x86_64 (2713138b141c.mylabserver.com) 02/09/2021 _x86_64_ (2 CPU) 00:00:01 runq-sz plist-sz ldavg-l ldavg-S 1davg-15 blocked 00:10:01 0 317 0.20 0.17 0.18 0 00:20:01 0 317 0.00 0.07 0.13 0 ... Output Truncated ...
Algunas configuraciones se pueden hacer en /etc/sysconfig/sysstat expediente. Por ejemplo, cambie el HISTORIAL variable para establecer el número de días que se guardan los archivos para sar.
ejemplos de sar
1. Cree un alias para todo el sistema para sar que obligue a sar a informar utilizando el horario de 24 horas. Fuente esto en el shell actual.
# echo "alias sar='LANG=c sar'" >> /etc/bashrc # source /etc/bashrc
2. Mantenga 60 días de archivos en lugar de 28. Cambie la variable HISTORIAL en /etc/sysconfig/sysstat.
# vim /etc/sysconfig/sysstat HISTORY=60
3. Informe las estadísticas de tasa de transferencia y E/S:
# sar -b Linux 5.4.10-x86_64-linode132 (mylabserver.com) 02/09/2021 _x86_64_ (1 CPU) 12:00:02 AM tps rtps wtps bread/s bwrtn/s 12:10:01 AM 38.16 31.03 7.14 1655.33 390.20 12:20:01 AM 12.11 5.81 6.30 280.99 239.08 12:30:01 AM 8.40 2.34 6.06 105.99 229.95 12:40:01 AM 7.38 1.62 5.76 23.48 211.41 12:50:01 AM 8.69 2.64 6.04 125.33 230.58 01:00:01 AM 8.09 2.26 5.83 77.72 227.70 01:10:02 AM 12.25 6.10 6.15 215.14 235.73 ... Average: 12.81 6.41 6.40 343.31 255.49
4. Informe la utilización de CPU0:
# sar -P 0 Linux 5.4.10-x86_64-linode132 (web.thegeekdiary.com) 02/09/2021 _x86_64_ (1 CPU) 12:00:02 AM CPU %user %nice %system %iowait %steal %idle 12:10:01 AM 0 11.69 0.00 2.96 0.28 0.06 85.01 12:20:01 AM 0 9.87 0.00 2.53 0.12 0.04 87.44 12:30:01 AM 0 9.96 0.00 2.48 0.09 0.04 87.43 12:40:01 AM 0 9.59 0.00 2.43 0.06 0.04 87.88 12:50:01 AM 0 9.80 0.00 2.46 0.09 0.05 87.59 ... Average: 0 10.00 0.02 2.60 0.14 0.15 87.08
5. Informe las estadísticas del dispositivo de red desde el archivo de registro actual.
# sar -n DEV Linux 5.4.10-x86_64-linode132 (mylabserver.com) 02/09/2021 _x86_64_ (1 CPU) 12:00:02 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 12:10:01 AM dummy0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:10:01 AM tunl0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:10:01 AM ip_vti0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:10:01 AM ip6gre0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:10:01 AM teql0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:10:01 AM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... Average: dummy0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: tunl0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: ip_vti0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: ip6gre0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: teql0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ...
6. Configure un trabajo cron adicional para recopilar datos de uso de energía además de los datos del disco. Modifique lo siguiente en el archivo /etc/sysconfig/sysstat:
SADC_OPTIONS="-S POWER"
iostat y mpstat
Al igual que sar, iostat y mpstat también forman parte del paquete sysstat. Tanto iostat como mpstat admiten los argumentos de retraso y conteo al igual que el comando vmstat. iostat informa estadísticas de CPU y E/S para dispositivos. particiones y sistemas de archivos de red (NFS).
El comando mpstat informa estadísticas relacionadas con la CPU. Al igual que sar, puede ser necesario configurar el LANG para el horario de 24 horas.
Ejemplos de iostat y mpstat
1. Mostrar salida extendida para /dev/sda.
# iostat -x sda Linux 5.4.10-x86_64-linode132 (mylabserver.com) 02/09/2021 _x86_64_ (1 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 8.12 0.08 2.85 0.09 0.24 88.63 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 1.76 7.13 3.55 4.17 122.57 93.88 56.07 0.00 0.83 0.71 0.93 0.88 0.68
2. Mostrar estadísticas de CPU para CPU0:
# LANG=C mpstat -P 0 Linux 5.4.10-x86_64-linode132 (mywebserver.com) 02/09/21 _x86_64_ (1 CPU) 06:32:13 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 06:32:13 0 8.12 0.08 2.37 0.09 0.22 0.25 0.24 0.00 0.00 88.63