Czy muszę uruchomić perf
narzędzie przestrzeni użytkownika jako administrator systemu (root), czy mogę uruchomić to (lub przynajmniej niektóre podkomendy) jako zwykły użytkownik?
linux
kernel
not-root-user
perf-event
Jakub Narębski
źródło
źródło
perf
narzędziu (która jest / może być łatwa).perf
jest wlinux-tools
pakiecie, więc instalacjaperf
jest prosta.Odpowiedzi:
To, co możesz zrobić
perf
bez rootowania, zależy od ustawienia sysctl .kernel.perf_event_paranoid
kernel.perf_event_paranoid
= 2: nie możesz wykonać żadnych pomiarów.perf
Narzędzie może nadal być przydatne do analizy istniejących rekordów zperf ls
,perf report
,perf timechart
lubperf trace
.kernel.perf_event_paranoid
= 1: możesz prześledzić polecenie za pomocąperf stat
lubperf record
i uzyskać dane profilowania jądra.kernel.perf_event_paranoid
= 0: możesz prześledzić polecenie za pomocąperf stat
lubperf record
i uzyskać dane o zdarzeniach procesora.kernel.perf_event_paranoid
= -1: masz surowy dostęp do punktów śledzenia jądra (konkretnie, możesz utworzyćmmap
plik przezperf_event_open
, nie wiem jakie są tego konsekwencje).źródło
cat /proc/sys/kernel/perf_event_paranoid
zwraca 1, więc wydaje się, że byłbym w stanie wykonać przynajmniej niektóre pomiary (BTW. jaka jest różnica między „danymi profilowania jądra” a „danymi zdarzenia CPU”? Odniesienie wystarczy)perf stat awk 'BEGIN{for(i=0;i<10000000;i++){}}'
Pokaże dokładny cykl przestrzeni użytkownika i liczbę instrukcji, a nawet możesz uzyskać liczby dlauops_issued.any
itd.), Ale nie otrzymujesz liczby dla kodu które działały podczas wywołań / przerwań systemowych. Tak więc raportowana częstotliwość procesora (cykle / czas) jest co najmniej nieco niższa niż rzeczywista z powodu czasu spędzonego w jądrze. Zobacz także Jakie ograniczenie perf_event_paranoid == 1 faktycznie nakłada na x86 perf?