presentamos runqstat – nueva herramienta de carga y cola de ejecución de Linux

obtener el promedio real de carga de CPU en Linux

el promedio de carga de Linux es tan antiguo como las colinas, y casi tan confuso, ya que pocos ingenieros pueden incluso decirle lo que realmente es o cómo se calcula.,
afortunadamente, Brendon Gregg tiene un gran resumen que incluye su historia, en Linux Load Averages: Solving the Mystery, donde se puede ver el problema principal:

Linux load Average includes I/O

es tan simple como eso. A diferencia de todos los otros sistemas UNIX-like (Solaris, AIX, etc.), Linux cuenta tanto los procesos en ejecución / ejecutables como los procesos bloqueados (ininterrumpidos), que generalmente están esperando e/s. Esto es algo malo, y Data de un parche arcaico de 24 años que Brendon encontró.

¿por Qué nos preocupamos?,

nos preocupamos porque en cualquier sistema de uso mixto (que usa CPU y E / S), el promedio de carga resultante es altamente variable y, a menudo, inútil. Esto puede ser especialmente malo con sistemas altamente roscados que pueden causar e / s, por lo que es fácil tener docenas o cientos de ellos bloqueados en discos lentos.

lo que la mayoría de Nosotros realmente quiere es la medida tradicional de Unix del promedio de carga, que es el número promedio de procesos ejecutables promediados a lo largo del tiempo. Esto nos dice qué tan cargado está nuestro sistema, y podemos ver la cola como una medida de saturación, i. e., una cola de CPU continua significa que estamos sobrecargados.

entonces, ¿cómo podemos conseguir eso?

realmente queremos la longitud de la cola de ejecución de la CPU, que se convierte en > 0 cuando los procesos tienen que esperar por la CPU. Pero es difícil de conseguir con precisión, y el kernel de Linux no es muy amigable en esta área.

primero, lo que la gente de Linux llama la cola de ejecución incluye tareas en ejecución, por lo que no es realmente la cola, sino la cola más lo que se está ejecutando. Eso es confuso, y por lo tanto necesita restar el número de CPU para tener una idea de la cola real.,

varias herramientas pueden obtener el tamaño de la cola de ejecución instantánea actual. Esto es lo que muestra la columna «R» de vmstat y «sar-q»; ambos obtienen esto de la métrica procs_running de /proc/stat.

el problema es que este es un recuento instantáneo, por lo que es muy ruidoso y necesita ser promediado para obtener datos útiles, pero el núcleo no lo hará por usted. Idealmente habría una salida de kernel en / proc solo para CPU y solo promedios de carga de E/S, pero nadie ha creado esto todavía.,

así que necesitamos una herramienta que intente emular cómo funciona el promedio de carga, muestreando rápidamente el tamaño de la cola de ejecución instantánea y promediándolo a lo largo del tiempo.

presentamos runqstat

runqstat hace esto: es una herramienta de línea de comandos simple escrita en Go que por defecto muestra este tamaño de cola cada 10 ms y promedia esto en un segundo. El objetivo es una medida estable y precisa de lo ocupado que está el sistema.,incluye opciones para cambiar la frecuencia de muestreo y el tiempo promedio, además de restar el número de CPU para que pueda ver el tamaño real de la cola si lo desea.

también tiene una opción para calcular el conteo promedio bloqueado, que en teoría puede restar del promedio de carga para obtener una vista diferente de la saturación de la CPU (y para ver cuánto problema le está causando el promedio de carga).

con esta herramienta, los equipos de operaciones finalmente tienen una buena manera de monitorear la saturación de sus servidores Linux.

encuéntralo en Github-runqstat

Share

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *