Como converter tempo de CPU de uma lista de tarefas para o uso da CPU%?
-
03-07-2019 - |
Pergunta
Eu estou tentando usar tasklist
para descobrir qual processo está consumindo mais do que X por cento do meu CPU (para depois matá-lo com taskkill
.)
Como eu sei que por cento um formato de hora representa?
As documentações diz:
TASKLIST options
/FI filter
E um filtro pode ser:
CPUTIME eq, ne, gt, lt, ge, le CPU time in the format: hh:mm:ss.
hh - number of hours,
mm - minutes, ss - seconds
Se eu tentar
tasklist /FI "CPUTIME gt 00:00:10"
ele funciona.
Mas se eu
tasklist /FI "CPUTIME gt 90"
que não funciona.
Como posso saber que formato de hora representam 90%? Ou 80%? Qual é a relação entre o tempo de uso da CPU eo por cento da CPU?
Solução
CPUTime da Lista de Tarefas é uma medida de quanto tempo de CPU (ciclos) têm sido utilizados desde o início do processo, de modo a convertê-lo em um por cento, seria
(TotalProcessRuntime / CpuTime) / 100
Pelo menos, isso é o que eu recolho:)
Outras dicas
Não parece que há uma maneira fácil de fazer isso com tasklist, então eu gostaria de sugerir ou fazer isso em VBScript ou outra linguagem de script, ou usando uma abordagem diferente. Se você está restrito a arquivos em lote, em seguida, você poderia usar o WMIC comando para obter a lista de processos com sua respectiva CPUTime execução:
C:\> wmic path Win32_PerfFormattedData_PerfProc_Process get Name,PercentProcessorTime
Name PercentProcessorTime
Idle 0
System 0
Smss 0
csrss 0
winlogon 0
services 0
lsass 0
[...]
wmiprvse 100
wmic 0
_Total 100
Note que esta no meu teste mostrou wmipsrv.exe como tendo 100% de CPU, porque cravado ao executar a consulta WMI. Você deve explicar que em seu script ou você vai acabar tentando matar o serviço WMI constantemente;)
Referência:
http: // waynes-world-lo .blogspot.com / 2008-line útil-geral-comando-operations.html / 09 /
http://technet.microsoft.com/en-us/library/bb742610.aspx