Estou assistindo a porcentagem de utilização da CPU por um processo. Como um processo usa apenas 50% da CPU? Um processo não usa 100%, depois 0%, depois 100%? Não é como qualquer outra instrução é um programa diferente.
Estou assistindo a porcentagem de utilização da CPU por um processo. Como um processo usa apenas 50% da CPU? Um processo não usa 100%, depois 0%, depois 100%? Não é como qualquer outra instrução é um programa diferente.
Respostas:
Ele só pesquisa totais cerca de uma vez por segundo. Você está vendo quanto do último segundo foi usado.
Se você vir uma CPU em 50% por um tempo, provavelmente está usando 100% de uma CPU em um sistema com duas CPUs.
Tecnicamente, você está correto. A qualquer momento, a CPU está sendo usada ou não. Mas exibir isso em um gráfico não seria muito útil; portanto, o gráfico está calculando a média da utilização da CPU durante um período de tempo, provavelmente a cada segundo.
O sistema operacional agenda o processo por um determinado período de tempo. Portanto, se o processo estiver agendado para (digamos) 1 ms de 10 ms, ele estará usando 10% da CPU.
É um pouco contra-intuitivo, pois (em um sistema de thread único e CPU única), o processo está em execução ou não. ou seja, está usando 100% ou 0%. A porcentagem que você vê é medida em uma janela de tempo e é uma medida do SO que está alocando intervalos de tempo para que seu processo seja executado.
Observe que seu processo não contribuirá para isso se você estiver acessando E / S. Portanto, se você estiver fazendo um cálculo enorme, registrará 100% (assumindo que nada mais seja executado). Se você esperar por um pacote de rede / acesso ao disco, etc., a sua CPU diminuirá, apesar do processo ainda estar em execução.
Em um nível muito baixo, você está basicamente certo. A qualquer momento, o processador está executando uma instrução para um determinado processo ou não está.
Mas seu sistema operacional está entre os processos e o processador, fazendo com que eles compartilhem tempo. A porcentagem que você vê é a porcentagem de tempo de processamento recente que o SO concedeu a esse processo.
É baseado no tempo médio. Apesar de todos os threads poderem ter o mesmo pacote de tempo de CPU (com base na prioridade), eles podem dizer "obrigado, mas estou ocioso" e passar sua vez para o próximo thread. É por isso que os programas nem sempre usam o mesmo% de tempo e a maioria dos programas consome 0% da CPU, e os programas que realmente precisam de CPU podem levar quase 100% do tempo para si.
Por que o limite é de 50%? Você provavelmente tem dois núcleos de CPU e está usando apenas um.
Ou, como sugerido, está usando hyperthreading, mas não sei como esse se comporta exatamente.
A utilização do sistema é amostrada e calculada a média, o que é a única coisa sensata a fazer.
Por exemplo, um registro de quanto tempo um processo / thread gasto em execução durante 1 segundo é mantido. Se ele gastou 1 segundo na CPU, é 100% da CPU (ou 50% se você tiver 2 CPUs e assim por diante), se gastou 100ms com 10% de utilização da CPU.