Linuxで監視できるものを検索してperf_eventsも、何Kernel PMU eventが見つからないのですか?すなわち、とのようなショーイベント:perf version 3.13.11-ckt39perf 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 breakpointmem:<addr>[:access] [Hardware breakpoint]ハードウェア機能とは、おそらくほとんどの最新のアーキテクチャに共通であり、デバッガーのブレークポイントとして機能しますか?(とにかくそれはグーグル可能です)
最後に、
Kernel PMU event私はグーグルで管理することができません。また、Brendanのパフォーマンスページのイベントのリストにも表示されないので、新しいですか。
多分それは特にPMUからのハードウェアイベントへの単なるニックネームですか?(アクセスを簡単にするために、ニックネームに加えて、イベントのリストに別のセクションがあります。)実際、
Hardware cache eventsCPUのキャッシュからのハードウェアイベント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 eventsとHardware cache eventsの完全なリストとその他をスキップした非特権実行(トレースポイントは表示されませんが、それらの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 ]