Como é o uso da CPU calculado?
Pergunta
O Gerenciador de tarefas do Windows mostra o uso da CPU em porcentagem. Qual é a fórmula por trás disso? Será isto:
uso% da CPU para o processo de A = (Soma de todas as fatias de tempo dado a uma até agora) / O tempo total desde que a máquina iniciada
Ou é outra coisa?
Solução
Eu não estou 100% de certeza que é usos, mas eu acho que você está um pouco fora no cálculo CPU.
Eu acredito que eles estão fazendo algo parecido.
Process A CPU Usage = (Cycles for A over last X seconds)/(Total cycles for last X seconds)
Eu acredito que é amarrado ao conjunto "update intervalo" no gerenciador de tarefas.
Ao fazer um pouco de pesquisa para você embora eu achei artigo este MSDN que mostra a maneira recomendada microsoft de cálculo do tempo de CPU de um conjunto de instruções, isso pode apontar um pouco para seu cálculo também.
Outras dicas
Não, não é "desde o tempo de inicialização." - é muito mais do que isso sensível ao tempo
É "proporção de tempo durante o qual uma CPU estava funcionando ativamente um fio nesse processo desde a última atualização". (Onde a taxa de atualização é normalmente cerca de um segundo.) No Gerenciador de tarefas Penso que é então dividido pelo número de CPUs, por isso o total acaba sendo 100% (ou seja, em uma máquina dual core, um single-threaded porco CPU irá mostrar como 50%). Outros programas similares, por vezes, não faça isso, dando um total de 100% * núcleos.
Você também pode querer verificar este artigo como a forma como ciclos de CPU são tratados com relação ao agendamento foi alterado como parte do Vista. Presumo que isto também se aplica para Win7.
Veja o código-fonte do Gerenciador de tarefas