7

コマンドを入力すると、とperf listの 2 種類のイベントがあることがわかりました。2つの違いは何ですか?Hardware eventHardware cache Event

cache-missesとはどう違いLLC-missesますか?キャッシュ ミスには LLC ミスが含まれますか?

perfプログラムをテストするとき、ツールは全体のパフォーマンスを低下させますか?

4

2 に答える 2

2

システムコールのマニュアルページ によると(ユーザーレベルのユーティリティ perf_event_openによって内部的に使用されます):perf

  • ハードウェア イベント: これは、カーネルによって提供される「一般化された」ハードウェア イベントの 1 つを示します。
  • ハードウェア キャッシュ イベント: これは、ハードウェア キャッシュ イベントを示します。

さらに、これが [Intel® 64 and IA-32 Architectures Software Developer's Manual 3B]Intel® 64 and IA-32 Architectures Software Developer's Manual 3B 2で非アーキテクチャーおよびアーキテクチャー イベントと呼ばれるものと何らかの関連があるかどうか疑問に思っています。

この分類の正確な意味に関係なく、前の質問cache-missesと上記のマニュアル ページで述べたように、どのキャッシュでも処理できなかったメモリ アクセスの数を表しています。別の言い方をすれば、最終レベルのキャッシュでのキャッシュ ミスの数を意味します。結果として、これは と同じだと思いますが、残念ながらはサポートされていないため、私のラップトップでは確認できません。LLC-missesLLC-misses

最後の質問に関しては、パフォーマンス監視によって発生するオーバーヘッドは非常に低いはずです。実際、オーバーヘッドは主にカウンター値の読み取りによるものであり、perf statこの読み取りは実行の最後に1回だけ行う必要があると思います(カウンターがオーバーフローしないことを考慮して)

于 2013-07-01T13:45:23.510 に答える
1

質問 2: perf の ARM カーネル コード (「arch/arm/kernel/perf_event_v7.c」) を見ると、

cache-misses は ARMV7_PERFCTR_L1_DCACHE_REFILL を意味し、これは最初のレベルのデータ キャッシュ ミスを意味するため、LLC はおそらく低レベルのキャッシュ ミス (おそらく L3) を意味します。

ARMV7_PERFCTR_L1_DCACHE_REFILL の値と、その値が正確に何を意味するかを知るためのテクニカル リファレンス マニュアルを参照して、アーキテクチャ固有のカーネル コードを確認できます。 http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0388i/BEHCCEAE.html

質問 3: perf はハードウェア レジスタからカウンターを読み取るため (少なくとも HW パフォーマンス カウンターの場合)、コードのパフォーマンスに実際には影響しないと思います。コード内にコードフックを実際に配置しないためです。しかし、一部の論文では、コードで perf を使用するとパフォーマンスが 5% 低下すると述べています。

于 2013-10-29T13:46:15.923 に答える