![사용자 공간 "perf" 도구를 실행하려면 루트(관리자) 권한이 필요합니까? (perf 이벤트는 Linux 커널에서 활성화됩니다)](https://linux55.com/image/2162/%EC%82%AC%EC%9A%A9%EC%9E%90%20%EA%B3%B5%EA%B0%84%20%22perf%22%20%EB%8F%84%EA%B5%AC%EB%A5%BC%20%EC%8B%A4%ED%96%89%ED%95%98%EB%A0%A4%EB%A9%B4%20%EB%A3%A8%ED%8A%B8(%EA%B4%80%EB%A6%AC%EC%9E%90)%20%EA%B6%8C%ED%95%9C%EC%9D%B4%20%ED%95%84%EC%9A%94%ED%95%A9%EB%8B%88%EA%B9%8C%3F%20(perf%20%EC%9D%B4%EB%B2%A4%ED%8A%B8%EB%8A%94%20Linux%20%EC%BB%A4%EB%84%90%EC%97%90%EC%84%9C%20%ED%99%9C%EC%84%B1%ED%99%94%EB%90%A9%EB%8B%88%EB%8B%A4).png)
사용자 공간 도구를 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 ]