Como o tempo da CPU é medido no Windows?

1

Atualmente, estou criando um programa que identifica processos que estão suspensos / fora de controle e que usam um núcleo inteiro da CPU. O programa então os encerra, portanto, o uso da CPU pode ser mantido sob controle. Estes são todos os processos single-threaded.

No entanto, tive um problema: quando executo o comando 'tasklist' no Windows, isso gera:


Image Name:   Blockland.exe
PID:          4880
Session Name: Console
Session#:     6
Mem Usage:    127,544 K
Status:       Running
User Name:    [removed]\[removed]
CPU Time:     0:00:22
Window Title: C:\HammerHost\Blockland\Blockland.exe

Então, eu sei que a linha que diz "CPU Time" é uma indicação do tempo total, em segundos, usado pelo programa desde que começou.

Mas vamos supor que haja 4 núcleos de CPU no sistema. Isso significa que ele usou 22 segundos de um núcleo e, portanto, usou 5,5 segundos no total da CPU? Ou isso significa que o processo consumiu 22 segundos em toda a CPU?

    
por Hammereditor2 03.03.2014 / 03:09

1 resposta

1

O "tempo de CPU" é o tempo total usado pelo programa em todas as CPUs ("CPU" aqui significa "core" se você tiver hyperthreading desativado; significa "processador lógico", se você tiver o hyperthreading ativado).

Assim, em um sistema com quatro núcleos, o HT desativado, um programa que é executado por 30 segundos de tempo de relógio de parede poderia teoricamente usar até 120 segundos de tempo de CPU.

Como MaQleod afirmou, um único thread só funcionará em uma CPU por vez. No entanto, programas single-threaded são bastante raros nos dias de hoje.

Does this mean that it used up 22 seconds of one core, and therefore used 5.5 seconds on the entire CPU in total? Or does this mean that the process used up 22 seconds on the entire CPU?

Pode ser de 22 segundos em um núcleo. Isso poderia significar 5,5 segundos em cada um dos quatro núcleos, todos ao mesmo tempo, o que poderia ser descrito como "5,5 segundos em toda a CPU". Ou pode ser 5 segundos em um núcleo, 2 em outro, 15 em um terceiro e nada no quarto núcleo.

Ou o tempo total da CPU de 22 segundos poderia ter sido distribuído muito mais na hora do relógio, com muita espera. A maioria dos programas passa a maior parte do tempo esperando. Uma métrica mais útil que o tempo total de CPU usado é o percentual tempo de CPU usado. Mas é muito complicado identificar os hogs de CPU, ao contrário dos programas que estão momentaneamente ligados a computação. Encerrar um processo pode perder o trabalho e até corromper arquivos - tem certeza de que deseja fazer isso?

Dica: não tente encerrar o processo ocioso.

    
por 23.01.2015 / 12:13