typeperf コマンドでパフォーマンスカウンタを取得してみる
通常 (なのかな?) パフォーマンスカウンタを取得する場合は、パフォーマンスモニタを使用します。
typedef はコマンドベースで実行するものです。
typeperf は取得したいカウンターを別ファイルに保存しておき、それを読みこませることで、設定したカウンターの取得ができます。パフォーマンスカウンターは下図のように設定します。
これらを手入力するのは面倒なので、パフォーマンスモニターの設定画面を使用すると少しだけ便利です。(各行が編集可能になりますので、コピーしてください。)
それでは、設定したパフォーマンスカウンタを 5 秒毎に読み込み、合計のサンプリング数を 1000 に設定、パフォーマンスカウンターの結果はバイナリ形式で出力します。コマンドは下記の通りです。
typeperf -cf pCounter.txt -si 5 -sc 1000 -f bin -o pCounterResult.blg
コマンドの実行を止めるには、Ctrl + C を押下します。
typeperf 以外にも PowerShell でパフォーマンスカウンタを取得する方法があります。.NETFramework の System.Diagnostics.PerformanceCounter を使用する方法です。
スクリプトは下記の通りです。
$pCounter = new-object System.Diagnostics.PerformanceCounter("Processor", "% Processor Time", "_Total")
PowerShell ISE で実行確認してみます。
PS C:\Windows\system32> $pCounter = new-object System.Diagnostics.PerformanceCounter("Processor", "% Processor Time", "_Total") PS C:\Windows\system32> $pCounter CategoryName : Processor CounterHelp : % Processor Time is the percentage of elapsed time that the processor spends to execute a non-Idle thread. It is calculated by measuring the percentage of time that the processor spends executing the idle thread and then subtracting that value from 100%. (Each processor has an idle thread that consumes cycles when no other threads are ready to run). This counter is the primary indicator of processor activity, and displays the average percentage of busy time observed during the sample interval. It should be noted that the accounting calculation of whether the processor is idle is performed at an internal sampling interval of the system clock (10ms). On todays fast processors, % Processor Time can therefore underestimate the processor utilization as the processor may be spending a lot of time servicing threads between the system clock sampling interval. Workload based timer applications are one example of applications which are more likely to be measured inaccurately as timers are signaled just after the sample is taken. CounterName : % Processor Time CounterType : Timer100NsInverse InstanceLifetime : Global InstanceName : _Total ReadOnly : True MachineName : . RawValue : 25200234375 Site : Container :
パフォーマンスカウンターを取得するのは、どちらがいいんでしょう?個人的には、typeperf がお手軽な気がします。しかし、今の流行りにのるには、やはり PowerShell ですね?