Как преобразовать процессорное время списка задач в процент использования процессора?

StackOverflow https://stackoverflow.com/questions/206805

  •  03-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь использовать tasklist чтобы выяснить, какой процесс потребляет более X процентов моего процессора (чтобы позже уничтожить его с помощью taskkill.)

Как я узнаю, какой процент представляет формат времени?

В документации говорится:

TASKLIST options

/FI   filter               

И один фильтр может быть:

CPUTIME         eq, ne, gt, lt, ge, le        CPU time in the format: hh:mm:ss.
                                              hh - number of hours,
                                              mm - minutes, ss - seconds

Если я попытаюсь

tasklist /FI "CPUTIME gt 00:00:10" 

это работает.

Но если я

tasklist /FI "CPUTIME gt 90"

это не так.

Откуда я могу знать, что формат времени составляет 90%?Или 80%?Какова связь между временем использования процессора и процентом загрузки процессора?

Это было полезно?

Решение

CPUTime в списке задач - это показатель того, сколько процессорного времени (циклов) было использовано с момента запуска процесса, поэтому, чтобы преобразовать это в процент, будет

 (TotalProcessRuntime / CpuTime) / 100

По крайней мере, так я понял :)

Другие советы

Не похоже, что есть простой способ сделать это с помощью tasklist, поэтому я бы предложил либо сделать это на VBScript или другом скриптовом языке, либо использовать другой подход.Если вы ограничены пакетными файлами, то вы могли бы использовать WMIC команда для получения списка запущенных процессов с указанием их соответствующего времени процессора:

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

Обратите внимание, что это в моем тестировании показало wmipsrv.exe, что процессор работает на 100%, потому что он подскочил при выполнении запроса WMI.Вы должны учитывать это в своем скрипте, иначе в конечном итоге вы будете постоянно пытаться отключить службу WMI ;)

Ссылка:
http://waynes-world-it.blogspot.com/2008/09/useful-general-command-line-operations.html
http://technet.microsoft.com/en-us/library/bb742610.aspx

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top