Perf ohne Root-Rechte ausführen

Perf ohne Root-Rechte ausführen

Ich führe Debian Testing mit dem 4.1-Kernel und Version 4.1 des perfTools aus. In dieser Version scheinen sie eine Art Schutz hinzugefügt zu haben, um normale Benutzer daran zu hindern, Daten von diesem Tool zu sammeln. Wenn ich es also perfals normaler Benutzer ausführe, wird dieser Fehler ausgegeben:

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_paranoidenthält 3 in meiner Installation. Leider kann ich diese Datei auch als Root nicht ändern. Wie kann ich meinem eigenen Benutzer die Nutzung perfohne Sudo-Rechte erlauben?

Ich habe eine Anwendung, für die ich einen Benchmark durchführen möchte, für die kein Root-Zugriff erforderlich ist, und ich möchte sie zum Benchmarking nicht als Root ausführen.

Antwort1

Beschreibbare Dateien /procwerden normalerweise geändert, indem ein Wert in sie hineingespiegelt wird. Sie sollten Folgendes versuchen:

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

Die Dateien unter /proc/sys/haben auch diesysctlBefehl für einfachen Zugriff, sodass Sie stattdessen Folgendes tun können:

sudo sysctl -w kernel.perf_event_paranoid=1

(obwohl die -wfürschreibenscheint optional zu sein). Um sicherzustellen, dass dies beim Booten geschieht, erstellen Sie eine eigene /etc/sysctl.d/99-mysettings.confDatei mit der Zeile

kernel.perf_event_paranoid=1

/run/sysctl.d/Wählen Sie einen Dateinamen, der vorhandene Dateien in und nicht überschreibt /usr/lib/sysctl.d/. Sieheman sysctl.d.

verwandte Informationen