据我所知,perf能够为每个进程/线程采样一个完整的调用栈,即使它当前位于内核中。因为我假设perf在用户空间中运行,所以我想知道它如何访问不同进程/线程的堆栈的内核部分。
目的是编写一个可以对以下对象的调用栈进行采样的应用程序:其他进程/线程,即使它们当前位于内核中。
注意
答案 0 :(得分:1)
perf
由两个部分组成。用户空间工具和perf_event_open
系统调用。
通常,堆采样是通过系统调用内核来完成。可以编写与应用程序还使用perf_event_open
- 通过默认内核示例包含(exclude_kernel==0
)