【问题标题】:Intel Pin tool expected time overhead英特尔 Pin 工具预期时间开销
【发布时间】:2014-11-09 03:14:26
【问题描述】:

我正在编写一个 Pin 工具,它似乎会增加大量时间开销。
我的工具必须以指令的粒度检测程序。

为了检查开销来源,我编写了一个小型 Pin-tool,它仅通过
测量每条指令来计算指令(就像我必须在我的工具中做的那样)。

此外,我还编写了一个检查注册表值的简单程序(C 代码大约 20 行)。

(在 i7 CPU 上运行,Windows 7)
运行简单程序时,几乎需要立即返回。
当运行 Pin 工具 init 和完全没有检测的程序时,它需要 2.35+- 秒
使用简单的指令工具运行 Pin 工具需要 5-6 秒
指令数:3,107,098。

我也在更复杂的代码上尝试过,一个循环遍历递归函数的程序。

没有 Pin 大约需要 1 分钟。
使用 Pin(仅计算指令)大约需要 7 分钟。
指令数为:1,850,919,077

这是预期的开销吗?

【问题讨论】:

    标签: performance instrumentation intel-pin


    【解决方案1】:

    如果不知道您正在使用哪种仪器,真的不可能说这些数字是否符合预期。然而,当涉及到 PIN 的开销时,需要考虑很多因素。

    如果您的分析代码(传递给 *_InsertCall 的函数指针)包含对其他函数、循环或条件语句的调用,则可能需要上下文切换。这会大大增加工具的执行时间。如果您阅读了 PIN 用户指南,我很确定这已被简要讨论过,在发表的有关 PIN 的文章中也提到了这一点。

    另一个可能更容易理解的因素是,假设您正在检测,您添加的分析代码至少会导致执行时间增加等于已编译分析代码中的指令数量关于指令的粒度。如果您的分析代码中有循环,这当然会增加更多。 (这有点简化,因为我假设每条指令都需要相同的时间来执行。)

    由 PIN 引起的减速范围可以从 2 倍(这是相当理论上的减速)到数万倍。如果您的工具仅导致减速 7 倍,我会说它非常快。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-03
      • 2019-09-05
      • 2017-01-30
      • 2014-06-21
      • 2019-08-11
      • 2018-06-13
      • 2011-10-10
      • 1970-01-01
      相关资源
      最近更新 更多