Apakah saya harus menjalankan perf
alat userspace sebagai administrator sistem (root), atau bisakah saya menjalankannya (atau setidaknya beberapa sub-perintah) sebagai pengguna biasa?
linux
kernel
not-root-user
perf-event
Jakub Narębski
sumber
sumber
perf
alat (yang / bisa non-sepele).perf
ada dalamlinux-tools
paket, jadi instal diperf
sana sederhana.Jawaban:
Apa yang dapat Anda lakukan
perf
tanpa menjadi root tergantung pada pengaturan sysctl .kernel.perf_event_paranoid
kernel.perf_event_paranoid
= 2: Anda tidak dapat melakukan pengukuran apa pun. Theperf
utilitas mungkin masih berguna untuk menganalisis catatan yang ada denganperf ls
,perf report
,perf timechart
atauperf trace
.kernel.perf_event_paranoid
= 1: Anda dapat melacak perintah denganperf stat
atauperf record
, dan mendapatkan data profil kernel.kernel.perf_event_paranoid
= 0: Anda dapat melacak perintah denganperf stat
atauperf record
, dan mendapatkan data acara CPU.kernel.perf_event_paranoid
= -1: Anda mendapatkan akses mentah ke tracepoint kernel (khususnya, Anda dapatmmap
membuat file olehperf_event_open
, saya tidak tahu apa implikasinya).sumber
cat /proc/sys/kernel/perf_event_paranoid
mengembalikan 1, jadi sepertinya saya akan dapat mengambil setidaknya beberapa pengukuran (BTW. apa bedanya antara "data profil kernel" dan "data acara CPU"? Referensi sudah cukup)perf stat awk 'BEGIN{for(i=0;i<10000000;i++){}}'
Akan menunjukkan siklus ruang-pengguna dan jumlah instruksi yang akurat, dan Anda bahkan bisa mendapatkan jumlah untukuops_issued.any
dan seterusnya), tetapi Anda tidak mendapatkan jumlah untuk kode yang dijalankan selama panggilan sistem / interupsi. Jadi frekuensi CPU yang dilaporkan (siklus / waktu) setidaknya sedikit lebih rendah dari yang sebenarnya karena waktu yang dihabiskan di kernel. Lihat juga. Apa batasan perf_event_paranoid == 1 yang sebenarnya memakai x86 perf?