4

私は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]の問題は、収集されたサンプルがあまり正確ではなく、私のプロファイルを傷つけることです。

ここで何が起こっているのかについてのヒントはありますか?

4

1 に答える 1

4

ジェネリックがにcache-missesマップする特定のイベントがPEBSをサポートしていないことが判明しました。別の方法は、PEBSでサポートされているイベントの1つ(ここでNehalemアーキテクチャのリストを参照)を適切なマスクとともに使用して、イベントを絞り込むことです。具体的には、イベントが常に正確であるとは限らない場合でも、MEM_LOAD_RETIRED:LLC_MISSを使用できます。

于 2012-07-11T21:13:29.377 に答える