我试图找到一个函数中的位置,其中分支最常被错误预测。我试了一下,如下:
perf record ./a.out
a.out
使用选项-ggdb -fno-omit-frame-pointer
编译。
我怎样才能找到这些斑点?
答案 0 :(得分:0)
默认情况下,perf record
会对cycles事件执行采样。每次发生给定次数的循环事件时,记录其中具有不同事物的样本(例如指令指针)。有了这个,您可以主要观察您花费时间的代码部分。
要使用-e选项指定要执行采样的事件。可能是您可以尝试指定分支错误预测事件(根据您的硬件),并且只会在此事件的每个X出现时生成样本。但我不确定所有事件都可以采样。
我不知道它的真正含义,但在我的perf版本3.11上,存在以下选项:
-j, - 分支过滤器 启用采用分支堆栈采样。每个样本捕获一系列连续采用的分支。每个样本捕获的分支数量取决于基础 硬件,感兴趣的分支类型和执行的代码。可以选择通过启用过滤器捕获的分支类型。