web-dev-qa-db-ja.com

タスクリストのCPU時間をCPU使用率に変換する方法は?

tasklistを使用して、CPUのX%以上を消費しているプロセスを見つけようとしています(後でtaskkillで強制終了します)。

時間形式が何パーセントを表すかを知るにはどうすればよいですか?

ドキュメントには次のように書かれています。

TASKLIST options

/FI   filter               

そして、1つのフィルターは次のようになります。

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使用率の関係は何ですか?

10
OscarRyz

タスクリストを使用してこれを行う簡単な方法はないようです。そのため、VBscriptまたは別のスクリプト言語でこれを行うか、別のアプローチを使用することをお勧めします。バッチファイルに制限されている場合は、 [〜#〜] wmic [〜#〜] コマンドを使用して、実行中のプロセスとそれぞれのCPU時間のリストを取得できます。

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

私のテストでは、WMIクエリの実行中に急上昇したため、wmipsrv.exeのCPUが100%であることが示されていることに注意してください。スクリプトでそれを説明する必要があります。そうしないと、WMIサービスを絶えず強制終了しようとすることになります;)

参照:
http://waynes-world-it.blogspot.com/2008/09/useful-general-command-line-operations.html
http://technet.Microsoft.com/en-us/library/bb742610.aspx

17
Jay