在没有 root 权限的情况下运行 perf

kai*_*n88 41 linux perf

我正在使用该perf工具的 4.1 内核和 4.1 版运行 debian 测试。在这个版本中,他们似乎添加了某种保护,以防止普通用户从该工具收集数据。因此,perf以普通用户身份运行会出现此错误:

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
Run Code Online (Sandbox Code Playgroud)

perf_event_paranoid在我的安装中包含 3 个。不幸的是,即使以 root 身份我也无法更改该文件。如何允许我自己的用户在perf没有 sudo 权限的情况下使用?

我有一个应用程序,我想对其进行基准测试,它不需要 root 并且我不想以 root 身份运行它来对其进行基准测试。

meu*_*euh 59

/proc可写的文件通常通过向其中回显值来更改。你应该试试:

sudo sh -c 'echo 1 >/proc/sys/kernel/perf_event_paranoid'
Run Code Online (Sandbox Code Playgroud)

下面的文件/proc/sys/也有sysctl命令以便于访问,因此您可以改为:

sudo sysctl -w kernel.perf_event_paranoid=1
Run Code Online (Sandbox Code Playgroud)

(尽管-wfor write似乎是可选的)。为确保在启动时完成此操作,请/etc/sysctl.d/99-mysettings.conf使用以下行创建您自己的文件

kernel.perf_event_paranoid=1
Run Code Online (Sandbox Code Playgroud)

选择将不会覆盖现有文件的文件名/run/sysctl.d//usr/lib/sysctl.d/。参见man sysctl.d

  • 要在重新启动后保持不变:`sudo sh -c 'echo kernel.perf_event_paranoid=1 > /etc/sysctl.d/local.conf'` (14认同)
  • @Márcio:您想*附加*到`local.conf`,而不是截断。或者写入`/etc/sysctl.d/perf.conf` (6认同)