Não com certeza, mas principalmente em 1.00*n_cpu
.
A carga significa o seguinte: se houver vários processos em um sistema de CPU única, eles estarão executando aparentemente paralelos. Mas isso não é verdade. O que praticamente acontece: o kernel fornece 1/100 segundo para um processo e, em seguida, interrompe sua execução com uma interrupção. E dá o próximo 1/100 segundo para outro processo.
Praticamente a pergunta "qual processo deve obter o próximo intervalo de 1/100 segundos?", será decidida por uma heurística complexa. É nomeado como tarefa agendamento .
Naturalmente, processos que são bloqueados, por exemplo, eles estão esperando seus dados o que eles estão lendo do disco, estão isentos deste agendamento de tarefas.
O que a carga diz: quantos processos estão atualmente aguardando seu próximo 1/100 segundo tempo. Claro, é um valor médio. Isso porque você pode ver vários números em um cat /proc/loadavg
.
A situação em um sistema multi-cpu é um pouco mais complexa. Existem vários processadores, cujos intervalos de tempo podem ser fornecidos para vários processos. Isso torna o agendamento de tarefas um pouco - mas não muito - complexo. Mas a situação é a mesma.
O kernel é inteligente, ele tenta compartilhar os recursos do sistema para a eficiência ideal, e está próximo disso (existem pequenas coisas de otimização, por exemplo, é melhor se um processo for executado o maior tempo possível no mesmo cpu por causa de considerações de cache, mas não importa lá). Isso porque, se tivermos carga 8, isso significa: na verdade, há oito processos aguardando o próximo intervalo de tempo. Se tivermos 8 processadores, podemos dar essas fatias de tempo para o processador de um para um e, assim, nosso sistema será usado de maneira ideal.
Se você vir um top
, verá que o número dos processos em execução reais é surpreendentemente baixo: eles são os processos marcados por R
. Mesmo em um sistema não muito hardcore, é geralmente abaixo de 5. Isso ocorre parcialmente porque os processos aguardando seus dados dos discos ou da rede também são suspensos (marcados com S
no topo). A carga mostra apenas o uso da CPU.
Também há ferramentas para medir a carga do disco, pelo que elas devem ser pelo menos importantes como o monitoramento do uso da CPU, mas de alguma forma isso não é tão conhecido aqui em nosso mundo sysadmin profissional.
As ferramentas do Windows geralmente dividem a carga com o número real dos processadores. Isso faz com que algum administrador profissional do sistema windows use o carregamento do sistema nesse sentido dividido por cpu. Eles não têm razão e provavelmente serão mais felizes depois que você explicar isso para eles.
As CPUs Multicore são praticamente múltiplas CPUs no mesmo chip de silício. Não há diferença.
No caso de CPUs com hyperthread, há um efeito colateral interessante: carregar uma cpu torna seus pares hyperthreaded mais lentos. Mas isso acontece em uma camada mais profunda do que o agendamento normal de tarefas manipula, embora possa (e deva) influenciar as decisões de movimentação de processos do agendador.
Mas do ponto de vista atual - o que determina a carga do sistema - isso também não importa.