성능 측정 도구 "perf"는 실제로 어떻게 작동합니까?

성능 측정 도구 "perf"는 실제로 어떻게 작동합니까?

성능시스템의 성능 카운터 레지스터에 액세스하고 시스템 성능을 분석하기 위해 사용자에게 메트릭을 제공하는 도구입니다.

제가 궁금한 점은 코드의 일부를 읽었을 때입니다. perf가 메모리 매핑된 영역에서 무언가를 읽고(커널이 쓰는 영역을 읽는 것 같은 느낌) /proc/modules도 읽지만 실제로 하드웨어 레지스터를 읽는 것과 관련된 내용을 찾을 수 없습니다. 모든 코드 기계.

  • perf는 실제로 어떻게 샘플을 기록합니까?
  • 실행 파일이 실행 중인 기능을 어떻게 식별합니까?
  • 이러한 기호를 어떻게 인식합니까?

커널에는 성능 모듈도 있습니까(사용자 공간에서 실행되는 응용 프로그램에 "성능"을 전달하는 /tools 외에)?

누구든지 내부 작동 방식에 대해 더 자세히 말해 줄 수 있나요?

관련 정보