我正在使用该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。