사용자 공간 "perf" 도구를 실행하려면 루트(관리자) 권한이 필요합니까? (perf 이벤트는 Linux 커널에서 활성화됩니다)

사용자 공간 "perf" 도구를 실행하려면 루트(관리자) 권한이 필요합니까? (perf 이벤트는 Linux 커널에서 활성화됩니다)

사용자 공간 도구를 sysadmin(루트)으로 실행 해야 합니까 perf, 아니면 일반 사용자로 이 도구(또는 최소한 일부 하위 명령)를 실행할 수 있습니까?

답변1

루트 없이 할 수 있는 작업은 perf다음에 따라 다릅니다.kernel.perf_event_paranoid 시스템 제어 설정.

  • kernel.perf_event_paranoid= 2: 측정을 수행할 수 없습니다. 이 유틸리티는 perf또는를 사용하여 기존 레코드를 분석하는 데 여전히 유용할 수 있습니다.perf lsperf reportperf timechartperf trace
  • kernel.perf_event_paranoidperf stat= 1: 또는 Trace 명령을 사용하여 perf record커널 프로파일링 데이터를 얻을 수 있습니다.
  • kernel.perf_event_paranoid= 0: perf stat명령을 사용하거나 추적 perf record하고 CPU 이벤트 데이터를 얻을 수 있습니다.
  • kernel.perf_event_paranoid= -1: 커널 추적점에 대한 원시 액세스를 얻을 수 있습니다(특히 다음을 mmap통해 그렇게 할 수 있습니다).perf_event_open, 그게 무슨 뜻인지 모르겠습니다).

답변2

perf가 RHEL8에서 이벤트를 기록하도록 허용하기 위해 수행해야 하는 단계는 다음과 같습니다.

sudo mount -o remount,mode=755 /sys/kernel/tracing/
sudo sh -c 'echo -1 >/proc/sys/kernel/perf_event_paranoid'
sudo sh -c 'echo 0 >/proc/sys/kernel/kptr_restrict'

그런 다음 일반 사용자로 perf를 실행할 수 있습니다.

~$ perf record -e block:block_rq_complete -ag sleep 5
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.045 MB perf data ]

관련 정보