在Linux中显然有一些计数器,perf例如syscall:sys_enter_select,但是在我的系统perf list上没有显示任何计数器其他人确实拥有这些计数器的证据在这里:http : //www.brendangregg.com/blog/2014-07-03/perf-counting.html如果我运行perf top -e 'syscalls:sys_enter_*'它说:Can't open event dir: Permission denied
invalid or unsupported event: 'syscalls:sys_enter_*'其他事件类型(中的perf list)工作正常。我需要做什么才能访问syscall计数器perf?我在x86_64上使用Linux内核和perf版本3.10。
3 回答
慕仙森
TA贡献1827条经验 获得超7个赞
某些perf
计数器(包括所有计数器)syscall
仅对root用户可用。 sudo perf list
将显示所有计数器,包括syscall
假设内核是用其构建的CONFIG_HAVE_SYSCALL_TRACEPOINTS
(有关此信息,请参见Grisha Levit的回答)。
因此,要进行perf top -e 'syscalls:sys_enter_*'
工作,请在-下运行它,sudo
即使您不需要sudo
使用其他计数器也是如此cycles
。
慕丝7291255
TA贡献1859条经验 获得超6个赞
如果内核不是用构建的,这些将丢失CONFIG_HAVE_SYSCALL_TRACEPOINTS。
您可以像这样检查:
# grep TRACEPOINTS "/boot/config-$(uname -r)"
CONFIG_TRACEPOINTS=y
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
- 3 回答
- 0 关注
- 304 浏览
添加回答
举报
0/150
提交
取消