2012-12-17 5 views
5

perf list 명령을 입력하면 Hardware eventHardware cache Event의 두 가지 종류의 이벤트가 있음을 발견했습니다. 둘의 차이점은 무엇입니까?하드웨어 이벤트와 하드웨어 캐시의 차이점 perf에있는 이벤트는 무엇입니까?

cache-missesLLC-misses의 차이점은 무엇입니까? 캐시 미스에 LLC 미스가 포함되어 있습니까?

perf 도구를 사용하면 프로그램을 테스트 할 때 총 성능이 저하됩니까?

답변

1

perf_event_open 시스템 호출의 man page에 따르면 (perf 사용자 수준 유틸리티에서 내부적으로 사용) :

  • 하드웨어 이벤트 : 이것은 커널
  • 하드웨어가 제공하는 "일반화"하드웨어 이벤트 중 하나를 나타냅니다를 캐시 이벤트 : 하드웨어 캐시 이벤트를 나타냅니다.

이상의 내용이 [인텔 ® 64 및 IA-32 아키텍처 소프트웨어 개발자 설명서 3B]의 아키텍처 및 아키텍처 이벤트와 관련이 있는지 궁금합니다. 인텔 ® 64 및 IA-32 아키텍처 소프트웨어 개발자 설명서 3B 2.

이 분류의 정확한 의미와 관계없이 cache-misseshere in a previous question이며 위에서 언급 한 매뉴얼 페이지에는 캐시에서 처리 할 수없는 메모리 액세스 수가 표시됩니다. 즉, 마지막 레벨 캐시의 캐시 누락 횟수를 의미합니다. 결과적으로 나는 이것이 LLC-misses과 같다고 생각합니다. 불행히도 LLC-misses이 지원되지 않기 때문에 노트북에서 확인할 수 없습니다.

지난 질문에 대해서는 성능 모니터링으로 인한 오버 헤드가 매우 적어야합니다. 실제로, 오버 헤드는 주로 카운터 값을 읽는 것으로 발생하며 perf stat을 사용하면이 판독 값은 실행이 끝날 때 한 번만 수행해야합니다 (카운터가 오버 플로우하지 않는 것으로 간주).

2

질문 2 : 내가 ARM 커널 코드를 보면 ("아치/팔/커널/perf_event_v7.c") 반환 한

캐시 미스를위한이 ARMV7_PERFCTR_L1_DCACHE_REFILL는 (L3 아마도) 첫 번째 레벨 데이터 캐시 미스를 그래서 LLC는 아마 의미 낮은 수준의 캐시 미스를 의미하는 의미

아키텍처 특정 커널 코드에서 ARMV7_PERFCTR_L1_DCACHE_REFILL의 값이인 것을 볼 수 있습니다그리고 정확히 그 가치가 무엇인지 아는 기술 참조 설명서. http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0388i/BEHCCEAE.html

질문 3 : 내가 반환 한은 (이어야 HW 성능 카운터에 대한) 하드웨어 레지스터에서 카운터를 읽고 생각 때문에 늘 정말 코드의 성능에 영향을 미칩니다. 실제로 코드 내에 코드 후크를 넣지 않으므로. 그러나 코드에서 perf를 사용하면 5 %의 성능 저하가 있다고하는 신문도 있습니다.