No seguramente, pero sobre todo en 1.00*n_cpu
.
La carga significa lo siguiente: si hay múltiples procesos en un sistema de una sola CPU, se están ejecutando aparentemente en paralelo. Pero no es cierto. Lo que prácticamente sucede: el núcleo le da 1/100 de segundo a un proceso y luego interrumpe su funcionamiento con una interrupción. Y le da el siguiente 1/100 de segundo a otro proceso.
Prácticamente la pregunta, "¿qué proceso debería obtener nuestro próximo intervalo de 1/100 segundos?", Será decidida por una heurística compleja. Se nombra como programación de tareas .
Por supuesto, los procesos que están bloqueados, por ejemplo, están esperando sus datos de lo que están leyendo del disco, están exentos de esta programación de tareas.
Qué carga dice: cuántos procesos están esperando actualmente su próximo marco de tiempo de 1/100 segundos. Por supuesto, es un valor medio. Esto se debe a que puede ver varios números en a cat /proc/loadavg
.
La situación en un sistema multi-CPU es un poco más compleja. Hay múltiples cpus, cuyos marcos de tiempo se pueden dar a múltiples procesos. Eso hace que la programación de tareas sea un poco más compleja, pero no demasiado. Pero la situación es la misma.
El kernel es inteligente, trata de compartir los recursos del sistema para una eficiencia óptima, y está cerca de eso (hay cosas menores de optimización, por ejemplo, es mejor si un proceso se ejecutará el mayor tiempo posible en el mismo CPU debido a consideraciones de almacenamiento en caché, pero no importan allí). Esto se debe a que si tenemos carga 8, eso significa que en realidad hay 8 procesos esperando su próximo segmento de tiempo. Si tenemos 8 cpus, podemos dar estos intervalos de tiempo al cpus uno a uno, y así nuestro sistema se utilizará de manera óptima.
Si ve a top
, puede ver que el número de procesos en ejecución reales es sorprendentemente bajo: son los procesos marcados R
allí. Incluso en un sistema no realmente duro, a menudo es inferior a 5. Esto se debe en parte a que los procesos que esperan sus datos de los discos o de la red también están suspendidos (marcados S
en la parte superior). La carga muestra solo el uso de la CPU.
También hay herramientas para medir la carga del disco, en mi opinión, deberían ser al menos importantes como el monitoreo del uso de la CPU, pero de alguna manera no es tan conocido aquí en nuestro mundo profesional de administradores de sistemas.
Las herramientas de Windows a menudo dividen la carga con el número real de cpus. Esto hace que algunos administradores profesionales del sistema de Windows utilicen la carga del sistema en este sentido dividido por CPU. No tienen razón y probablemente estarán más felices después de que les expliques esto.
Las CPU multinúcleo son prácticamente varias CPU en el mismo chip de silicio. No hay diferencia.
En el caso de las CPU hiperprocesadas hay un efecto secundario interesante: cargar una CPU hace que sus pares hiperprocesados sean más lentos. Pero esto sucede en una capa más profunda de lo que maneja la programación normal de tareas, aunque puede (y debería) influir en las decisiones de movimiento del planificador.
Pero desde nuestro punto de vista actual, lo que determina la carga del sistema, tampoco importa.