私はperfuserlandツールを使用してイベントベースのサンプリングを行っています。目的は、作業中の大規模なシステムで、ブランチミスやキャッシュミスなどのパフォーマンスに影響を与える特定のイベントが発生している場所を特定することです。
さて、
perf record -a -e branch-misses:pp -- sleep 5
完全に機能します。「pp」修飾子によってトリガーされるPEBSカウントモードは、サンプルでIPを収集するときに非常に正確です。
残念ながら、キャッシュミスに対して同じことをしようとすると、
perf record -a -e cache-misses:pp -- sleep 5 # [1]
私は得る
エラー:sys_perf_event_open()システムコールが22(無効な引数)で返されました。/ bin/dmesgは追加情報を提供する場合があります。
致命的:CONFIG_PERF_EVENTS = yカーネルサポートが構成されていませんか?
dmesg | grep "perf\|pmu"
有用なAFAICTは何も示していません。[1]と[1]の両方があるため、カーネルがCONFIG_PERF_EVENTS=yでコンパイルされたこともかなり確信しています。
perf record -a -e cache-misses -- sleep 5 # [2]
仕事:[2]の問題は、収集されたサンプルがあまり正確ではなく、私のプロファイルを傷つけることです。
ここで何が起こっているのかについてのヒントはありますか?