コマンドを入力すると、とperf list
の 2 種類のイベントがあることがわかりました。2つの違いは何ですか?Hardware event
Hardware cache Event
cache-misses
とはどう違いLLC-misses
ますか?キャッシュ ミスには LLC ミスが含まれますか?
perf
プログラムをテストするとき、ツールは全体のパフォーマンスを低下させますか?
システムコールのマニュアルページ によると(ユーザーレベルのユーティリティ perf_event_open
によって内部的に使用されます):perf
さらに、これが [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-misses
LLC-misses
最後の質問に関しては、パフォーマンス監視によって発生するオーバーヘッドは非常に低いはずです。実際、オーバーヘッドは主にカウンター値の読み取りによるものであり、perf stat
この読み取りは実行の最後に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% 低下すると述べています。