루트 권한없이 perf를 실행


27

4.1 커널 및 버전 4.1의 perf도구로 데비안 테스트를 실행하고 있습니다. 이 버전에서는 일반 사용자가 해당 도구에서 데이터를 수집하지 못하도록 보호 기능을 추가 한 것으로 보입니다. 따라서 perf일반 사용자로 실행 하면 다음 오류가 발생합니다.

perf stat ls
Error:
You may not have permission to collect stats.
Consider tweaking /proc/sys/kernel/perf_event_paranoid:
 -1 - Not paranoid at all
  0 - Disallow raw tracepoint access for unpriv
  1 - Disallow cpu events for unpriv
  2 - Disallow kernel profiling for unpriv

perf_event_paranoid내 설치에 3이 들어 있습니다. 불행히도 루트로도 해당 파일을 변경할 수 없습니다. 내 사용자가 perfsudo 권한없이 사용하도록하려면 어떻게해야합니까?

루트가 필요없는 벤치 마크하려는 응용 프로그램이 있으며 벤치 마크하기 위해 루트로 실행하고 싶지 않습니다.


합니까의 perf stat -e cycles:u작업? "3"값은 perf_event_paranoid2016 lwn.net/Articles/696216 "perf_event_open () 허용 안함 " 에 추가 되었으며 "Android 및 Debian"( lkml.org/lkml/2016/1/11/587 bugs.launchpad) 에서 활성화되었습니다 . net / bugs / 1612790 debian.org/security/2017/dsa-3791 )
osgx

1
@osgx : 편집증 수준 3의 경우 귀하의 제안이 효과가 없지만 여전히 사용할 수 없습니다.
마틴 우딩

답변:


41

/proc쓰기 가능한 파일 은 일반적으로 값을 에코하여 변경됩니다. 시도해야합니다 :

sudo sh -c 'echo 1 >/proc/sys/kernel/perf_event_paranoid'

아래 파일 /proc/sys/에도 쉽게 액세스 할 수 있는 sysctl 명령이 있으므로 대신 다음을 수행 할 수 있습니다.

sudo sysctl -w kernel.perf_event_paranoid=1

( -wfor 쓰기 는 선택 사항 인 것처럼 보이지만). 부팅 시이 작업을 수행하려면 /etc/sysctl.d/99-mysettings.conf라인을 사용하여 자신의 파일을 만드십시오.

kernel.perf_event_paranoid=1

/run/sysctl.d/및의 기존 파일을 재정의하지 않는 파일 이름을 선택하십시오 /usr/lib/sysctl.d/. man sysctl.d를 참조하십시오 .


12
재부팅을 통해 지속하려면 :sudo sh -c 'echo kernel.perf_event_paranoid=1 > /etc/sysctl.d/local.conf'
Márcio

1
답변에 의견을 추가하십시오
Leos313

1
@ Leos313이 완료되었습니다. 알림 주셔서 감사합니다.
meuh

마르 @ : 당신은 할 추가 하기 local.conf, 자르지. 아니면 다음과 같이 작성하십시오/etc/sysctl.d/perf.conf
Peter Cordes
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.