programing

Perf 캐시 이벤트란 무엇을 의미합니까?

css3 2023. 10. 22. 20:19

Perf 캐시 이벤트란 무엇을 의미합니까?

수정된 C 프로그램이 수정되지 않은 상대 프로그램보다 더 빨리 실행되는 이유를 파악하려고 합니다(추가 작업을 수행하기 위해 코드 라인을 거의 추가하지 않고 있습니다).).이런 맥락에서 '캐시 효과'가 주된 설명(명령 캐시)이 아닐까 생각합니다.이렇게 해서 나는.perf(https://perf.wiki.kernel.org/index.php/Main_Page) 프로파일링 도구는 유감스럽게도 캐시 미스에 대한 출력의 의미를 이해할 수 없습니다.

캐시에 관한 몇 가지 이벤트가 제공됩니다.

  cache-references                                   [Hardware event]
  cache-misses                                       [Hardware event]
  L1-dcache-loads                                    [Hardware cache event]
  L1-dcache-load-misses                              [Hardware cache event]
  L1-dcache-stores                                   [Hardware cache event]
  L1-dcache-store-misses                             [Hardware cache event]
  L1-dcache-prefetches                               [Hardware cache event]
  L1-dcache-prefetch-misses                          [Hardware cache event]
  L1-icache-loads                                    [Hardware cache event]
  L1-icache-load-misses                              [Hardware cache event]
  L1-icache-prefetches                               [Hardware cache event]
  L1-icache-prefetch-misses                          [Hardware cache event]
  LLC-loads                                          [Hardware cache event]
  LLC-load-misses                                    [Hardware cache event]
  LLC-stores                                         [Hardware cache event]
  LLC-store-misses                                   [Hardware cache event]
  LLC-prefetches                                     [Hardware cache event]
  LLC-prefetch-misses                                [Hardware cache event]
  dTLB-loads                                         [Hardware cache event]
  dTLB-load-misses                                   [Hardware cache event]
  dTLB-stores                                        [Hardware cache event]
  dTLB-store-misses                                  [Hardware cache event]
  dTLB-prefetches                                    [Hardware cache event]
  dTLB-prefetch-misses                               [Hardware cache event]
  iTLB-loads                                         [Hardware cache event]
  iTLB-load-misses                                   [Hardware cache event]
  branch-loads                                       [Hardware cache event]
  branch-load-misses                                 [Hardware cache event]
  node-loads                                         [Hardware cache event]
  node-load-misses                                   [Hardware cache event]
  node-stores                                        [Hardware cache event]
  node-store-misses                                  [Hardware cache event]
  node-prefetches                                    [Hardware cache event]
  node-prefetch-misses                               [Hardware cache event]

이 필드에 대한 설명은 어디서 찾을 수 있습니까? 캐시 누락 이벤트는 항상 다른 이벤트보다 작습니다.이 이벤트는 무엇을 측정합니까?

다음 예제에서 ls에 대한 26,760 L1-icache-load-miss와 5,708 캐시-miss를 어떻게 해석합니까?

perf stat -e L1-icache-load-misses ls
caches  caches~  out

 Performance counter stats for 'ls':

            26,760 L1-icache-load-misses                                       

       0.002816690 seconds time elapsed



perf stat -e cache-misses ls
caches  caches~  out

 Performance counter stats for 'ls':

             5,708 cache-misses                                                

       0.002822122 seconds time elapsed

일부 답변:

  • L1는 가장 작고 빠른 레벨 1 캐시입니다.LLC반면 캐시 계층의 마지막 레벨을 나타내므로 캐시가 가장 크지만 느린 것을 나타냅니다.
  • i대.d명령어 캐시와 데이터 캐시를 구분합니다.L1만 이런 방식으로 분할되고, 다른 캐시들은 데이터와 명령들 사이에서 공유됩니다.
  • TLB가상 주소를 물리적 주소에 매핑할 때 사용하는 캐시인 변환 룩사이드 버퍼를 말합니다.
  • 명명된 주소가 명령을 참조했는지 또는 일부 데이터를 참조했는지에 따라 다른 TLB 카운터가 있습니다.
  • 모든 데이터 액세스의 경우, 지정된 메모리 위치가 읽기, 쓰기 또는 프리페치되었는지(즉, 나중에 읽기 위해 검색됨)에 따라 다른 카운터가 유지됩니다.
  • 누락 횟수는 주어진 데이터 항목에 액세스했지만 캐시에 존재하지 않는 빈도를 나타냅니다.

당신은 생각하는 것 같아요.cache-missesevent는 모든 다른 종류의 캐시 미스의 합입니다 (L1-dcache-load-misses, 등).그것은 사실이 아닙니다.

cache-missesevent는 캐시에서 처리할 수 없었던 메모리 액세스 횟수를 나타냅니다.

저는 perf의 문서가 최고가 아니라는 것을 인정합니다.

그러나 perf_event_open() 함수의 문서(CPU 및 성능 모니터링 장치의 작동 방식에 대해 이미 잘 알고 있다고 가정하면 컴퓨터 아키텍처 과정이 아님)를 읽음으로써 이에 대해 많은 것을 배울 수 있습니다.

http://web.eece.maine.edu/ ~vweaver/ projects/ perf_events/ perf_이벤트_오픈

예를 들어, 그것을 읽음으로써 당신은 다음을 알 수 있습니다.cache-misses퍼펙트 리스트에 의해 표시된 이벤트는 다음에 해당합니다.PERF_COUNT_HW_CACHE_MISSES

성능 튜토리얼에 따르면 PMU(Performance Monitoring Unit) 이벤트 또는 하드웨어 이벤트는 CPU 벤더의 CPU 특정 이벤트에 직접 매핑할 수 있는 이벤트를 말합니다.그러나 하드웨어 캐시 이벤트는 에 의해 제공되는 일부 하드웨어 이벤트 모니커(moniker)를 의미합니다.perf, CPU가 제공하는 실제 이벤트에 매핑될 수 있습니다.목록의 경우perf의 캐시 이벤트 사용perf list cache리눅스 터미널에서.

언급URL : https://stackoverflow.com/questions/12601474/what-are-perf-cache-events-meaning