使用Perf查找线程瓶颈并优化占用时间 [英] Finding threading bottlenecks and optimizing for wall-time with perf
本文介绍了使用Perf查找线程瓶颈并优化占用时间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
使用perf record
对CPU周期进行采样对于查找内核利用率大致恒定的优化候选者非常有用。但是,对于具有多个并行度不同的阶段的代码,计算CPU周期将非常强调并行阶段,而不强调影响墙时间的顺序或有限并行阶段。简而言之,简单使用Perf可能会突出显示amdahl's law
因此,问题是如何让perf record
/perf report
找到缩短运行时间的优化候选者,可以是一致并行代码中最热的循环,也可以是适度并行的瓶颈阶段,也可以是较长的单线程阶段。
需要解决的已知解决方法:
- 在单核上执行工作负载,以便WALL-Time≅CPU周期
- 单独分析各个组件
meta:这是特定于绩效的跟进to a more general question
推荐答案
KDAB Hotspot是一个图形用户界面,它可以分析perf record
输出,如果已使用-e sched:sched_switch --switch-events --sample-cpu
这篇关于使用Perf查找线程瓶颈并优化占用时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文