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-misses
event는 모든 다른 종류의 캐시 미스의 합입니다 (L1-dcache-load-misses
, 등).그것은 사실이 아닙니다.
그cache-misses
event는 캐시에서 처리할 수 없었던 메모리 액세스 횟수를 나타냅니다.
저는 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 |