Нужно ли запускать perf
инструмент пространства пользователя как системный администратор (root), или я могу запустить его (или хотя бы несколько подкоманд) как обычный пользователь?
linux
kernel
not-root-user
perf-event
Якуб Наребски
источник
источник
perf
инструмента (которая может быть / может быть нетривиальной).perf
естьlinux-tools
пакет, поэтому установкаperf
там проста.Ответы:
То, что вы можете делать,
perf
не будучи пользователем root, зависит от настройки sysctl .kernel.perf_event_paranoid
kernel.perf_event_paranoid
= 2: вы не можете проводить какие-либо измерения.perf
Утилита все еще может быть полезной для анализа существующих записейperf ls
,perf report
,perf timechart
илиperf trace
.kernel.perf_event_paranoid
= 1: вы можете отследить команду с помощьюperf stat
илиperf record
и получить данные профилирования ядра.kernel.perf_event_paranoid
= 0: вы можете отследить команду с помощьюperf stat
илиperf record
и получить данные о событиях процессора.kernel.perf_event_paranoid
= -1: вы получаете необработанный доступ к точкам трассировки ядра (в частности, вы можетеmmap
создать файл, созданныйperf_event_open
, я не знаю, каковы последствия).источник
cat /proc/sys/kernel/perf_event_paranoid
возвращает 1, так что, похоже, я смог бы провести хотя бы несколько измерений (кстати, какая разница между «данными профилирования ядра» и «данными о событиях процессора»? Справки достаточно)perf stat awk 'BEGIN{for(i=0;i<10000000;i++){}}'
, покажет точный цикл пользовательского пространства и количество команд, и вы даже можете получить счет заuops_issued.any
и т. Д.), Но вы не получите счет за код который работал во время системных вызовов / прерываний. Таким образом, заявленная частота процессора (циклы / время), по крайней мере, немного ниже, чем фактическая из-за времени, проведенного в ядре. Смотрите также Какое ограничение на perf_event_paranoid == 1 фактически накладывает на x86 perf?