我正在尝试使用 Linux 的perf_events
框架来调查我们一台服务器上的应用程序的问题。根据我对该perf
工具的阅读,收集堆栈相对简单。
我想知道是否可以简单地使用挂墙时间作为一种事件来每 N 秒收集一次堆栈。
我当前使用的命令是:
perf record -e cycles -T -o <dir>/samples.data -F 1 --call-graph dwarf -T -p <pid>
根据我目前的理解,该命令将每 1 秒采样一次 ( ) 并从进程 ( ) 中-F 1
抓取堆栈 ( ) ,直到 perf 命令被信号终止。-g
-p <pid>
但根据我收集的数据,似乎每秒有不止一组样本?所以,我认为我误解或误解了收集样本的方式perf
。
另外,如果我想每 2、5 或 10 秒记录一次堆栈以减少收集的数据量,该怎么办?有没有办法实现这一点perf
?