性能:为什么我没有“ syscall”计数器?

在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。


慕桂英4014372
浏览 305回答 3
3回答

慕仙森

某些perf计数器(包括所有计数器)syscall仅对root用户可用。 sudo perf list将显示所有计数器,包括syscall假设内核是用其构建的CONFIG_HAVE_SYSCALL_TRACEPOINTS(有关此信息,请参见Grisha Levit的回答)。因此,要进行perf top -e 'syscalls:sys_enter_*'工作,请在-下运行它,sudo即使您不需要sudo使用其他计数器也是如此cycles。

慕丝7291255

如果内核不是用构建的,这些将丢失CONFIG_HAVE_SYSCALL_TRACEPOINTS。您可以像这样检查:# grep TRACEPOINTS "/boot/config-$(uname -r)"CONFIG_TRACEPOINTS=yCONFIG_HAVE_SYSCALL_TRACEPOINTS=y
打开App,查看更多内容
随时随地看视频慕课网APP