タスクリストのCPU時間をCPU使用率に変換する方法は?
-
03-07-2019 - |
質問
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使用率の関係はどうですか?
解決
TasklistのCPUTimeは、プロセスの開始以降に使用されたCPU時間(サイクル)の測定値であるため、これをパーセントに変換するには、
(TotalProcessRuntime / CpuTime) / 100
少なくとも、それは私が収集するものです:)
他のヒント
tasklistでこれを行う簡単な方法はないようですので、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のCPU使用率が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