dstat: Analizando el rendimiento de GNU Linux

Publicado por Diego Córdoba en

En esta oportunidad aprenderemos una pequeña pero poderosa herramienta para gestionar la performance/rendimiento en un sistema GNU/Linux, tanto en estaciones de trabajo como en servidores: dstat.


Algunas características de dstat

dstat es una interesante herramienta que combina las funcionalidades de otras tantas, tales como iostat, ifstat, netstat, o vmstat.

  • Además tiene un diseño modular que permite activar o desactivar contadores.
  • La aplicación está escrita en lenguaje Python, por lo que es muy fácil extenderla y agregar nuevos contadores. Incluye muchos plugins externos para mostrar cuán simple es agregar contadores.
  • Puede sumarizar resultados por dispositivo.
  • Puede mostrar las interrupciones por dispositivo involucrado.
  • Muy acertadas estampas de tiempo, lo que le permite mostrar las estadísticas reales del sistema en los momentos en los que está bajo estrés.
  • Indica en diferentes colores las distintas unidades.
  • Muestra resultados intermedios en tiempo real con un delay de 1 segundo por defecto (se puede cambiar, seguir leyendo!).
  • Permite exportar en CSV los resultados, lo que le permite cargar la info recolectada como entrada en otro sistema de análisis.

Instalando la utilidad dstat

dstat es una herramienta que se encuentra en la mayoría de los repositorios de las distribuciones GNU/Linux. En el caso de Debian y derivados:

sudo apt install dstat

En el caso de Arch y derivados:

sudo pacman -S dstat

Y para las distros RPM:

sudo yum install dstat

y ya dispondremos del comando para poder utilizarlo!

Al ejecutar el comando por terminal iremos viendo en tiempo real el uso de la memoria virtual, interfaces y conexiones de red, actividad del procesador y de los dispositivos de E/S, entre otros parámetros.

 dstat  linux  gnu  monitoreo  management  tools  recurso

En esta pantalla pueden verse parámetros de uso de CPU (procesos de usuario y de sistema, tiempo ocioso del procesador, etc), información de operaciones de E/S en disco (lecturas y escrituras), Operaciones de red (paquetes enviados y recibidos), entre otros parámetros.

Dos parámetros opcionales que se le pueden pasar a dstat son el delay en segundos entre muestra y muestra (por defecto de un segundo) y la cantidad de muestras (por defecto es continuo). Así, por ejemplo, ejecutar dstat 3 5  producirá que el comando tome 5 muestras con 3 segundos de separación entre ellas.

Acotando los resultados

Las opciones por defecto muestran todas las estadísticas y contadores. No obstante, podemos filtrar y mostrar solo la que nos interese haciendo uso de los siguientes modificadores:

  • -c     Muestra valores de CPU
  • -d    Muestra valores de Disco
  • n    Muestra valores de Red
  • -g    Muestra valores de Paginación (carga de páginas de ejecutables en el mapa de memoria de los procesos)
  • -y    Muestra estadísticas de sistema
  • -a    Todas las opciones

Si ejecutamos dstat sin argumentos mostrará todas las opciones anteriores. Incluso lo advertirá con un mensaje de warning, que convenientemente podemos omitir con la opción «-a».

dstat y ejemplos adicionales

Veamos algunos ejemplos adicionales con parámetros que nos permiten personalizar la salida del comando.

Estadísticas adicionales de memoria

En este ejemplo podemos ver cómo el parámetro –mem-adv nos permite analizar algunas estadísticas adicionales de gestión de memoria. dstat  linux  gnu  monitoreo  management  tools  recurso

Estadísticas de archivos e i-nodes dstat  linux  gnu  monitoreo  management  tools  recurso

Estadísticas avanzadas de CPU: dstat  linux  gnu  monitoreo  management  tools  recurso

Otros comandos interesantes

Veamos algunos otros comandos que pueden sernos útiles para nuestros sistemas:

  • -i, –int: Habilita las estadísticas de interrupciones.
  • -D total,hda: Junto con el comando «-d, –disk» permite especificar no solamente las estadísticas totales, sino también para el dispositivo hda.
  • -N total,eth0: Junto con el comando «-n, –net» permite especificar no solamente las estadísticas totales de red, sino también para el dispositivo eth0.
  • -S total,swap1: Junto con el comando «-s, –swap» permite especificar no solamente las estadísticas totales de swap o intercambio, sino también para el dispositivo swap1.
  • –aio: habilita las estadísticas de entrada/salida asincrónica.
  • –cpu-adv: Habilita las estadísticas avanzadas de CPU (idem para la memoria con –mem-adv).
  • –cpu-use: habilita solamente las estadísticas de uso del CPU.
  • –ipc: habilita las estadísticas de IPC (Inter-process communication), tales como colas de mensajes, memoria compartida o semáforos.
  • –socket: habilita las estadísticas de sockets (totales, tcp, udp, raw, o fragmentos IP). También se pueden habilitar por separado estadísticas de protocolos como –tcp o –udp.
  • –vm: habilita estadísticas de memoria virtual, como fallos de página (soft o hard), memoria asignada o libre.
  • –vm-adv: estadísticas avanzadas de memoria virtual.
  • –list: lista los plugins internos y externos.
  • -f, –full: expande las listas de autodescubrimiento de las opciones  -C, -D, -I, -N y -S
  • –float: fuerza a las salidas en punto flotante.
  • –noupdate: deshabilita la actualización intermedia cuando el tiempo de delay es mayor que 1 segundo.

Algunos plugins

Sí, dstat incorpora plugins que permiten monitorear gran cantidad de recursos y servicios, entre los más llamativos podemos nombrar:

  • –battery: Porcentaje de carga de la batería (necesita ACPI)
  • –battery-remain: Tiempo restante de batería, en horas, minutos y segundos (necesita ACPI).
  • –cpufreq: frecuencia de procesamiento del CPU (necesita ACPI)
  • –disk-tps: Número de transferencias por segundo a un dispositivo de disco.
  • –disk-util: Porcentaje de tiempo de procesamiento durante el cual se solicitan operaciones de E/S a disco.
  • –dstat: consumo de tiempo de cpu y latencia del proceso dstat
  • –dstat-cpu: Consumo de procesamiento de CPU del proceso dstat
  • –dstat-mem: Uso de memoria avanzado de dstat
  • –fan: Velocidad del cooler (necesita ACPI)
  • –freespace: Espacio libre por sistema de archivos
  • –wifi: calidad del enlace wireless, y ratio de señal/ruido.
  • Varios plugins para monitorear servicios externos, como NFS, smtp genérico, postfix, qmail, squid, vmware, zfs, snmp, etc.
  • Varios plugins para monitorear parámetros de almacenamiento, como valores de MySQL, o bases de datos innodb.

Para listar todos los plugins disponibles, simplemente:

dstat --list

O, mas completo, con explicación de cada uno de los plugins estándares:

man dstat

Por supuesto, es una herramienta open source por lo que pueden agregarse plugins específicos para cada requerimiento.

Exportando datos

Una característica muy importante de dstat es la de exportar los datos, por ejemplo, a archivos de datos separados por comas (CSV). Esto va a permitirnos luego importar estos datos recolectados en cualquier sistema que soporte CSV, incluidas las planillas de cálculo!

Veamos un ejemplo sencillo:

dstat --output /tmp/salida.csv -a 2 6

Con esa línea podríamos enviar toda la salida del dstat a un archivo CSV, y de esta forma luego editarlo o trabajarlo con alguna herramienta externa.

Conclusión

Hemos introducido una excelente herramienta de monitoreo de rendimiento en sistemas GNU/Linux.

Recuerden que para ver la lista completa de opciones y plugins es menester entrar al man de la herramienta: man dstat  (#RTFM no está de mas en este punto :P).

El sitio oficial de la app es más que recomendable para su visita.

Espero les resulte interesante y útil!

Hasta la próxima!


¿Preguntas? ¿Comentarios?

Si tenés dudas, o querés dejarnos tus comentarios y consultas, sumate al grupo de Telegram de la comunidad JuncoTIC!
¡Te esperamos!


Diego Córdoba

- Ingeniero en Informática - Mg. Teleinformática - Tesis pendiente - Docente universitario - Investigador