中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

调优过程

前提条件

  • 服务器和操作系统正常运行。
  • PC端已经安装SSH远程登录工具。
  • 目标环境上鲲鹏DevKit系统性能分析工具已经安装完成,并正常运行。

操作步骤

实践使用demo请参考testdemo

  1. 创建Launch Application的微架构Bad Speculation分析。

    先使用cpu_branch_prediction_before.cpp进行分析。

    表1 任务配置参数说明

    参数

    说明

    分析类型

    微架构分析

    分析对象

    应用

    模式

    Launch application

    应用路径

    /opt/testdemo/cpu_branch_prediction_before

    采样时长

    60秒

    TopDown类型

    其他level

    分析指标

    Bad Speculation

  2. 查看微架构分析的结果。
    图1 微架构分析结果
  3. 性能瓶颈分析。

    在微架构分析结果显示CPU乱序执行的时候预测错误导致的流水线停顿,存在瓶颈。查看代码,发现在代码中的for循环中的if判断存在大量的分支预测失败。

  4. 性能瓶颈优化。

    修改代码,在进行for循环前,对数据先进行排序处理,使得CPU的分支预测更加准确。优化后demo为cpu_branch_prediction_after.cpp

  5. 再次进行微架构Bad Speculation分析。
    表2 任务配置参数说明

    参数

    说明

    分析类型

    微架构分析

    分析对象

    应用

    模式

    Launch application

    应用路径

    /opt/testdemo/cpu_branch_prediction_after

    采样时长

    60秒

    TopDown类型

    其他level

    分析指标

    Bad Speculation

    图2 第二次微架构Bad Speculation分析结果

调优结果

查看发现Bad Speculation的占比极低,CPU分支预测错误占比很小。

本实践中,通过微架构的采集分析,逐渐找到代码中CPU分支预测错误导致的性能瓶颈,通过优化提高性能。

总结

表3 总体结果

类型

应用执行时间

branchMispredict

无排序

31.1秒

54%

排序

10.6秒

0%

通过微架构对CPU的指令操作进行分析,调整代码后可提升性能。