是否可以通过perf收集硬件计数器统计信息,仅用于程序执行的一部分?如果是这样,怎么样?
likwid提供了能够定义命名区域的功能,但如果只在安装了perf的系统上实现这一点,那将会很棒.
以前的一些问题已经返回相关答案,但仍有一些缺点:
我正在使用 perf 对程序的性能进行采样。
这对我有用:
$ perf record -g ./bench
...
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.023 MB perf.data (93 samples) ]
$ ls -al perf.data
-rw------- 1 bram bram 26848 Oct 25 10:22 perf.data
Run Code Online (Sandbox Code Playgroud)
但现在我想在程序中的特定点开始和停止收集。但如果我这样做:
$ perf record -g -e cycles --filter="start render_image" ./bench
--filter option should follow a -e tracepoint option
Run Code Online (Sandbox Code Playgroud)
我很困惑,因为过滤器标志确实遵循 -e 选项。这里发生了什么?
我也对 perf.data 的体积如此之小感到困惑,难道它真的只收集了 93 个样本吗?它运行了几秒钟。
最后,我假设“-e Cycles”是默认事件?
更新:正如 Arnabjyoti Kalita 所解释的,有一类特殊的事件称为跟踪点。如果我以 root 身份运行 …