Linux에서 모니터링 할 수 있는 항목을 검색 할 때 무엇을perf_events
찾을 수 Kernel PMU event
없습니까? 즉, 다음과 perf version 3.13.11-ckt39
같은 perf list
쇼 이벤트가 있습니다.
branch-instructions OR cpu/branch-instructions/ [Kernel PMU event]
전반적으로 다음이 있습니다.
Tracepoint event
Software event
Hardware event
Hardware cache event
Raw hardware event descriptor
Hardware breakpoint
Kernel PMU event
나는 그들이 어디에서 왔는지 이해하고 싶습니다. 나는 모든 종류의 물건에 대한 설명이 Kernel PMU event
있습니다.
에서 반환 한 위키 튜토리얼 과 브렌든 그레그의 페이지 나는 그것을 얻을 :
Tracepoints
가장 명확합니다. 커널 소스의 매크로입니다. 모니터링을위한 조사 지점을 만들고ftrace
프로젝트와 함께 소개 되었으며 이제 모든 사람이 사용합니다.Software
커널의 저수준 카운터 및 일부 내부 데이터 구조 (따라서 추적 점과는 다름)Hardware event
모든 아키텍처 에서 발견 되고 커널이 쉽게 액세스 할 수 있는 매우 기본적인 CPU 이벤트입니다.Hardware cache event
별명입니다Raw hardware event descriptor
-다음과 같이 작동합니다내가 알았을
Raw hardware event descriptor
때보 다 (마이크로?) 아키텍처 관련 이벤트가 이벤트보다 많으며Hardware event
, PMU (Processor Monitoring Unit) 또는 특정 프로세서의 기타 특정 기능에서 발생하는 이벤트이므로 일부 마이크로 아키텍처에서만 사용할 수 있습니다 ( ' 아키텍처 "는"x86_64 "를 의미하고 나머지 모든 구현 세부 사항은"마이크로 아키텍처 "입니다. 이 이상한 설명자를 통해 계측에 액세스 할 수 있습니다.rNNN [Raw hardware event descriptor] cpu/t1=v1[,t2=v2,t3 ...]/modifier [Raw hardware event descriptor] (see 'man perf-list' on how to encode it)
-이 디스크립터, 이들이 가리키는 이벤트 등은 프로세서 매뉴얼 ( perf wiki의 PMU 이벤트)에서 찾을 수 있습니다 .
그러나 사람들이 주어진 프로세서에 유용한 이벤트가 있다는 것을 알면 별명을 부여하고
Hardware cache event
쉽게 액세스 할 수 있도록 리눅스 에 연결합니다.- 내가 틀렸다면 정확한 날 (모든 이상하게
Hardware cache event
에 대한 있습니다something-loads
또는something-misses
- 매우 실제 프로세서의 캐시처럼 ..)이제
Hardware breakpoint
mem:<addr>[:access] [Hardware breakpoint]
하드웨어 기능이며, 대부분의 최신 아키텍처에 공통적이며 디버거에서 중단 점으로 작동합니까? (아마도 그것은 어설프다)
마지막으로,
Kernel PMU event
나는 구글을 관리하지 못한다.또한 Brendan의 perf page에있는 이벤트 목록 에도 표시되지 않으므로 새로운 기능입니까?
어쩌면 PMU에서 하드웨어 이벤트의 별명일까요? (접근 용이성을 위해 별명 외에도 이벤트 목록에 별도의 섹션이 있습니다.) 실제로
Hardware cache events
CPU 캐시의 하드웨어 이벤트에 대한 별명 일 수도 있고Kernel PMU event
PMU 이벤트에 대한 별명일까요? (그런데 왜 그렇게 부르지Hardware PMU event
않습니까?.) 새로운 이름 지정 체계 일 수 있습니다. 하드웨어 이벤트의 별명은 섹션화 되었습니까?그리고 이러한 이벤트는
cpu/mem-stores/
일부 Linux 버전 이벤트에 설명이 있으므로 다음 과 같은 것을 참조하십시오/sys/devices/
.# find /sys/ -type d -name events /sys/devices/cpu/events /sys/devices/uncore_cbox_0/events /sys/devices/uncore_cbox_1/events /sys/kernel/debug/tracing/events
-
debug/tracing
입니다ftrace
및 추적 점은, 다른 디렉토리는 정확하게 일치perf list
로 보여줍니다Kernel PMU event
.
누군가 나에게 Kernel PMU events
또는 /sys/..events/
시스템이 무엇인지에 대한 좋은 설명 / 문서를 알려 줄 수 있습니까? 또한 /sys/..events/
하드웨어 이벤트 등을 체계화하려는 새로운 노력이 있습니까? (커널 PMU는 "커널의 성능 모니터링 장치"와 같습니다.)
추신
더 나은 컨텍스트를 제공하기 위해 s 및 s 의 perf list
전체 목록을 포함하여 권한이없는 실행 (추적 점은 표시되지 않지만 1374가 모두 있습니다)이 생략되었습니다.Kernel PMU event
Hardware cache event
$ perf list
List of pre-defined events (to be used in -e):
cpu-cycles OR cycles [Hardware event]
instructions [Hardware event]
...
cpu-clock [Software event]
task-clock [Software event]
...
L1-dcache-load-misses [Hardware cache event]
L1-dcache-store-misses [Hardware cache event]
L1-dcache-prefetch-misses [Hardware cache event]
L1-icache-load-misses [Hardware cache event]
LLC-loads [Hardware cache event]
LLC-stores [Hardware cache event]
LLC-prefetches [Hardware cache event]
dTLB-load-misses [Hardware cache event]
dTLB-store-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]
branch-instructions OR cpu/branch-instructions/ [Kernel PMU event]
branch-misses OR cpu/branch-misses/ [Kernel PMU event]
bus-cycles OR cpu/bus-cycles/ [Kernel PMU event]
cache-misses OR cpu/cache-misses/ [Kernel PMU event]
cache-references OR cpu/cache-references/ [Kernel PMU event]
cpu-cycles OR cpu/cpu-cycles/ [Kernel PMU event]
instructions OR cpu/instructions/ [Kernel PMU event]
mem-loads OR cpu/mem-loads/ [Kernel PMU event]
mem-stores OR cpu/mem-stores/ [Kernel PMU event]
ref-cycles OR cpu/ref-cycles/ [Kernel PMU event]
stalled-cycles-frontend OR cpu/stalled-cycles-frontend/ [Kernel PMU event]
uncore_cbox_0/clockticks/ [Kernel PMU event]
uncore_cbox_1/clockticks/ [Kernel PMU event]
rNNN [Raw hardware event descriptor]
cpu/t1=v1[,t2=v2,t3 ...]/modifier [Raw hardware event descriptor]
(see 'man perf-list' on how to encode it)
mem:<addr>[:access] [Hardware breakpoint]
[ Tracepoints not available: Permission denied ]