我是否需要 root(管理员)权限才能运行用户空间“perf”工具?(在 Linux 内核中启用了 perf 事件)

Jak*_*ski 26 linux kernel not-root-user perf-event

我是否需要以perf系统管理员(root)身份运行用户空间工具,还是可以以普通用户身份运行它(或至少一些子命令)?

Gil*_*il' 35

perf不用 root可以做什么取决于sysctl 设置kernel.perf_event_paranoid

  • kernel.perf_event_paranoid= 2:您无法进行任何测量。该perf实用程序可能仍然是有用的分析现有的记录用perf lsperf reportperf timechartperf trace
  • kernel.perf_event_paranoid= 1:您可以使用perf stat或跟踪命令perf record,并获取内核分析数据。
  • kernel.perf_event_paranoid= 0:您可以使用perf stat或跟踪命令perf record,并获取 CPU 事件数据。
  • kernel.perf_event_paranoid= -1:您可以原始访问内核跟踪点(具体来说,您可以mmap创建由perf_event_open,我不知道其含义是什么)。

  • 使用 paranoid=2,您仍然可以在用户空间中分析您自己的代码(例如,`perf stat awk 'BEGIN{for(i=0;i<10000000;i++){}}'` 将显示准确的用户空间周期和指令计数,您甚至可以获得“uops_issued.any”等的计数),但您不会获得在系统调用/中断期间运行的代码的计数。因此,由于在内核中花费的时间,报告的 CPU 频率(周期/时间)至少比实际略低。另请参阅 [perf\_event\_paranoid == 1 实际上对 x86 perf 的限制是什么?](/sf/ask/3633795791/) (4认同)
  • @Jakub:据我所知,内核事件让您可以看到对各种内核函数的调用。CPU 事件是 CPU 中的计数器,它告诉您内存中特定位置被命中的次数。我从来没有用过它们,所以我不能告诉你更多关于它们的信息;[LWN](http://www.google.com/search?q=perf-event+site:lwn.net) 有很多关于这个主题的文章,而且还在不断发展。 (2认同)