performance - 起動 - パフォーマンスカウンタのパフォーマンスヒット




パフォーマンスモニタ 自動起動 2012 (4)

私の会社の.NETベースのサイトとしてパフォーマンスカウンターを使用することを検討しているとき、私はそれらを使用するオーバーヘッドがどれだけ大きいのだろうと思っていました。

私のサイトでカウンターを更新し続けたいのですか、それとも私が測定したときに行うほうがいいですか?


パフォーマンスの影響は更新時にはごくわずかです。 Microsoftの目的は、常にパフォーマンスカウンターに書き込むことです。 パフォーマンスの低下を引き起こすパフォーマンスカウンターの監視(またはキャプチャー)です。 したがって、perfmonのようなものを使用してデータをキャプチャするときだけです。

実際には、パフォーマンスカウンタオブジェクトは「測定するときに実行する」という効果のみを持ちます。


パフォーマンスカウンタは、共有メモリ(別名メモリマップファイル)の4/8バイトへのポインタに過ぎないため、そのコストはint / long variabileにアクセスするコストに非常に似ています。


私はこれらの多くをテストしました。

Compaq 1Ghz 1プロセッサーの古いマシンでは、約10,000個のカウンターを作成して、それらをリモートでモニターして約20%のCPU使用率を達成することができました。 これらはカスタムカウンタではなく、CPUなどをチェックするだけです。

基本的には、まったく新しいマシン上のすべてのカウンターをほとんど監視て監視することができます。

オブジェクトのインスタンス化には、数秒から数分の時間がかかります。 私はあなたがそうでなければあなたのアプリが永遠にこれらのオブジェクトを作成して座っているすべてのカウンタのためにこれをマルチスレッドすることをお勧めします。 あなたが一度作成すると、それほど長い時間がかかりますが、MSは何をしているのかよく分かりませんが、1カウンターと1スレッドで同時に行うことができる1000スレッドの1000カウンターに対して行うことができます。


私はfamoushamsandwichに同意しますが、サンプリングレートが合理的(5秒以上)し、合理的なカウンターを監視する限り、測定の影響はほとんど無視できます(ほとんどの場合)。





performancecounter