사용자 공간 도구를 sysadmin(루트)으로 실행 해야 합니까 perf
, 아니면 일반 사용자로 이 도구(또는 최소한 일부 하위 명령)를 실행할 수 있습니까?
답변1
루트 없이 할 수 있는 작업은 perf
다음에 따라 다릅니다.kernel.perf_event_paranoid
시스템 제어 설정.
kernel.perf_event_paranoid
= 2: 측정을 수행할 수 없습니다. 이 유틸리티는perf
또는를 사용하여 기존 레코드를 분석하는 데 여전히 유용할 수 있습니다.perf ls
perf report
perf timechart
perf trace
kernel.perf_event_paranoid
perf 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 ]