Linuxで監視できるものを検索してperf_events
も、何Kernel PMU event
が見つからないのですか?すなわち、とのようなショーイベント:perf version 3.13.11-ckt39
perf list
branch-instructions OR cpu/branch-instructions/ [Kernel PMU event]
全体的には次のとおりです。
Tracepoint event
Software event
Hardware event
Hardware cache event
Raw hardware event descriptor
Hardware breakpoint
Kernel PMU event
そして、私は彼らが何であるか、彼らがどこから来たかを理解したいと思います。何か説明はありますが、Kernel PMU event
アイテムです。
perf wikiチュートリアルとBrendan Greggのページから、次のことがわかります。
Tracepoints
最も明確です-これらは、カーネルソース上のマクロであり、監視のためのプローブポイントを作成します。これらはftrace
プロジェクトで導入され、現在すべての人が使用していますSoftware
カーネルの低レベルのカウンターといくつかの内部データ構造です(したがって、これらはトレースポイントとは異なります)Hardware event
すべてのアーキテクチャで見つかる非常に基本的なCPUイベントであり、カーネルによって簡単にアクセスできますHardware cache event
ニックネームですRaw hardware event descriptor
-次のように機能しますわかったように、
Raw hardware event descriptor
(マイクロ?)アーキテクチャ固有のイベントはHardware event
、に限定されます。イベントは、プロセッサモニタリングユニット(PMU)または特定のプロセッサの他の特定の機能から発生するため、一部のマイクロアーキテクチャでのみ利用できます(「アーキテクチャ」は「x86_64」を意味し、実装の詳細の残りはすべて「マイクロアーキテクチャ」です); そして、これらの奇妙な記述子を介してインストルメンテーションのためにアクセス可能ですrNNN [Raw hardware event descriptor] cpu/t1=v1[,t2=v2,t3 ...]/modifier [Raw hardware event descriptor] (see 'man perf-list' on how to encode it)
-これらの記述子、それらが指すイベントなどは、プロセッサのマニュアルに記載されています(perf wikiのPMUイベント)。
しかし、人々が特定のプロセッサにいくつかの有用なイベントがあることを知ったとき、彼らはそれにニックネームを付け、
Hardware cache event
アクセスを容易にするためにそれをLinux に接続します-私が間違っている場合は修正してください(不思議なことにすべて
Hardware cache event
が-something-loads
またはsomething-misses
-実際のプロセッサのキャッシュに非常に似ています。)今、
Hardware breakpoint
mem:<addr>[:access] [Hardware breakpoint]
ハードウェア機能とは、おそらくほとんどの最新のアーキテクチャに共通であり、デバッガーのブレークポイントとして機能しますか?(とにかくそれはグーグル可能です)
最後に、
Kernel PMU event
私はグーグルで管理することができません。また、Brendanのパフォーマンスページのイベントのリストにも表示されないので、新しいですか。
多分それは特にPMUからのハードウェアイベントへの単なるニックネームですか?(アクセスを簡単にするために、ニックネームに加えて、イベントのリストに別のセクションがあります。)実際、
Hardware cache events
CPUのキャッシュからのハードウェアイベントKernel PMU event
へのニックネームであり、PMUイベントへのニックネームですか?(なぜそれを呼び出さないのHardware PMU event
ですか?..)それは単なる新しい命名方式である可能性があります-ハードウェアイベントのニックネームはセクション化されましたか?そして、これらのイベントはのようなものを参照します
cpu/mem-stores/
。さらに、一部のLinuxバージョンのイベントは、次のように記述され/sys/devices/
ています。# find /sys/ -type d -name events /sys/devices/cpu/events /sys/devices/uncore_cbox_0/events /sys/devices/uncore_cbox_1/events /sys/kernel/debug/tracing/events
-
debug/tracing
のためであるftrace
とトレースポイントは、他のディレクトリは、まさに一致するperf list
としてショーをKernel PMU event
。
誰かのポイント私何の良い説明/ドキュメントへのでしたKernel PMU events
か/sys/..events/
しているシステムは?また、/sys/..events/
ハードウェアイベントなどをシステム化するための新しい取り組みはありますか?(つまり、カーネルPMUは「カーネルのパフォーマンス監視ユニット」のようなものです。)
PS
より良いコンテキストを提供するためにperf list
、Kernel PMU event
sとHardware cache event
sの完全なリストとその他をスキップした非特権実行(トレースポイントは表示されませんが、それらの1374はすべてそこにあります):
$ perf list
List of pre-defined events (to be used in -e):
cpu-cycles OR cycles [Hardware event]
instructions [Hardware event]
...
cpu-clock [Software event]
task-clock [Software event]
...
L1-dcache-load-misses [Hardware cache event]
L1-dcache-store-misses [Hardware cache event]
L1-dcache-prefetch-misses [Hardware cache event]
L1-icache-load-misses [Hardware cache event]
LLC-loads [Hardware cache event]
LLC-stores [Hardware cache event]
LLC-prefetches [Hardware cache event]
dTLB-load-misses [Hardware cache event]
dTLB-store-misses [Hardware cache event]
iTLB-loads [Hardware cache event]
iTLB-load-misses [Hardware cache event]
branch-loads [Hardware cache event]
branch-load-misses [Hardware cache event]
branch-instructions OR cpu/branch-instructions/ [Kernel PMU event]
branch-misses OR cpu/branch-misses/ [Kernel PMU event]
bus-cycles OR cpu/bus-cycles/ [Kernel PMU event]
cache-misses OR cpu/cache-misses/ [Kernel PMU event]
cache-references OR cpu/cache-references/ [Kernel PMU event]
cpu-cycles OR cpu/cpu-cycles/ [Kernel PMU event]
instructions OR cpu/instructions/ [Kernel PMU event]
mem-loads OR cpu/mem-loads/ [Kernel PMU event]
mem-stores OR cpu/mem-stores/ [Kernel PMU event]
ref-cycles OR cpu/ref-cycles/ [Kernel PMU event]
stalled-cycles-frontend OR cpu/stalled-cycles-frontend/ [Kernel PMU event]
uncore_cbox_0/clockticks/ [Kernel PMU event]
uncore_cbox_1/clockticks/ [Kernel PMU event]
rNNN [Raw hardware event descriptor]
cpu/t1=v1[,t2=v2,t3 ...]/modifier [Raw hardware event descriptor]
(see 'man perf-list' on how to encode it)
mem:<addr>[:access] [Hardware breakpoint]
[ Tracepoints not available: Permission denied ]