最佳实践简介
本文档提供了如表1所示的鲲鹏DevKit最佳实践,旨在通过这些最佳实践演示鲲鹏DevKit各个子工具的对应功能,指导用户如何使用鲲鹏DevKit工具进行项目分析,并根据该工具自动分析得出的分析报告进行修改。
工具 |
特性 |
工作模式 |
实践名称 |
实践简介 |
|---|---|---|---|---|
系统性能分析 鲲鹏性能定界KSYS |
微架构分析 |
CLI |
实践1:微架构分析 |
本实践中使用鲲鹏性能定界工具KSYS快速定界问题,初步识别到微架构指标中分支预测失败指标较高存在性能瓶颈。再使用系统性能分析工具Tuner进行微架构分析,发现是条件判断语句CPU预测失败率高的性能问题,结合源码进一步发现是使用条件判断语句前数据未处理导致。通过对数据进行排序,解决源码中的CPU分支预测问题,提高分支预测成功率,提升应用性能。 |
热点函数分析 |
CLI |
实践2:热点函数分析 |
本实践中先使用鲲鹏性能定界工具KSYS快速定界问题,初步识别到热点函数系统调用较多存在性能瓶颈。再使用系统性能分析工具Tuner的热点函数分析,通过火焰图分析调用栈发现IO系统调用占比高的问题,结合源码进一步发现是read系统调用开销大导致。通过mmap(Memory Map,内存映射文件)的手段,减少拷贝和系统调用,优化大文件读取逻辑,从而降低IO时延,优化程序性能。 |
|
访存统计分析 |
CLI |
实践3:访存统计分析 |
本实践中先使用鲲鹏性能定界工具KSYS快速定界问题,初步识别到 |
|
系统性能分析 |
热点函数分析 |
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系统诊断分析工具对可执行程序进行内存使用分析,通过调用栈信息找到内存泄漏问题点,并根据问题点进行优化修改,从而精准解决内存泄漏问题。 |