查找分支机构被错误预测的源位置

时间:2014-04-12 17:45:32

标签: linux branch performancecounter perf

我试图找到一个函数中的位置,其中分支最常被错误预测。我试了一下,如下:

perf record ./a.out

根据手册的建议,

a.out使用选项-ggdb -fno-omit-frame-pointer编译。

我怎样才能找到这些斑点?

1 个答案:

答案 0 :(得分:0)

默认情况下,perf record会对cycles事件执行采样。每次发生给定次数的循环事件时,记录其中具有不同事物的样本(例如指令指针)。有了这个,您可以主要观察您花费时间的代码部分。

要使用-e选项指定要执行采样的事件。可能是您可以尝试指定分支错误预测事件(根据您的硬件),并且只会在此事件的每个X出现时生成样本。但我不确定所有事件都可以采样。

我不知道它的真正含义,但在我的perf版本3.11上,存在以下选项:

-j, - 分支过滤器 启用采用分支堆栈采样。每个样本捕获一系列连续采用的分支。每个样本捕获的分支数量取决于基础 硬件,感兴趣的分支类型和执行的代码。可以选择通过启用过滤器捕获的分支类型。