我正在使用 4.1 内核和 4.1 版perf
工具运行 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
perf_event_paranoid
我的安装中包含 3 个。不幸的是,即使以 root 身份也无法更改该文件。我如何允许自己的用户perf
在没有 sudo 权限的情况下使用?
我有一个应用程序想进行基准测试,它不需要root并且我不想以root身份运行它来对其进行基准测试。
答案1
可写的文件/proc
通常通过向其中回显一个值来更改。您应该尝试:
sudo sh -c 'echo 1 >/proc/sys/kernel/perf_event_paranoid'
下面的文件/proc/sys/
也有系统控制命令以便于访问,因此您可以改为执行以下操作:
sudo sysctl -w kernel.perf_event_paranoid=1
-w
(尽管写似乎是可选的)。为了确保在启动时完成此操作,请创建自己的/etc/sysctl.d/99-mysettings.conf
文件,其中包含以下行
kernel.perf_event_paranoid=1
选择一个不会覆盖 和 中现有文件的文件名/run/sysctl.d/
。/usr/lib/sysctl.d/
请参阅系统管理员。