0

パフォーマンスAPIを理解しようとしていますが、PdhGetFormattedCounterValue関数とdwFormatパラメーターを理解するのに問題があります。

この関数を呼び出すときに選択する形式を知るにはどうすればよいですか?

PDH_COUNTER_INFOMSDNで構造体を見つけ、この構造体にdwTypeメンバーがあることを確認しましたが、この構造体を使用してカウンター形式に関する情報を取得し、関数を正常に呼び出す方法をまだ理解していませんPdhGetFormattedCounterValue

4

1 に答える 1

2

あなたは選ぶことができます。

多くのカウンターは小数として計算されるか、スケーリングされるか、またはその両方であるため、小数部分があります。これはPDH_FMT_DOUBLE良い選択になります。

一部のカウンタータイプには、小数部がありません。すべてのドキュメントを読んでどれを計算し、「分数になる可能性のあるカウンター」と「分数にならないカウンター」を処理する2つのコードパスを追加することもできますが、これはほとんど利益がないか、無し。

を使用するだけPDH_FMT_DOUBLEです。

アップデート

ほとんどのカウンターでは、精度はPDHライブラリ内で発生する最終値の計算中にのみ問題になります。ただし、おっしゃるように、バルク合計の精度(ディスクの空き領域など)問題になる可能性があります。幸い、そうではありません。

ダブルには52ビットの仮数があります。バイト単位で報告されるカウンターの場合、精度を損なうことなく4ペタバイトのスペースがあります。

ただし、ディスクの空き領域はバイトではなくメガバイトで報告されるため、doubleは、精度を損なうことなく、最大272バイトまたは4ゼタバイトを報告できます。そして、 264バイトを超える単一のボリュームを持つことはできないと確信しています。

(プロセスなどの)メモリ使用量はバイト単位で報告されますが、値は常にページサイズの倍数(4096バイト)であるため、報告された値の下位12ビットはゼロです。したがって、doubleは、精度を損なうことなく、最大2 64バイトのメモリサイズ(つまり、64ビットメモリスペース全体)を表すことができます。

精度は問題ではありません。を使用するだけPDH_FMT_DOUBLEです。

于 2013-03-10T18:26:18.643 に答える