私は "perf_event_create_kernel_counter" APIを介してパフォーマンスカウンタを生成し、定期的にその値を読み取るカーネルモジュールを作成しました。
私のアプリケーションはカーネルバージョン4.0.9(および以前のリビジョン)では動作しますが、カーネルバージョン4.1(以降)では動作しません。
デフォルトでは、カーネルの将来のバージョンではソフトウェアカウンタ(例PERF_COUNT_SW_CPU_CYCLES
:)のみを読み取ることができますが、ハードウェアカウンタ(例PERF_COUNT_HW_CACHE_MISSES
:)は読み取れません。
具体的には、カーネルバージョン4.1以降では、ハードウェアカウンタは常に0として表示されます。
この問題の原因と解決策を知っている人はいますか?