Búsqueda de sitios web

Cpustat: monitorea la utilización de la CPU mediante procesos en ejecución en Linux


Cpustat es un potente programa de medición del rendimiento del sistema para Linux, escrito utilizando el lenguaje de programación Go. Intenta revelar la utilización y saturación de la CPU de una manera efectiva, utilizando el método de errores y saturación de utilización (USE) (una metodología para analizar el rendimiento de cualquier sistema).

Extrae muestras de mayor frecuencia de cada proceso que se ejecuta en el sistema y luego resume estas muestras a una frecuencia menor. Por ejemplo, puede medir cada proceso cada 200 ms y resumir estas muestras cada 5 segundos, incluidos los valores mínimo/promedio/máximo para determinadas métricas.

Lectura sugerida: 20 herramientas de línea de comandos para monitorear el rendimiento de Linux

Cpustat genera datos de dos maneras posibles: una lista de texto puro del intervalo de resumen y un panel de control colorido con desplazamiento de cada muestra.

Cómo instalar Cpustat en Linux

Debe tener Go (GoLang) instalado en su sistema Linux para poder usar cpustat, haga clic en el enlace a continuación para seguir los pasos de instalación de GoLang, es decir, si no tiene instaló:

  1. Instale GoLang (lenguaje de programación Go) en Linux

Una vez que haya instalado Go, escriba el comando go get a continuación para instalarlo. Este comando instalará el binario cpustat en su GOBIN. variables:

go get github.com/uber-common/cpustat

Cómo utilizar Cpustat en Linux

Cuando se complete el proceso de instalación, ejecute cpustat de la siguiente manera con privilegios de root usando el comando sudo, es decir, si controla el sistema como un usuario no root; de lo contrario, obtendrá el error como se muestra:

$GOBIN/cpustat
This program uses the netlink taskstats interface, so it must be run as root.

Nota: Para ejecutar cpustat así como todos los demás programas Go que haya instalado en su sistema como cualquier otro comando, incluya GOBIN variable en su variable de entorno PATH. Abra el enlace a continuación para aprender cómo configurar la variable PATH en Linux.

  1. Aprenda a configurar sus variables PATH de forma permanente en Linux

Así es como funciona cpustat; se consulta el directorio /proc para obtener la lista actual de ID de proceso para cada intervalo, y:

  • para cada PID, lea /proc/pid/stat y luego calcule la diferencia con la muestra anterior.
  • en caso de que sea un PID nuevo, lea /proc/pid/cmdline.
  • para cada PID, envíe un mensaje de enlace de red para obtener las estadísticas de tareas y calcular la diferencia con la muestra anterior.
  • busque /proc/stat para obtener las estadísticas generales del sistema.

Nuevamente, cada intervalo de sueño se ajusta para tener en cuenta la cantidad de tiempo consumido para obtener todas estas estadísticas. Además, cada muestra también registra el tiempo que tomó escalar cada medición por el tiempo real transcurrido entre muestras. Esto intenta tener en cuenta los retrasos en el propio cpustat.

Cuando se ejecuta sin ningún argumento, cpustat mostrará lo siguiente de forma predeterminada: intervalo de muestreo: 200 ms, intervalo de resumen: 2 s (10 muestras), mostrando los 10 procesos principales, filtro de usuario: todos, filtro pid: todos como se muestra en la siguiente captura de pantalla:

sudo $GOBIN/cpustat 

Del resultado anterior, los siguientes son los significados de las métricas de resumen de todo el sistema que se muestran antes de los campos:

  • usr: tiempo de ejecución mínimo/promedio/máximo del modo de usuario como porcentaje de una CPU.
  • sys: tiempo de ejecución del modo de sistema mínimo/avg/max como porcentaje de una CPU.
  • nice: tiempo de ejecución de prioridad baja en modo de usuario mínimo/promedio/máximo como porcentaje de una CPU.
  • inactivo: tiempo de ejecución mínimo/promedio/máximo del modo de usuario como porcentaje de una CPU.
  • iowait: tiempo de retardo mínimo/promedio/máximo en espera de E/S del disco.
  • prun: recuento mínimo/promedio/máximo de procesos en estado ejecutable (igual que el promedio de carga).
  • pblock: recuento mínimo/promedio/máximo de procesos bloqueados en el disco IO.
  • pstart: número de procesos/hilos iniciados en este intervalo de resumen.

Del resultado anterior, para un proceso determinado, las diferentes columnas significan:

  • nombre: nombre de proceso común de /proc/pid/stat o /proc/pid/cmdline.
  • pid: identificación del proceso, también conocido como "tgid".
  • min: muestra más baja de tiempo de usuario+sistema para el pid, medida desde /proc/pid/stat. La escala es un porcentaje de una CPU.
  • max: muestra más alta de tiempo de usuario+sistema para este pid, también medido desde /proc/pid/stat.
  • usr: tiempo promedio del usuario para el pid durante el período de resumen, medido desde /proc/pid/stat.
  • sys: tiempo promedio del sistema para el pid durante el período de resumen, medido desde /proc/pid/stat.
  • nice: indica el valor "buen" actual para el proceso, medido desde /proc/pid/stat. Más alto significa "mejor".
  • runq: cronometra el proceso y todos sus subprocesos en estado ejecutable pero esperando para ejecutarse, medido a partir de taskstats a través de netlink. La escala es un porcentaje de una CPU.
  • iow: cronometra el proceso y todos sus subprocesos bloqueados por la E/S del disco, medido a partir de taskstats a través de netlink. La escala es un porcentaje de una CPU, promediado durante el intervalo de resumen.
  • intercambio: cronometrar el proceso y todos sus subprocesos esperando ser intercambiados, medido a partir de taskstats a través de netlink. La escala es un porcentaje de una CPU, promediado durante el intervalo de resumen.
  • vcx e icx: número total de cambios de contexto voluntarios por el proceso y todos sus subprocesos durante el intervalo de resumen, medido a partir de taskstats a través de netlink.
  • rss: valor RSS actual obtenido de /proc/pid/stat. Es la cantidad de memoria que utiliza este proceso.
  • ctime: suma del tiempo de CPU del usuario+sistema consumido por los hijos esperados que salieron durante este intervalo de resumen, medido desde /proc/pid/stat.

Tenga en cuenta que los procesos secundarios de ejecución prolongada a menudo pueden confundir esta medición, porque el tiempo se informa solo cuando el proceso secundario sale. Sin embargo, esto es útil para medir el impacto de los trabajos cron frecuentes y las comprobaciones de estado en las que muchos procesos secundarios suelen consumir el tiempo de la CPU.

  • thrd: número de subprocesos al final del intervalo de resumen, medido desde /proc/pid/stat.
  • sam: número de muestras para este proceso incluidas en el intervalo de resumen. Es posible que los procesos que se iniciaron o finalizaron recientemente hayan sido visibles para menos muestras que el intervalo de resumen.

El siguiente comando muestra los 10 principales procesos de usuario raíz que se ejecutan en el sistema:

sudo $GOBIN/cpustat -u root

Para mostrar la salida en un modo de terminal sofisticado, use el indicador -t de la siguiente manera:

sudo $GOBIN/cpustat -u roo -t

Para ver el número x superior de procesos (el valor predeterminado es 10), puede usar el indicador -n; el siguiente comando muestra los 20 procesos principales de Linux que se ejecutan en el sistema:

sudo $GOBIN/cpustat -n 20 

También puede escribir el perfil de CPU en un archivo usando la opción -cpuprofile de la siguiente manera y luego usar el comando cat para ver el archivo:

sudo $GOBIN/cpustat -cpuprofile cpuprof.txt
cat cpuprof.txt

Para mostrar información de ayuda, utilice el indicador -h de la siguiente manera:

sudo $GOBIN/cpustat -h

Encuentre información adicional en el repositorio cpustat Github: https://github.com/uber-common/cpustat

¡Eso es todo! En este artículo, le mostramos cómo instalar y utilizar cpustat, una útil herramienta de medición del rendimiento del sistema para Linux. Comparta sus pensamientos con nosotros a través de la sección de comentarios a continuación.