gpt4 book ai didi

performance - perf record(或其他分析器)如何选择将哪个指令计为花费时间?

转载 作者:行者123 更新时间:2023-12-04 12:21:16 30 4
gpt4 key购买 nike

最近,我发现实际上 perf(或 pprof)可能会显示在反汇编 View 指令时间附近,实际上并没有花费这个时间。真正需要这段时间的真正指令就在它之前。我知道一个模糊的解释,这是由于 CPU 中的指令流水线而发生的。但是,我想了解以下内容:

  • 这个效果有更详细的解释吗?
  • 它是否记录在 perf 或 pprof 中?我没有找到任何引用资料。
  • 有没有办法获得正确放置的时间?
  • 最佳答案

    (快速而不是 super 详细的答案;如果有人想写一个更详细的答案会更好)。perf只使用 CPU 自己的硬件性能计数器,当计数器向下计数到零或达到阈值时,它们可以进入记录事件的模式。
    引发中断或将事件写入内存中的缓冲区(使用 PEBS 精确事件)。该事件将包括 CPU 选择与事件关联的代码地址(即引发中断的点),即使对于像 cycles 这样的事件也是如此。不像 instructions本质上没有关联的特定指令。当计数器回绕时,乱序的 exec 后端可能有几百条指令在运行,但必须为任何给定的样本选择一个。
    通常,CPU“责怪”等待缓慢产生结果的指令,而不是产生结果的指令,尤其是缓存未命中加载。
    有关 Intel x86 CPU 的示例,请参阅 Why is this jump instruction so expensive when performing pointer chasing?
    这似乎也取决于在引发中断时让 ROB 中的最后一条指令退出的效果。 (英特尔 CPU 至少看起来确实这样做了;即使指令可能很慢,也能确保向前推进。)
    一般来说,当后面的指令被指责而不是实际花时间的指令时,可能会出现“偏差”,这可能有不同的原因。 (也许特别是对于非核心事件,因为它们与核心时钟异步发生。)
    其他相关问答以及有趣的例子或其他事情

  • Inconsistent `perf annotate` memory load/store time reporting
  • Linux perf reporting cache misses for unexpected instruction
  • 关于performance - perf record(或其他分析器)如何选择将哪个指令计为花费时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69351189/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com