perf_event_paranoid == 1 实际上对 x86 性能施加了什么限制?



较新的Linux内核具有sysfs可调/proc/sys/kernel/perf_event_paranoid,允许用户为非root用户调整perf_events的可用功能,数字越高更安全(提供的功能相应减少(:

从内核文档中,我们对各种值具有以下行为:

perf_event_paranoid:

控制非特权用户对性能事件系统的使用 (不含CAP_SYS_ADMIN(。 默认值为 2。

-1:允许所有用户(几乎(使用所有事件 perf_event_mlock_kb后忽略 mlock 限制而不CAP_IPC_LOCK

>=0:禁止用户在没有CAP_SYS_ADMIN的情况下跟踪 ftrace 函数跟踪点 禁止用户在没有CAP_SYS_ADMIN的情况下访问原始跟踪点

>=1:禁止用户在没有CAP_SYS_ADMIN的情况下访问 CPU 事件

>=2:禁止用户在不CAP_SYS_ADMIN的情况下进行内核分析

我的perf_event_paranoid文件中有1应该"禁止CPU事件访问" - 但这到底是什么意思?

简单的读数意味着无法访问 CPU 性能计数器事件(例如英特尔 PMU 事件(,但似乎我可以很好地访问这些事件。例如:

$ perf stat sleep 1
Performance counter stats for 'sleep 1':
0.408734      task-clock (msec)         #    0.000 CPUs utilized          
1      context-switches          #    0.002 M/sec                  
0      cpu-migrations            #    0.000 K/sec                  
57      page-faults               #    0.139 M/sec                  
1,050,362      cycles                    #    2.570 GHz                    
769,135      instructions              #    0.73  insn per cycle         
152,661      branches                  #  373.497 M/sec                  
6,942      branch-misses             #    4.55% of all branches        
1.000830821 seconds time elapsed

在这里,许多事件是CPU PMU事件(cyclesinstructionsbranchesbranch-missescache-misses(。

如果这些不是所引用的 CPU 事件,它们是什么?

在这种情况下,CPU 事件是指监视每个CPU而不是每个任务的事件。对于perf工具,这限制了

-C, --cpu=
Count only on the list of CPUs provided. Multiple CPUs can be provided as a comma-separated list with no space: 0,1.
Ranges of CPUs are specified with -: 0-2. In per-thread mode, this option is ignored. The -a option is still necessary
to activate system-wide monitoring. Default is to count on all CPUs.
-a, --all-cpus
system-wide collection from all CPUs (default if no target is specified)

对于perf_event_open,这考虑以下情况:

pid == -1 and cpu >= 0
This measures all processes/threads on the specified CPU.  This requires CAP_SYS_ADMIN capability or a /proc/sys/ker‐
nel/perf_event_paranoid value of less than 1.

这可能是特定于版本的,引用的文档来自 4.17。这是另一个相关的问题。

相关内容

  • 没有找到相关文章

最新更新