Por que o intervalo de média de carga não é 0-1 + para todos os cpu juntos?

1

Eu sei que a média da carga é 0-1 (ou 0-1024) por cpu. Por exemplo, um quad-core ocupado pode ter uma carga média de 4.0 ou superior. (por exemplo, se houver muitas tarefas). Eu entendo que pode ser enorme como 100 + etc.

Eu também entendo que não é a utilização da CPU (ou seja, pode ir além de 100%), mas reflete o que a CPU é capaz de fazer.

Mas por que não é automaticamente dividido pelo número de CPUs no sistema?

Esta é mais uma questão histórica. Por que é:

(load)

e não:

(load) / (# of cores)

com todas as CPUs tomadas em consideração? Por que é per-cpu? Ter per-cpu significa que primeiro tenho que descobrir quantas CPUs o sistema tem, então divida esse número para obter um número significativo. Isso é complicado ao gerenciar muitos sistemas diferentes.

Isso é para o Linux.

    
por Leo Ufimtsev 23.06.2015 / 16:44

2 respostas

1

Você não disse, mas estou assumindo que isso é para o Linux. Mesmo que você esteja procurando a razão histórica para isso por CPU, sua pergunta indica que você ainda está pensando na média de carga em termos de utilização da CPU em vez da fila de tarefas do kernel que realmente é. Você ainda pode ver a utilização da CPU em programas como o topo, se você quiser ver um% de uso por CPU.

Se você tem 4 núcleos de CPU, significa que o kernel pode fazer fila de 4 tarefas de uma só vez para 4 CPUs. Assim você acaba com uma carga de 4 + alguma bagagem. Se o kernel enfileirar mais tarefas atrás daquelas que estão em execução, o número subirá acima de 4. Não é uma escala de 0 a 100% e o número é tão alto quanto necessário com base na carga de trabalho. Uma vez vi a carga subir para mais de 15.000 devido a um backlog de jobs de E / S em um sistema de arquivos de rede com falha. O número, na verdade, será redefinido após atingir 1024.

    
por 23.06.2015 / 21:51
1

A média de carga não abrange apenas os processos que usam o tempo da CPU ou esperam por ela. Ele também abrange esses processos em suspensão ininterrupta (o que geralmente significa aguardar E / S de disco).

A divisão pelo número de CPUs levaria a alguns números bizarros (e muitas vezes inúteis). Se você tiver um sistema com 4 núcleos e 7 processos aguardando um único disco, a média de carga de acordo com sua definição convergiria para 1,75. Mas esse número não significa nada. Dividir pelo número de núcleos ao medir uma carga de trabalho de E / S vinculada forneceria um resultado sem sentido.

Certamente seria possível calcular um número médio de processos aguardando CPU e um número médio de processos em suspensão ininterrupta. A soma desses dois números seria a média de carga tradicional. O número médio de processos aguardando CPU dividido pelo número de CPUs também pode ser um número significativo em alguns contextos.

O número médio de processos em sono não interrupto dividido pelo número de discos no entanto não seria significativo. Afinal, estar em sono ininterrupto não significa qual disco está esperando, e também não está claro se o número de discos deve contar também os dispositivos virtuais.

    
por 24.06.2015 / 16:23