¿Cómo puede existir un promedio de carga de 0.00?


12

Entiendo que el equilibrio de carga es una forma de medir qué tan ocupada está la CPU. Sin embargo, no entiendo cómo 0.00puede existir un promedio de carga de . ¿No se ejecuta siempre el núcleo? ¿No forma parte de la carga de la CPU?


66
Tenga en cuenta que en la mayoría de los casos lo que ve como 0.00 es realmente 0.0001 más o menos
PlasmaHH

1
En los viejos tiempos era la longitud promedio de la cola de ejecución. En otras palabras, cuántos procesos estaban listos para ejecutarse (y sin esperar E / S, etc.). Si no hay ninguno es 0.00. En estos días, esto es posible solo si no ejecuta un escritorio gráfico, sino solo un servidor sin GUI.
Thorbjørn Ravn Andersen

Solo para completar, creo que fue uno de los BSD que durante un tiempo tuvo un error del kernel donde el hilo inactivo del kernel se contaba en el promedio de carga, causando un promedio de carga de 1.00 cuando el sistema no hacía nada en absoluto. Eso se solucionó bastante rápido.
un CVn

Respuestas:


16

El promedio de carga durante un período de tiempo es el número promedio de procesos que competían por la CPU durante ese período de tiempo. El "kernel" no se ejecuta si no hay nada que hacer; más específicamente, si no hay nada que hacer, la CPU se entrega a un subproceso especial "inactivo" que no se cuenta (y que puede hacer cosas como poner la CPU en un estado en el que espera una interrupción).

Entonces, por ejemplo, un promedio de carga de 0.6 durante 5 minutos generalmente significa que durante esos 5 minutos la CPU fue utilizada por un total de 3 minutos por algunos procesos (o por el núcleo), y por un total de 2 minutos estaba inactivo Pero, como observa @UKMonkey, podría significar que después de 4 minutos y medio de no hacer nada, 6 procesos compitieron por la CPU durante los últimos 30 segundos ...

La CPU está inactiva si no hay ningún proceso que quiera usarla para ejecutar código, porque todos los procesos están esperando que se complete una operación de entrada o salida o están en espera de ser despertados en un momento determinado.

Los enlaces de @ Panther proporcionan debates más detallados sobre los promedios de carga.


1
El promedio de carga de 0.6 durante 5 minutos también podría significar que no hizo nada durante 4 minutos y medio, y luego en los últimos 30 segundos hubo un número significativo de procesos en espera de tiempo de CPU ... No es una indicación de cuánto trabajo La CPU lo ha hecho, pero cuántos procesos han estado esperando para usarlo.
UKMonkey

@ UKMonkey: Perfectamente cierto ... Los promedios son promedios y el mismo promedio se puede obtener de muchas maneras. Editó la respuesta para explicar que un promedio moderado no significa que los picos también sean razonables.
AlexP

13

Un promedio de carga es una medida de la sobrecarga de un núcleo de CPU en términos de número de procesos que desean usarlo de una vez.

Lo siguiente supone una CPU de un solo núcleo (subproceso único):

  • 0.0

    La CPU no está haciendo nada en absoluto. Si un proceso comenzara a usar la CPU, entonces sería el único que la usaría.

    Una CPU inactiva no significa que no hay procesos en ejecución. Por ejemplo, los servicios en segundo plano y el kernel todavía se están ejecutando y aún ocupan memoria. Simplemente no están usando ninguna CPU, porque no están haciendo nada.

  • 1.0

    La CPU está en uso máximo, pero no hay contención entre los procesos para el uso de la CPU. Es decir, solo se está ejecutando un solo proceso, por lo que puede reclamar el 100% del tiempo de CPU para sí mismo. Alternativamente, se están ejecutando múltiples procesos, pero ninguno reclama una CPU del 100%, y su uso combinado de CPU suma hasta el 100%. Todos siguen funcionando tan rápido como lo harían incluso si tuvieran la CPU para ellos.

  • Mayor que 1.0

    La CPU está en uso máximo, y hay múltiples procesos que desean usarla simultáneamente, por lo que efectivamente se ejecutan más lentamente de lo que de otro modo podrían ejecutarse en una CPU inactiva. Por ejemplo, un promedio de carga de 3.0 indica que los procesos se están ejecutando a un tercio de la velocidad que desean ejecutar. Un promedio de carga de 50.0 indica que los procesos se están ejecutando a 1/50 de la velocidad que desean ejecutar, debido a que todos los demás procesos se están ejecutando. Es decir, las cifras superiores a 1.0 indican que la CPU disponible se está extendiendo entre más y más procesos.

Tener una CPU de múltiples núcleos no cambia lo que significan las cifras, pero puede cambiar su interpretación. Por ejemplo, si tiene una CPU de 4 núcleos, una carga de 1.0 sigue siendo equivalente a un proceso que usa 100% de CPU en un núcleo, pero hay otros tres núcleos. Entonces, en una CPU de 4 núcleos, el punto de máxima eficiencia es 4.0, no 1.0, y el punto en el que todo funciona a 1/3 de eficiencia es 12.0, no 3.0. Para agregar a la complejidad, un solo proceso puede tener más de un hilo cada uno reclamando CPU propia. Por lo tanto, un solo proceso puede usar el 100% de los 4 núcleos si es multiproceso.

Nota IMPORTANTE

El uso de la CPU es solo un recurso que puede limitar el rendimiento de un proceso. La E / S es otra y no se incluye en la carga de la CPU. Un proceso que use una cierta cantidad de CPU no necesariamente podrá usar más en una máquina con carga más ligera, ya que puede afectar otros cuellos de botella.

¿Cuál es el mejor promedio de carga?

Realmente depende de lo que esté haciendo y de si prefiere la capacidad de respuesta o de que la CPU trabaje lo más duro posible.

Para algo que necesita hacerse lo más posible, el promedio de carga debe ser igual o ligeramente superior al número de núcleos. Cualquier cosa mucho mayor que esto indica que podría hacer más, más rápidamente, si separa las tareas en más computadoras / servidores.

Para algo que necesita ser lo más receptivo posible (reaccionar rápidamente), el promedio de carga debe ser un margen cómodo menor que el número de núcleos, como la mitad o un tercio, lo que permite alguna variación intermitente antes de que ocurra una desaceleración.

Para un invitado de virtualización (por ejemplo, KVM), cuanto menor sea el promedio de carga, mejor, porque en realidad está compartiendo la CPU con otros invitados en el mismo host.


Me sorprendió ver que a veces los hilos "esperando en E / S" están incluidos en el promedio de carga serverfault.com/a/524818/27813 parece ...
rogerdpack

@rodgerpack Sí, Dlos procesos de estado siempre se incluyen en el promedio de carga en Linux. Si, es confuso. Sí, deberíamos analizar principalmente otras métricas además de cargar promedio.
kubanczyk

2

Un promedio de carga de 0.00 básicamente significa que su sistema está inactivo y que no hay demora o estrés o cuello de botella en su CPU durante el tiempo medido.

No significa que su CPU esté inactiva, solo significa que si un proceso quiere tiempo de CPU, no hay que esperar.

Es difícil decir más de lo poco que publicó, ya que puede depender de cómo midió su carga (¿sistema, por usuario?) Y durante qué tiempo.

Para algunos detalles y lecturas interesantes ver

https://www.tecmint.com/understand-linux-load-averages-and-monitor-performance/

http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages

http://www.brendangregg.com/blog/2017-08-08/linux-load-averages.html

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.