如何将任务列表的CPU时间转换为CPU%使用率?
-
03-07-2019 - |
题
我正在尝试使用 tasklist
来找出哪个进程消耗的CPU超过我的CPU的百分比(以后用 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%? CPU使用时间与CPU使用百分比之间的关系是什么?
解决方案
任务列表的CPUTime衡量自流程开始以来已经使用了多少CPU时间(周期),因此要将其转换为百分比,它将是
(TotalProcessRuntime / CpuTime) / 100
至少,这就是我收集的内容:)
其他提示
使用任务列表看起来并不是一种简单的方法,所以我建议使用VBscript或其他脚本语言,或使用不同的方法。如果您受限于批处理文件,则可以使用 WMIC 命令获取正在运行的进程列表及其各自的CPUTime:
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%的CPU,因为它在执行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
不隶属于 StackOverflow