わかりました、それで私はそれを理解したと思います.
私が使用している Intel マシンの場合、フォーマットは次のとおりです:<umask><eventselector>
どちらも 16 進数値です。 umask の先頭のゼロは削除できますが、イベント セレクタでは削除できません。
イベント 0xB0
の場合 マスク 0x01
で 電話できます:
perf record -e r1B0 ./mytestapp someargs
perf カーネル コード (ここにカーネル ハッカーはいますか?) でそれの正確な解析を見つけることができませんでしたが、次のソースを見つけました:
- c't マガジン 13/03 で生イベントを使用した perf の使用に関する説明 (購読が必要)。Intel Architecture Software Developers Manuel (Vol 3b) からの説明とともにいくつかの生イベントについて説明しています
- カーネルメーリングリストのパッチで、それを文書化する適切な方法について議論しています。上記のパターンは「... x86 固有であり、その点では不完全である」と明記されています
- (更新) 新しいバージョンのマニュアル ページには、Intel マシンでの例が示されています:
man perf-list
更新 :コメントで指摘されているように (ありがとう!)、libpfm トランスレータを使用して適切なイベント記述子を取得できます。コメントでリンクされている Web サイト (Bojan Nikolic:How to monitor the full range of CPU performance events) は、ユーザー 'osgx' によって発見され、詳細に説明されています。
同様に使用できるようです:
perf record -e cpu/event=0xB1,umask=0x1/u ./mytestapp someargs
この構文がどこに文書化されているかわかりません。
おそらく他の引数 (edge、inv、cmask) も使用できます。