Muss ich das perf
Userspace-Tool als Systemadministrator (root) ausführen oder kann ich es (oder zumindest einige Unterbefehle) als normaler Benutzer ausführen?
linux
kernel
not-root-user
perf-event
Jakub Narębski
quelle
quelle
perf
Tools (der nicht trivial ist / sein kann ) als normaler Benutzer in $ HOME zu installieren .perf
ist imlinux-tools
Paket enthalten, daher ist die Installationperf
dort einfach.Antworten:
Was Sie tun können,
perf
ohne root zu sein, hängt von der Einstellung von sysctl ab .kernel.perf_event_paranoid
kernel.perf_event_paranoid
= 2: Sie können keine Messungen vornehmen. Derperf
Nutzen könnte noch nützlich sein , vorhandenen Datensätze zu analysieren mitperf ls
,perf report
,perf timechart
oderperf trace
.kernel.perf_event_paranoid
= 1: Sie können einen Befehl mitperf stat
oder verfolgenperf record
und Kernel-Profildaten abrufen.kernel.perf_event_paranoid
= 0: Sie können einen Befehl mitperf stat
oder verfolgenperf record
und CPU-Ereignisdaten abrufen.kernel.perf_event_paranoid
= -1: Sie erhalten unformatierten Zugriff auf Kernel-Tracepoints (insbesondere können Siemmap
die von erstellte Dateiperf_event_open
, ich weiß nicht, was die Auswirkungen sind).quelle
cat /proc/sys/kernel/perf_event_paranoid
Gibt 1 zurück, so dass es den Anschein hat, als könnte ich zumindest einige Messungen durchführen (Übrigens: Was ist der Unterschied zwischen "Kernel-Profiling-Daten" und "CPU-Ereignisdaten"? Die Referenz ist ausreichend)perf stat awk 'BEGIN{for(i=0;i<10000000;i++){}}'
werden genaue Benutzer-Space-Zyklen und Anweisungszählungen angezeigt, und Sie können sogar Zählungen füruops_issued.any
usw. abrufen), aber Sie erhalten keine Zählungen für Code das lief während Systemaufrufen / Interrupts. Daher ist die gemeldete CPU-Frequenz (Zyklen / Zeit) aufgrund der im Kernel verbrachten Zeit zumindest geringfügig niedriger als die tatsächliche. Siehe auch Welche Einschränkung setzt perf_event_paranoid == 1 tatsächlich auf x86 perf?