perf如何采样内核堆栈?

时间:2019-01-30 14:52:15

标签: c++ perf

据我所知,perf能够为每个进程/线程采样一个完整的调用栈,即使它当前位于内核中。因为我假设perf在用户空间中运行,所以我想知道它如何访问不同进程/线程的堆栈的内核部分。

目的是编写一个可以对以下对象的调用栈进行采样的应用程序:其他进程/线程,即使它们当前位于内核中。

注意

1 个答案:

答案 0 :(得分:1)

perf由两个部分组成。用户空间工具和perf_event_open系统调用。

通常,堆采样是通过系统调用内核来完成。可以编写与应用程序还使用perf_event_open - 通过默认内核示例包含(exclude_kernel==0