Por que o tempo de CPU para o processo ocioso do sistema aumenta * mais rápido * que o relógio de parede?

3

Meu computador está funcionando há 30 minutos, mas o gerenciador de tarefas mostra que Tempo de CPU para Processo ocioso do sistema às 01:30 mais. Cada segundo avança outros 3 ou às vezes 4 segundos.

A máquina também está em execução, neste momento muito lenta (embora não geralmente).

É um Win 7 x64 atualizado.

Por que o processo ocioso do sistema é mais rápido que o tempo real?

    
por Gaia 16.07.2013 / 03:55

2 respostas

4

Pode-se calcular o tempo de CPU usado, supondo que o agendador de tarefas equilibre as tarefas em todos os núcleos de maneira uniforme (ou pelo menos de maneira distribuída) como:

CPU Time = Application Time * Number of Cores * Average CPU Utilization

O processo ocioso do sistema é apenas um wrapper para o agendador de tarefas quando não há trabalho a ser feito pela CPU, portanto, caso nada mais esteja em execução no sistema, isso geralmente tem uma utilização muito alta. Supondo que você tenha um sistema de 4 núcleos, e seu processo ocioso ocupa 95% da CPU, a cada segundo você esperaria que o tempo de CPU do temporizador inativo aumentasse em:

CPU Time = (1 second) * (4 cores) * (0.95) = 3.8 seconds

Note que à medida que conseguimos melhores processadores e nossos sistemas operacionais se tornam mais otimizados, isso seria teoricamente máximo. em 100% (por exemplo, em ocioso, a CPU não tem literalmente nenhum trabalho comparado a suas capacidades), nesse caso você esperaria que o Tempo de CPU para o processo ocioso simplesmente aumentasse em tempo real multiplicado pelo número de núcleos. p>

Observe que essa fórmula se aplica mesmo para aplicativos de encadeamento único, pois se um aplicativo de encadeamento único estiver sendo executado constantemente em uma máquina de 4 núcleos, a utilização máxima do processador seria de apenas 25%; assim, o tempo de CPU para esse aplicativo single-threaded deve quase corresponder em tempo real:

CPU Time = (1 second) * (4 cores) * (0.25) = 1 second
    
por 16.07.2013 / 15:43
6

O gerenciador de tarefas mostra tempo de CPU , não em tempo real.

O tempo de CPU é o tempo que foi alocado para o processo em qualquer CPU disponível. Portanto, se você tiver um sistema quad core e só executar processos em um núcleo, o processo ocioso usará o tempo restante nos outros 3 núcleos.

Assim, você obterá um tempo de uso da CPU de 1 hora e 30 minutos durante o tempo de atividade de 30 minutos.

    
por 16.07.2013 / 15:33