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
'programing' 카테고리의 다른 글
| AngularJS - ng-show in ng-repeat 사용 (0) | 2023.10.22 |
|---|---|
| jQuery - 기본값을 방지한 다음 기본값을 계속합니다. (0) | 2023.10.22 |
| 일부 매크로의 출처를 찾는 방법 (0) | 2023.10.22 |
| spring boot이 logback-spring.xml을 무시합니다. (0) | 2023.10.22 |
| Null 포인터 주소에 액세스하는 C 표준 준수 방법? (0) | 2023.10.22 |