1

を使用して Power8 プロセッサのメモリ パフォーマンスを評価しているときに、イベントとperfの違いを理解するという問題が発生しました。ほとんどのカウンターは両方のバージョンに存在しますが、oprofile のドキュメントとの説明は同じです。たとえば、次のようになります。PM_DATA_ALL_*PM_DATA_*papi_native_avail

PM_DATA_FROM_LMEM

MMCR1[16] が 1 の場合、デマンド ロードのみ、またはデマンド ロードとプリフェッチにより、プロセッサのデータ キャッシュがローカル チップのメモリからリロードされました。

私はいくつかのデータを測定することによって違いを理解します. 十分な大きさのタスクを提供すると、*_ALLバージョンがより高い値を持つという予想される違いを観察できます。を使用したメジャーでのカウンターの多重化の概念を理解していperfます。

では、実際にこれらのイベントのすべてとは何でしょうか?

4

1 に答える 1

2

さらに数時間検索した後、イベントを次のように記述しているIBM から直接別の情報源を見つけました。

PM_DATA_ALL_FROM_LMEM

デマンド ロードまたはデータ プリフェッチにより、プロセッサのデータ キャッシュがローカル チップのメモリから再ロードされました

PM_DATA_FROM_LMEM

プロセッサのデータ キャッシュは、デマンド ロードにより、ローカル チップのメモリから再ロードされました

そのため、違いによりプリフェッチロードが発生しますが、これは 2 番目のバージョンには含まれていません。

PAPI および perf ツールには、間違った説明が含まれています。これらのイベントはIBM によって直接提供さoprofileましたが、おそらくいくつかの間違いや不正確さが含まれています。PAPI/libpfm sourceをブラウズすると、正しい説明が.pme_short_descフィールドにあることがわかりますが、.pme_long_descフィールドは両方とも同じです。そしてpapi_native_avail、長いものだけを報告します: ありがとう...とても便利です!

お待ちいただきありがとうございます。このようなものを要約することは私を大いに助けてくれました。同様の問題に苦しんでいる誰かを助けることを願っています.

于 2016-01-24T21:38:52.380 に答える