2017-10-13 9 views
1
으로 perf 이벤트 수정자를 사용할 수없는 이유

이벤트 power/energy-core /를 사용하여 커널 공간에서 시스템의 전원을 읽으려고합니다. 아래 명령과 함께 perf 도구를 사용하십시오. :power/energy-core/

perf stat -a -e power/energy-cores/:k -I 1000 sleep 10 

는 : k는이 문서 https://perf.wiki.kernel.org/index.php/Tutorial에 설명 된 같은 단지 커널 공간에서 이벤트를 colects 수정 자입니다,하지만 난이를 사용할 때 :

[email protected]:/sys/bus/event_source/devices/cpu$ sudo perf stat -a -e 
power/energy-cores/:k -I 1000 sleep 30 
event syntax error: '..nergy-cores/:k' 
            \___ parser error 
Run 'perf list' for a list of valid events 

    Usage: perf stat [<options>] [<command>] 

    -e, --event <event> event selector. use 'perf list' to list available events 

우선 : 기 아래의 오류 이 이벤트가 : k 수정자를 지원하지는 않지만 다른 테스트를 만들었지 만 이제는 이것이 버그 일 수 있다고 생각합니다. r 잘못된 구문으로 시도하고 있습니다. 이를 테스트하려면 내가 다른 이벤트 아래와 같이 시도 : 두 가지 방법으로 캐시 미스 또는 CPU/캐시 미스 호출 할 수 있습니다

캐시 - 미스 이벤트/그래서 수정

[email protected]:/sys/bus/event_source/devices/cpu$ sudo perf stat -a -e cache-misses:k -I 1000 sleep 5 
#   time    counts unit events 
    1.000429017   287.589  cache-misses:k            
    2.000828552   195.999  cache-misses:k            
    3.001086195   216.885  cache-misses:k            
    4.001438671   240.842  cache-misses:k            
    5.000702347   314.469  cache-misses:k            
[email protected]:/sys/bus/event_source/devices/cpu$ sudo perf stat -a -e cpu/cache-misses/:k -I 1000 sleep 5 
event syntax error: '..ache-misses/:k' 
            \___ parser error 
Run 'perf list' for a list of valid events 

    Usage: perf stat [<options>] [<command>] 

    -e, --event <event> event selector. use 'perf list' to list available events 
[email protected]:/sys/bus/event_source/devices/cpu$ sudo perf stat -a -e cpu/cache-misses/ -I 1000 sleep 5 
#   time    counts unit events 
    1.000379149   1.949.866  cpu/cache-misses/           
    2.000628057   1.023.040  cpu/cache-misses/           
    3.000906500   1.284.476  cpu/cache-misses/           
    4.001197960   853.127  cpu/cache-misses/           
    5.000762257   722.242  cpu/cache-misses/ 

누군가와 함께 모두 시도 파워/에너지 코어/이벤트와 함께 : k 수정자를 어떻게 사용할 수 있는지에 대한 단서가 있습니까?

결과 : 정답으로 지적한대로 :하지만 불행히도 수정 자로는 지원되지 않는 것 같습니다.

[email protected]:~$ sudo perf stat -a -e power/energy-cores/k -I 1000 sleep 5 
#   time    counts unit events 
    1.000099515 <not supported> Joules power/energy-cores/k           
    2.000246523 <not supported> Joules power/energy-cores/k           
    3.000440743 <not supported> Joules power/energy-cores/k           
    4.000673143 <not supported> Joules power/energy-cores/k           
    5.000722624 <not supported> Joules power/energy-cores/k           
[email protected]:~$ sudo perf stat -a -e power/energy-cores/ -I 1000 sleep 5 
#   time    counts unit events 
    1.000128209    0,19 Joules power/energy-cores/           
    2.000257170    0,25 Joules power/energy-cores/           
    3.000406715    0,26 Joules power/energy-cores/           
    4.000571140    0,20 Joules power/energy-cores/           
    5.000711815    1,01 Joules power/energy-cores/           
    5.000882867    0,00 Joules power/energy-cores/           

답변

3

은 일반적으로 당신이 perf 명령으로 어떤 이벤트를 측정을 시작하는 첫 번째 단계는, perf list을 실행하고 이벤트 power/energy cores 시스템에 의해 지원되는지 확인하는 것입니다. 필자는 시스템에서 perf 목록을 실행하는 예제를 제공 할 것입니다. 이벤트 전력/에너지 코어의 측정이 실제로 지원하는 경우

~/linux-4.11.3/tools/perf$ ./perf list

List of pre-defined events (to be used in -e):

branch-instructions OR branches [Hardware event]

branch-misses [Hardware event]

power/energy-cores/ [Kernel PMU event]

그런 식으로, 당신은 확인 될 것입니다 귀하의 시스템.

이가 확인되면, 당신은이 이벤트를 측정하기 위해 아래의 구문을 사용한다 :

./perf stat -a -e power/energy-cores/ -I 1000 sleep 30 (하지 : 케이 여부 : U)

편집 # 1 :

당신은 사용할 수도를 A : 케이 나 : U를 아래처럼 이벤트 power/energy-cores를 지정할 수있는 경우 : - 당신이 완전한를 지정하지 않는

./perf stat -a -e energy-cores:k -I 1000 sleep 30 (그러나 perfenergy-cores 이벤트를 인식 할 수 없습니다 이벤트 이름 : power/energy-cores).

하지만 두 번째 편집에서 제안한 것처럼이 카운터는 사용자 공간과 커널 공간 분리를 지원하지 않습니다.

편집 # 2 :

불행하게도 이러한 RAPL 카운터는 커널 공간이나 사용자 공간에 따라 값을 구분하지 않습니다. 또한, 이러한 이벤트와 관련된 성능 모니터링 유닛은 샘플링을 수행 할 수 없습니다. 당신이 이해하기 위해 아래의 패치 문서를 읽을 수 있습니다, 또한

arch/x86/events/intel/rapl.c

:

코드의 증거 -

RAPL patch

+0

안녕 @Arnabjyoti Kalita 당신이 바로 문제입니다 couter power/energy-cores /는 내 시스템에서 지원되지만, unfurtunatly k 또는 다른 수식어가 아닌 것으로 보인다. 이 수정 자들이 어떻게 지원되는지에 대한 단서가 있습니까? 나는 너무 많이 필요하기 때문에 다른 방법이 없다면 스스로 지원을 추가해야 할 필요가있다. –

+0

안녕하세요 @ 레안드로, perf stat 명령을 실행할 때 어떤 종류의 메시지가 나옵니까? 시스템이이 이벤트를 지원하더라도 올바른/올바른 값을 얻지 못한다는 것을 어떻게 알 수 있습니까? –

+0

내 질문 끝에 결과를 추가 한 이벤트 perf 목록에서 presnt 및 수정 자없이 값을 반환하지만 내가 필요한 값은 커널 및 사용자 공간으로 구분 된 값입니다. –