使用Perf查找线程瓶颈并优化占用时间 [英] Finding threading bottlenecks and optimizing for wall-time with perf

查看:20
本文介绍了使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆