comprender la carga de la CPU de Linux – ¿cuándo debería preocuparse?

Andre Lewis el 28 de julio de 2019

es posible que ya esté familiarizado con los promedios de carga de Linux. Los promedios de carga son los tres números que se muestran con los comandos uptime y top – se ven así:

promedio de carga: 0.09, 0.05, 0.,01

La mayoría de la gente tiene una idea de lo que significan los promedios de carga: los tres números representan promedios durante períodos de tiempo progresivamente más largos (promedios de uno, cinco y quince minutos), y que los números más bajos son mejores. Los números más altos representan un problema o una máquina sobrecargada. Pero, ¿cuál es el umbral? ¿Qué constituye valores medios de carga» buenos «y» malos»? ¿Cuándo debe preocuparse por un valor promedio de carga y cuándo debe revolver para arreglarlo lo antes posible?

primero, un poco de fondo sobre lo que significan los valores promedio de carga., Comenzaremos con el caso más simple: una máquina con un procesador de un solo núcleo.

la analogía del tráfico

una CPU de un solo núcleo es como un solo carril de tráfico. Imagina que eres un operador de puente … a veces su puente está tan ocupado que hay coches alineados para cruzar. Quieres que la gente sepa cómo se mueve el tráfico en tu puente. Una métrica decente sería cuántos coches están esperando en un momento determinado. Si no hay autos esperando, los conductores entrantes saben que pueden cruzar de inmediato. Si los autos están atascados, los conductores saben que están en espera de retrasos.,

entonces, operador de Puente, ¿qué sistema de numeración vas a usar? Qué tal:

  • 0.00 significa que no hay tráfico en el puente en absoluto. De hecho, entre las 0.00 y las 1.00 significa que no hay respaldo, y un auto que llega simplemente seguirá adelante.
  • 1.00 significa que el puente está exactamente a su capacidad. Todo sigue siendo bueno, pero si el tráfico se vuelve un poco más pesado, las cosas se van a ralentizar.
  • Más de 1.00 significa que hay copia de seguridad. ¿Cuánto? Bueno, 2.00 significa que hay dos carriles de coches en total one un carril vale la pena en el puente, y un carril vale la pena esperar. 3.,00 significa que hay tres carriles en total worth un carril vale la pena en el puente, y dos carriles vale la pena esperar. Sucesivamente.

esto es básicamente lo que es la carga de la CPU. Los «coches»son procesos que usan una porción del tiempo de CPU («cruzando el puente») o que se ponen en cola para usar la CPU. Unix se refiere a esto como la longitud de la cola de ejecución: la suma del número de procesos que se están ejecutando actualmente más el número que están esperando (en cola) para ejecutarse.

Al igual que el operador del puente, te gustaría que tus autos/procesos nunca estuvieran esperando. Por lo tanto, lo ideal es que la carga de la CPU se mantenga por debajo de 1.00., Además, al igual que el operador del puente, todavía está bien si obtiene algunos picos temporales por encima de 1.00 … pero cuando estás consistentemente por encima de 1.00, necesitas preocuparte.

¿así que estás diciendo que la carga ideal es 1.00?

Bueno, no exactamente. El problema con una carga de 1.00 es que no tiene espacio para la cabeza. En la práctica, muchos administradores de sistemas trazarán una línea en 0.70:

  • La regla general «necesita investigarlo»: 0.70 si su promedio de carga se mantiene por encima de > 0.70, es hora de investigar antes de que las cosas empeoren.

  • La regla general «arreglar esto Ahora»: 1.00., Si su promedio de carga se mantiene por encima de 1.00, encuentre el problema y corríjalo ahora. De lo contrario, vas a ser despertado en medio de la noche, y no va a ser divertido.

  • El » Arrgh, son las 3 AM WTF?»Regla general: 5.0. Si su promedio de carga está por encima de 5.00, podría estar en serios problemas, su caja está colgando o desacelerando, y esto sucederá (inexplicablemente) en el peor momento posible, como en medio de la noche o cuando esté presentando en una conferencia. No dejes que llegue.

¿Qué pasa con los multiprocesadores? Mi carga dice 3.,00, pero las cosas van bien!

¿Tienes un sistema de cuatro procesadores? Sigue siendo saludable con una carga de 3.00.

lo mismo con las CPU: una carga de 1.00 es 100% de utilización de CPU en una caja de un solo núcleo. En una caja de doble núcleo, una carga de 2.00 es el 100% de utilización de la CPU.

Multinúcleo vs multiprocesador

Mientras estamos en el tema, vamos a hablar de varios núcleos vs multiprocesador. Para fines de rendimiento, ¿es una máquina con un solo procesador de doble núcleo básicamente equivalente a una máquina con dos procesadores con un núcleo cada uno? Sí. Aproximadamente., Hay un montón de sutilezas aquí en relación con la cantidad de caché, la frecuencia de las transferencias de procesos entre procesadores, etc. A pesar de esos puntos más finos, a los efectos de dimensionar el valor de carga de la CPU, el número total de núcleos es lo que importa, independientemente de cuántos procesadores físicos se distribuyan esos núcleos.

lo que nos lleva a dos nuevas reglas empíricas:

  • La regla empírica «número de núcleos = carga máxima»: en un sistema multinúcleo, su carga no debe exceder el número de núcleos disponibles.,

  • la regla general «cores is cores»: la forma en que los núcleos se distribuyen sobre las CPU no importa. Dos núcleos cuádruples = = cuatro núcleos duales = = ocho núcleos simples. Son los ocho núcleos para estos propósitos.

llevándolo a casa

echemos un vistazo a los promedios de carga de salida de uptime:

~time uptime
23:05 hasta 14 días, 6:08, 7 usuarios, promedios de carga: 0.65 0.42 0.36

esto es en una CPU de doble núcleo así que tenemos mucho espacio libre. Ni siquiera voy a pensar en ello hasta que la carga consigue y se mantiene por encima de 1,7 o así.

Ahora, ¿qué pasa con esos tres números? 0.,65 es el promedio en el último minuto, 0.42 es el promedio en los últimos cinco minutos y 0.36 es el promedio en los últimos 15 minutos. Lo que nos lleva a la pregunta:

¿Qué promedio debo observar? Uno, cinco, o 15 minutos?

para los números de los que hemos hablado (1.00 = arréglalo ahora, etc.), deberías mirar los promedios de cinco o 15 minutos. Francamente, si su caja aumenta por encima de 1.0 en el promedio de un minuto, todavía está bien. Es cuando el promedio de 15 minutos va al norte de 1.0 y se queda allí a lo que necesita ajustarse., (obviamente, como hemos aprendido, ajuste estos números al número de núcleos de procesador que tiene su sistema).

So # of cores is important to interpreting load averages … ¿Cómo sé cuántos núcleos tiene mi sistema?

cat /proc/cpuinfo para obtener información sobre cada procesador en su sistema. Nota: no disponible en OSX, Google para alternativas. Para obtener un recuento, se ejecuta a través de grep y recuento de palabras: grep 'model name' /proc/cpuinfo | wc -l

Más servidores? O un código más rápido?

agregar servidores puede ser una curita para el código lento., Scout APM le ayuda a encontrar y corregir su código ineficiente y costoso. Identificamos automáticamente N + 1 llamadas SQL, exceso de memoria y otros problemas relacionados con el código para que pueda pasar menos tiempo depurando y más tiempo programando.

Listo para optimizar tu sitio? Regístrese para una prueba gratuita.

más Lectura

  • Wikipedia-una buena y breve explicación del promedio de carga; va un poco más profundo en la matemática
  • Linux Journal-artículo muy bien escrito, va más profundo que este post o la entrada de wikipedia.,

más sobre el rendimiento de Linux

  • entendiendo E/S de disco – ¿cuándo debería preocuparse?
  • Determinar la memoria libre en Linux

Suscríbase a nuestro feed RSS o síganos en Twitter para obtener más información sobre el rendimiento de Linux.

Deja una respuesta

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