gpt4 book ai didi

c - vtune 显示时间利用率低,但问题未知

转载 作者:行者123 更新时间:2023-11-30 19:18:47 27 4
gpt4 key购买 nike

使用英特尔 Vtune 分析数据包处理应用程序。

仅此说明中的时间利用率很低

add $0x100, %r8 (7%)

单个 if 检查的时间利用率很低

if(unlikely(VALUE == some_value)

这个 some_value 是 uint16_t 并作为 (int*)&some_value 传递,并进一步作为 (uint8_t*)some_value 访问(如果有帮助的话)。

映射到以下内容

movzxw 0x3e(%rsp),%eax
test %ax,%ax ---- Leads in poor time utilization
jz Block x

将变量插入堆栈的函数时间利用率低而其他人推送相同的变量并花费更少的时间

pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbp
pushq %rbx
sub $0x48, %rsp
movq %rsi, 0x18(%rsp)

在内存访问分析、分支错误预测分析等方面显示出相同的问题。不明白如何克服这个问题

最佳答案

英特尔性能计数器的周期精度不高。有时,附近的指令会获取不同指令中停顿的周期计数。 (附近 = 1 或 2 个指令距离)。

除非存在一些非常奇怪的解码瓶颈,否则 add $0x100, %r8 相对于附近的其他指令实际上不可能花费大量时间。除非它在准备好之前需要 %r8 的值,否则可能会这样。我不知道性能计数器是否以这种方式工作。

test/jz 对宏融合到单个 uop 中。那里的时间不是来自 test,而是可能来自分支。它的预测是否有很多错误?

缓慢推送变量:该函数是递归的吗?或者在长调用链的末尾?如果它将值插入一段时间没有被触及的内存缓存行(或更糟糕的是,页面),则它不会位于 L1 缓存中,并且访问速度会很慢。

在所有情况下,都需要更多的上下文来表达任何明确的内容。一条指令本身对于性能分析几乎没有用处。

关于c - vtune 显示时间利用率低,但问题未知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26218464/

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