2013-04-17 6 views
3

여러 (물리적) 프로세서가있는 (Intel Xeon) 시스템에서 특정 하드웨어 이벤트를 측정하려고합니다. 구체적으로 말하면, 'offcore'데이터를 읽기 위해 얼마나 많은 요청이 내려 졌는지 알고 싶습니다.perf를 사용하여 원시 이벤트 카운터를 모니터

하드웨어 이벤트가 Intels 문서에서 발견되었고 이벤트 설명자를 0xB0으로, 데이터 요청의 경우 추가 마스크 0x01을 제공합니다.

perf record -e r0B1 ./mytestapp someargs 

또는이 올바르지 않습니다 이벤트를 0xB1 (즉 0xB0 | 0x01)를 기록하고로 전화를 반환 한에게

는 그 다음에 올바른겠습니까? perf report에는 이와 같이 입력 한 이벤트에 대한 출력이 표시되지 않기 때문에. (이 사람이 나를 위해 작동하지만), 또는 인코딩 된 방법

반환 한 문서 떨어져 그것이 어떤 이벤트 말을하지 않는 tutorial entry에서,이 분야에서 좀 부족 ...

어떤 도움이다 대단히 감사합니다.

답변

10

그래, 알아 냈어.

내가 사용하는 Intel 컴퓨터의 경우 형식은 다음과 같습니다. <umask><eventselector> 여기서 두 값은 모두 16 진수 값입니다. umask의 선행 0은 제거 할 수 있지만 이벤트 선택자는 삭제할 수 없습니다. 나는이 반환 한 커널 코드에서의 정확한 분석을 찾을 관리 할 수 ​​

perf record -e r1B0 ./mytestapp someargs 

하지만 (여기에 어떤 커널 해커?) :

그래서 마스크 0x01와 이벤트 0xB0을 위해 내가 호출 할 수 있습니다 발견 이러한 소스 :

  • 인텔 아키텍처 소프트웨어 개발자 마누엘 (권의 3B)에서 자신의 설명과 함께 일부 원시 이벤트를 설명 the c't magazine 13/03 (subscription required)에서 원시 이벤트에 반환 한의 사용에 대한 설명,
  • kernel mailing list의 패치로 문서화하는 적절한 방법을 논의합니다. man perf-list

업데이트 : 그것은가

  • (업데이트)는 새로운 버전의 매뉴얼 페이지는 인텔 시스템에서의 예와 패턴 위에 "그 순간 ... 86 구체적이고 imcomplete했다"라고 지정 : 주석 (감사합니다!)에서 지적한대로 libpfm 변환기를 사용하여 적절한 이벤트 설명자를 얻을 수 있습니다. 사용자 'osgx'가 발견 한 의견 (Bojan Nikolic : CPU 성능 이벤트 전체를 모니터링하는 방법)에 링크 된 웹 사이트에서 자세히 설명합니다.

  • +1

    문자열로 표시되는 이벤트 이름을 HW 공급 업체가 문서화 한 원시 이벤트 또는 OS 특정 인코딩 인 이벤트 인코딩으로 변환하는 데 도움이되는 libpfm을 살펴보십시오. 후자의 경우, 라이브러리는 이벤트를 설정하기 위해 커널이 필요로하는 OS 특정 데이터 구조를 준비 할 수 있습니다. – redblackbit

    +0

    @redblackbit 위대한 발견! 감사합니다 – Patrick

    +1

    'showevtinfo'와'check_events'의 도움으로 perf에 대한 원시 이벤트를 인코딩하는 libpfm4 사용에 대한 http://www.bnikolic.co.uk/blog/hpc-prof-events.html 페이지가 있습니다. Patrick, 질문과 답변에 감사드립니다. – osgx

    1

    당신이뿐만 아니라 사용할 수있는 것 :이 구문이 설명되어 있습니다 어디에 모르겠어요

    perf record -e cpu/event=0xB1,umask=0x1/u ./mytestapp someargs 
    

    .

    다른 인수 (edge, inv, cmask)를 사용할 수도 있습니다.