PerformanceCounterの概要と使用方法
PerformanceCounterとは、CPU使用率、メモリ使用率、ディスクの読み書き速度などのコンピューターのパフォーマンス指標を監視するクラスであり、様々な指標の計測を可能にします。
PerformanceCounter クラスを使用するには、以下の手順に従います。
- PerformanceCounter インスタンスを作成する。
PerformanceCounter counter = new PerformanceCounter(categoryName, counterName, instanceName);
- カテゴリ名は、パフォーマンスカウンターのカテゴリ名で、システムで定義済みのカテゴリ(例如:プロセッサ、メモリなど)またはカスタムカテゴリがあります。PerformanceCounterCategoryクラスのGetCategoriesメソッドを使用して使用可能なカテゴリを取得できます。
- counterName: 監視したい具体的な指標を表すパフォーマンスカウンタの名前。PerformanceCounterCategoryクラスのGetCountersメソッドを使用して、指定したカテゴリで利用可能な指標を取得できます。
- instanceName: パフォーマンスカウンターのインスタンス名。指標が特定のインスタンス(プロセスやネットワークインターフェースなど)に属する場合は、インスタンス名を指定する必要があります。 PerformanceCounterCategoryクラスのGetInstanceNamesメソッドを使用して、指定されたカテゴリで使用可能なインスタンスを取得できます。
- PerformanceCounterクラスのメソッドを利用して、メトリクス値を取得する。
- 現在のメトリクス値を取得:
float value = counter.NextValue();
- 指定した時間帯内の平均メトリクス値を取得する
float value = counter.NextValue();
Thread.Sleep(1000);
value = counter.NextValue();
- ディスク読み書きバイト数などの累積指標値を取得する:
long value = counter.RawValue;
- PerformanceCounter クラスの CategoryName、CounterName、InstanceName などの他のプロディやメソッドを利用すると、性能カウンタに関連する情報(カテゴリ名、カウンタ名、インスタンス名など)を取得できます。
PerformanceCounter クラスを使用するには権限が必要で、通常は管理者としてプログラムを実行する必要があります。
CPU使用率を監視するための例を以下に示します:
PerformanceCounter counter = new PerformanceCounter("Processor", "% Processor Time", "_Total");
while (true)
{
float value = counter.NextValue();
Console.WriteLine("CPU使用率:{0}%", value);
Thread.Sleep(1000);
}
上記の例では、PerformanceCounterインスタンスを作成し、「Processor」カテゴリの「% Processor Time」メトリクスの監視を行い、インスタンス名を「_Total」として、ループでCPU使用率を取得し、1秒ごとに一時停止しています。
記載内容が、お役に立てば幸いです!