O que significa o percentual de CPU?

9

Estou vendo a porcentagem de utilização da minha CPU por um processo. Como um processo usa apenas 50% da CPU? Um processo não usa 100%, em seguida, 0% e, em seguida, 100%? Não é como todas as outras instruções é um programa diferente.

    
por Anthony D 14.09.2009 / 21:53

7 respostas

14

Ele só pesquisa totais aproximadamente uma vez por segundo. Você está olhando quanto do último segundo que usou.

Se você vir um cpu sentado a 50% por um tempo, o que provavelmente está acontecendo é que ele está usando 100% de um cpu em um sistema dual cpu.

    
por 14.09.2009 / 21:55
11

Tecnicamente, você está correto. A qualquer momento, a CPU está sendo usada ou não utilizada. 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 certo período de tempo, provavelmente a cada segundo.

    
por 14.09.2009 / 21:56
3

O sistema operacional agenda o processo por um determinado período de tempo. Então, se o processo está programado para (digamos) 1ms de 10ms, então ele estará usando 10% da CPU.

É um pouco contra-intuitivo, já que (em um sistema com uma única thread e CPU única), o processo está sendo executado ou não está em execução. ou seja, está usando 100% ou 0%. A porcentagem que você vê é medida em uma janela de tempo e é uma medida dos slots de alocação de OS para o processo a ser executado.

Observe que o seu processo não contribuirá para isso se você estiver acessando a E / S. Então, se você está fazendo um grande cálculo, você irá registrar 100% (assumindo que nada mais seja executado). Se você esperar por um acesso de pacote / disco de rede, etc., seu número de CPU irá diminuir, apesar do fato de que seu processo ainda está em execução.

    
por 14.09.2009 / 21:56
2

Em um nível muito baixo, você está basicamente certo. Em qualquer instante, o processador está executando uma instrução para um determinado processo ou não é.

Mas o seu SO está entre os seus processos e o processador, fazendo com que eles compartilhem tempo. A porcentagem que você vê é a porcentagem do tempo de processamento recente que o sistema operacional concedeu a esse processo.

    
por 14.09.2009 / 21:57
1

É baseado no tempo médio. Apesar de todos os encadeamentos poderem ter o mesmo pacote de tempo de CPU (baseado na prioridade), os encadeamentos podem apenas dizer "obrigado, mas estou inativo" e passar para o próximo encadeamento. É por isso que os programas nem sempre usam o mesmo% time, 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 usa apenas um.

Ou, como sugerido, está usando hyperthreading, mas não sei como este se comporta exatamente.

    
por 14.09.2009 / 22:11
0

Seu programa pode estar fazendo muitas E / Ss (leituras / gravações em disco ou em rede). Isso manteria o programa ocupado, mas precisaria de pouco ou nenhum tempo de CPU.

    
por 14.09.2009 / 21:56
0

A utilização do sistema é amostrada e calculada em média, o que é a única coisa sensata a fazer.

Por exemplo um registro de quanto tempo um processo / thread gasto executando durante 1 segundo é mantido. Se ele gastou 1 segundo na CPU, isso é 100% da CPU (ou 50% se você tiver 2 CPUs e assim por diante), se gastou 100ms com 10% de utilização da CPU.

    
por 14.09.2009 / 22:10