オブジェクトとカウンターのデザイン
パフォーマンス オブジェクトは、パフォーマンス データを使用できるエンティティです。 パフォーマンス カウンターは、パフォーマンス オブジェクトで使用できるデータの種類を定義します。 アプリケーションは、複数のパフォーマンス オブジェクトに関する情報を提供できます。 パフォーマンス オブジェクトには、単一のインスタンス カウンターまたは複数のインスタンス カウンターを含めることができます。 1 つのインスタンス オブジェクトは、カウンター値の 1 つのセットを返します。
複数インスタンス オブジェクトは、アプリケーションが制御するオブジェクトが出現するたびに、 オブジェクトのインスタンスを返します。 たとえば、SCSI アプリケーションでは、バイト読み取りと書き込みバイト数などの 2 つのカウンターを持つドライブ オブジェクトを定義できます。 コンシューマーが オブジェクトに対してクエリを実行すると、パフォーマンス DLL は、アプリケーションが制御する各ドライブの オブジェクトのインスタンスを返します。
オブジェクトが 1 つのインスタンスまたは複数のインスタンスをサポートしているかどうかを決定した後、オブジェクトで提供するカウンターの種類を決定する必要があります。 たとえば、未加工の値、レート、パーセンテージとして表示されるカウンター値を指定できます。
選択する必要がある定義済みのカウンターの種類の一覧については、 Windows Server 2003 展開キットのカウンターの種類に関するセクションを参照してください。 カウンターの種類に応じて、生データを提供することや、表示可能な値を計算するためにコンシューマーが使用する時間と頻度の情報と追加のカウンター データを指定する必要がある場合もあります。
データの収集に使用するメソッドは、アプリケーション内の特定のルーチンが呼び出されるたびにカウンターをインクリメントするのと同じくらい簡単です。また、時間のかかる計算が必要になる場合もあります。 カウンターとタイマーはインクリメントされ、クリアされません。 カウンターは、コンシューマーによってサンプリングされる間に 2 回ラップされない限り、ラップできます。 アプリケーションは、パフォーマンスに影響を与えない限り、通常の実行中にデータを収集して格納できます。
データの種類によっては、必要に応じてデータを収集する方が効率的または適切な場合があります。 この状況では、パフォーマンス DLL は、データが要求されたことをアプリケーションと通信する必要があります。 (プロセッサ時間またはメモリ使用量の観点から) 収集コストの高いデータの場合は、コンシューマーが コストの高い データを要求した場合にのみデータを収集することを検討してください。 これにより、コンシューマーは、コストの高くないすべてのカウンターのデータを定期的に要求できます。 データは、必要な場合にのみ要求できます。 パフォーマンス ツールでは 、コストの高いデータは 収集されません。