开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

最佳实践简介

本文档提供了如表1所示的鲲鹏DevKit最佳实践,旨在通过这些最佳实践演示鲲鹏DevKit各个子工具的对应功能,指导用户如何使用鲲鹏DevKit工具进行项目分析,并根据该工具自动分析得出的分析报告进行修改。

表1 最佳实践简介

工具

特性

工作模式

实践名称

实践简介

系统性能分析

鲲鹏性能定界KSYS

微架构分析

CLI

实践1:微架构分析

本实践中使用鲲鹏性能定界工具KSYS快速定界问题,初步识别到微架构指标中分支预测失败指标较高存在性能瓶颈。再使用系统性能分析工具Tuner进行微架构分析,发现是条件判断语句CPU预测失败率高的性能问题,结合源码进一步发现是使用条件判断语句前数据未处理导致。通过对数据进行排序,解决源码中的CPU分支预测问题,提高分支预测成功率,提升应用性能。

热点函数分析

CLI

实践2:热点函数分析

本实践中先使用鲲鹏性能定界工具KSYS快速定界问题,初步识别到热点函数系统调用较多存在性能瓶颈。再使用系统性能分析工具Tuner的热点函数分析,通过火焰图分析调用栈发现IO系统调用占比高的问题,结合源码进一步发现是read系统调用开销大导致。通过mmap(Memory Map,内存映射文件)的手段,减少拷贝和系统调用,优化大文件读取逻辑,从而降低IO时延,优化程序性能。

访存统计分析

CLI

实践3:访存统计分析

本实践中先使用鲲鹏性能定界工具KSYS快速定界问题,初步识别到DDRC读带宽处于异常高值,存在性能瓶颈,再使用系统性能分析工具Tuner的访存统计分析、Miss事件分析,发现应用中存在缓存命中率低的性能问题,结合源码进一步发现是内存数据大量复制导致。通过块处理的方法,提高缓存命中率,优化程序性能。

系统性能分析

热点函数分析

WebUI

实践1:Python拼接字符串的性能调优实践

使用鲲鹏DevKit系统性能分析工具对业务中使用Python进行字符串拼接的接口执行应用热点函数分析,找到性能瓶颈点,并根据分析结果进行优化修改,从而实现使用Python进行字符串拼接性能增强。

热点函数分析

锁与等待分析

WebUI

实践2:锁性能调优

使用鲲鹏DevKit系统性能分析工具中的热点函数分析及锁与等待分析功能对目标环境的多线程应用程序进行采样分析,找到性能瓶颈点,并根据分析结果进行优化修改,从而实现应用性能提升。

Java性能分析

在线分析

采样分析

WebUI

实践1:内存泄漏调优实践

使用Java性能分析工具对运行中的Java程序进行在线分析和采样分析,找到程序问题,并根据分析结果进行优化修改,从而实现Java程序最佳运行。

WebUI

实践2:热点函数定位调优实践

使用Java性能分析工具对运行中的Java程序进行在线分析的热点函数分析,找到程序中的热点问题,并根据分析结果进行优化修改,从而实现Java程序最佳运行。

在线分析

WebUI

实践3:GC日志调优实践

使用Java性能分析工具对运行中的Java程序进行在线分析的GC分析,找到程序GC问题,并根据分析结果进行优化修改,从而实现Java程序最佳运行。

WebUI

实践4:锁竞争定位调优实践

使用Java性能分析工具对运行中的Java程序使用在线分析的CPU分析的线程转储功能,找到程序中的锁问题,并根据分析结果进行优化修改,从而实现Java程序最佳运行。

WebUI

实践5:G1巨型对象触发GC调优实践

使用Java性能分析工具对运行中的Java程序进行在线分析的GC分析,找到程序GC问题,并根据分析结果进行优化修改,从而实现Java程序最佳运行。

WebUI

实践6:异常GC调优实践

使用Java性能分析工具对运行中的Java程序进行在线分析的GC分析,找到程序GC问题,并根据分析结果进行优化修改,从而实现Java程序最佳运行。

WebUI

实践7:死锁调优实践

使用Java性能分析工具对运行中的Java程序使用在线分析的CPU分析的线程转储功能,找到程序中的锁问题,并根据分析结果进行优化修改,从而实现Java程序最佳运行。

系统诊断工具

内存使用

WebUI

实践1:内存使用调优实践

使用鲲鹏DevKit系统诊断分析工具对可执行程序进行内存使用分析,通过调用栈信息找到内存泄漏问题点,并根据问题点进行优化修改,从而精准解决内存泄漏问题。