O que significa a porcentagem de CPU?

11

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.

Anthony D
fonte
1
Tem um processador duplo por acaso?
Definitivamente uma pergunta para o SuperUser.
Noldorin

Respostas:

16

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.

Joel Coehoorn
fonte
4
"um núcleo de um sistema dual core" - ... ou mesmo uma única CPU com 'hyperthreading'.
@ ChrisW: fixo.
Joel Coehoorn
As porcentagens de uso da CPU geralmente são relatadas em 100% para cada CPU individualmente, portanto, a quantidade total de energia da CPU a ser usada em um sistema dual core é de 200%, em um quad core de 400% etc.
David Z
Não estão no gerenciador de tarefas do Windows.
Joel Coehoorn
11

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.

Eric Petroelje
fonte
3

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.

Brian Agnew
fonte
2

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.

tim
fonte
1

É 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.

Havenard
fonte
0

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

Mike Two
fonte
0

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.

n
fonte