성능 커널 카운터가 작동하는 데 문제가 있습니다.

성능 커널 카운터가 작동하는 데 문제가 있습니다.

나는 "perf_event_create_kernel_counter" API를 통해 성능 카운터를 생성한 다음 주기적으로 그 값을 읽는 커널 모듈을 작성했습니다.

내 응용 프로그램은 커널 버전 4.0.9(및 이전 개정판)에서는 작동하지만 커널 버전 4.1(이상)에서는 작동하지 않습니다.

기본적으로 커널의 후속 버전에서는 소프트웨어 카운터(예: PERF_COUNT_SW_CPU_CYCLES)만 읽을 수 있지만 하드웨어 카운터(예: PERF_COUNT_HW_CACHE_MISSES)는 읽을 수 없습니다.

보다 구체적으로 말하면 커널 버전 4.1 이상에서는 하드웨어 카운터가 항상 0으로 표시됩니다.

이 문제의 원인과 해결 방법을 아는 사람이 있습니까?

관련 정보