Uruchom perf bez uprawnień roota


26

Prowadzę testy Debiana z jądrem 4.1 i wersją 4.1 perfnarzędzia. W tej wersji wydaje się, że dodali jakąś ochronę, aby powstrzymać zwykłych użytkowników przed gromadzeniem danych z tego narzędzia. Uruchomiony perfjak zwykły użytkownik wyświetli ten błąd:

perf stat ls
Error:
You may not have permission to collect stats.
Consider tweaking /proc/sys/kernel/perf_event_paranoid:
 -1 - Not paranoid at all
  0 - Disallow raw tracepoint access for unpriv
  1 - Disallow cpu events for unpriv
  2 - Disallow kernel profiling for unpriv

perf_event_paranoidzawiera 3 w mojej instalacji. Niestety nie mogę zmienić tego pliku nawet jako root. Jak mogę pozwolić mojemu użytkownikowi na korzystanie perfbez uprawnień sudo?

Mam aplikację, którą chciałbym przetestować, która nie wymaga rootowania i nie chcę jej uruchamiać jako root, aby ją przetestować.


Czy perf stat -e cycles:udziała Wartość „3” perf_event_paranoidzostała dodana w 2016 r. Lwn.net/Articles/696216 „Disallowing perf_event_open ()” i została włączona w „Android i Debian” (także lkml.org/lkml/2016/1/11/587 bugs.launchpad. net / robaki / 1612790 debian.org/security/2017/dsa-3791 )
osgx

1
@osgx: Dla mnie z paranoicznym poziomem 3 twoja sugestia nie działa, nadal nie mogę jej używać.
Martin Ueding

Odpowiedzi:


37

Pliki, /procktóre można zapisywać, są zwykle zmieniane przez echo wartości w nich. Powinieneś spróbować:

sudo sh -c 'echo 1 >/proc/sys/kernel/perf_event_paranoid'

Pliki poniżej /proc/sys/mają również polecenie sysctl dla łatwego dostępu, więc możesz zamiast tego:

sudo sysctl -w kernel.perf_event_paranoid=1

(choć -wdla zapisu wydaje się być opcja). Aby upewnić się, że jest to zrobione podczas uruchamiania, utwórz własny /etc/sysctl.d/99-mysettings.confplik z linią

kernel.perf_event_paranoid=1

Wybierz nazwę pliku, która nie zastąpi istniejących plików w /run/sysctl.d/i /usr/lib/sysctl.d/. Patrz man sysctl.d .


11
Aby utrzymać się przy ponownym uruchomieniu:sudo sh -c 'echo kernel.perf_event_paranoid=1 > /etc/sysctl.d/local.conf'
Márcio,

1
dodaj komentarz do odpowiedzi, proszę
Leos313

1
@ Leos313 gotowe. dzięki za przypomnienie.
Meuh
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.