2012-10-02 5 views
3

최근에 성능 카운터 주변을 파고 있습니다. 그리고 perfmon2와 libpfm4를 봤습니다. http://perfmon2.sourceforge.net/ 그리고 perf 명령 https://perf.wiki.kernel.org/index.php/Main_Page을 발견하고 linux의 커널 소스 코드를 제공했습니다. the perf source code link libpfm4 및 perf 명령을 모두 사용했으며 libpfm4는 CPU의 사이클 수 또는 명령 수만 제공합니다.perf 명령과 perfmon2 또는 libpfm4의 차이점은 무엇입니까

perf를 사용하여 얻을 수있는 L1-dcache-loads와 같은 정보를 검색하는 방법에 대한 예제 코드 또는 실행 가능한 예제를 찾을 수 없습니다. stackoverflow에서 찾았으며 perf 명령과 libpfm4 사이의 관계를 설명하는 기사를 찾았습니다 : Using Hardware Performance Counters in Linux 사람들은 libpfm4의 저자가 perf 명령의 기여자 인 잉고 (Ingo) 중 한 명과 화가 났지만 나중에 그는 실제로 perf 코드를 검토하는 데 도움을 주었다고 전했다.

perf 명령으로 perfmon2 또는 libpfm4 간의 관계를 설명 할 수있는 사람이 있습니다. 그리고 perf 명령을 사용하는 것과 마찬가지로 libpfm4를 사용하여 L1-dcache와 같은 정보를 검색 할 수 있습니까? 고마워요!

답변

4

perf 명령은 프로세서 클럭 사이클, 명령어 카운트 및 캐시 이벤트 메트릭과 같은 측정을위한 공통 성능 카운터 이벤트의 하위 세트를 제공합니다. 그러나 대부분의 프로세서는 부동 소수점 연산 및 마이크로 아키텍처 이벤트 (하드웨어 자원 제한으로 인한 스톨 등)와 같이 구현 관련 하드웨어 이벤트를 많이 제공합니다. 이러한 특정 구현 이벤트에 액세스하려면 perf (http://lxr.linux.no/#linux+v3.6/tools/perf/Documentation/perf-record.txt#L33)에서 원시 이벤트를 사용해야합니다. 지루하다. libpfm4는 해당 구현 특정 하드웨어 이벤트를 이름으로 참조하는 매핑 메커니즘을 제공합니다. libpfm은 papi에서 사용됩니다. papi가 libpfm을 사용하여 구현 특정 이벤트 (http://icl.cs.utk.edu/projects/papi/)에 액세스하는 방법을 살펴보십시오.

+0

웹 페이지 [link] (http : // www.hpl.hp.com/research/linux/perfmon/perfmon.php4)에서는 perfmon 커널 인터페이스에 대한 개요를 제공합니다. 그러나 papi는 PerfCtr Interface를 기반으로하고 있으며,이 인터페이스들 중 어느 것도 공식적인 커널 소스 트리의 일부가 아니 었습니다. 그래서 나는 그것을 파고 들지 않았다. 방금 파피 홈페이지를 보니, 파피가 많이 개선 된 것 같습니다. 그러나 perf 명령은 공식 커널 소스 트리 아래에 있으며 실제로 강력한 기능을 제공합니다. 그리고 소스 코드를 탐색 한 후에 특정 기능을 추출하는 것이 복잡한 것처럼 보입니다. 고마워요! – dotcomXY