鲲鹏性能分析工具简介
发表于 2023/12/06
0
尊敬的鲲鹏开发者你好,为了解决开发者在软件运行中遇到的性能问题,鲲鹏提供了鲲鹏DevKit系统性能分析工具,帮助开发者更快更方便的实现鲲鹏平台软件性能瓶颈分析与调优,您可以通过本课程学习如何使用鲲鹏DevKit系统性能分析工具快速完成软件性能瓶颈分析与调优。
本文主要介绍了以下知识:
(1)鲲鹏性能调优背景及DevKit性能分析工具介绍
(2)如何通过DevKit性能分析工具识别程序Topdown特征并进行模式优化提升应用性能
(3)如何通过DevKit性能分析工具识别程序热点问题并优化代码热点提升应用性能
鲲鹏性能分析介绍
1.为什么需要性能分析工具
服务器承载大量复杂的行业应用,性能瓶颈可能存在于任何层次。服务器性能是硬件(如CPU、内存、网卡)、内核调度、系统库、应用程序等众多配置和指标的合集,任何一个指标出现问题都可能导致系统运行缓慢。同时当前业务很多都存在于集群环境下,单个节点或者网络等瓶颈可能会造成整个集群的性能较差。
业界有非常多的性能分析小工具,专业分析系统各模块的性能,然而众多工具的使用不仅带来大量的学习成本、分析效率低下,更重要的是数据不能互通,无法系统化的全局分析。
在上述背景下,高效准确地进行性能分析、识别出应用运行过程中的性能瓶颈点并开展有针对性的优化措施成为了开发者面临的难题,系统性能分析工具从基础调优、系统调优、程序调优三个级别出发辅助解决这几个关键痛点,提升开发调优效率。
2. DevKit性能分析工具介绍
针对本章第1节中描述的性能调优难题,DevKit提供了系统性能分析工具。在通用调优方面从基础调优、系统调优、程序调优三个级别,逐步从浅到深协助开发者分析识别由易到难的性能问题,工具通过整合、去重、优化系统已有繁多的小工具实现数据采集与关联,并增加了特有的功能模块与分析方法论,此外针对大数据、数据库、HPC等场景提供了专项调优能力。工具具备如下优点:
(1)入门简单:按照指引和文档选择所需模块,仅需少数参数设置即可开展性能分析,用户无需耗费繁多工具的学习时间成本。
(2)性能指标完备:从系统配置、系统全局性能指标、程序级性能信息、专项场景性能信息等多个维度呈现任务报告,且多个工具间数据已经打通全局分析。
(3)报告数据科学合理:有丰富的表格、时序图、火焰图等要素,提升用户数据分析效率。
(4)提供典型调优指导:优化建议提供简洁直观的指导;社区案例,提供复杂场景调优参考。
3. 如何利用DevKit工具进行性能分析
针对本章第1节提到的问题,DevKit基于本章第2节介绍的性能分析工具提供了解决方案。用户可以根据当前问题分析的程度选取不同层次的功能模块进行使用。一般性能分析调优由浅入深的步骤分为:
a. 基础调优:获取环境、程序基础性能数据,明确性能瓶颈点位置
b. 系统调优:通过通用的系统调优能力和鲲鹏专项调优能力实现数据获取,并在系统层面完成调优
c. 程序调优:基于程序运行时指标,分析程序中的代码瓶颈点并进行优化
下面依次介绍这几个功能:
(1)基础调优样例
在性能问题定位初期,可以使用调优助手功能,初步识别性能瓶颈点位置。该功能系统化的采集OS、应用、硬件等各层配置和性能指标,并给出各个调优方向的引导,步骤及方法,辅助引导用户进行初步性能调优。
a. 系统配置功能主要固化了鲲鹏平台系统配置调优经验,通过选择业务类型给出对应需要调整的系统配置参数优化方法,参照优化指导即可完成调优动作
b. 热点函数功能主要基于函数运行数据给出鲲鹏平台加速库的优化建议以及通用热点函数优化建议
c. 系统性能功能主要获取操作系统CPU、内存、IO、网络等常规的四大维度性能数据并给出优化指导
d. 进程/线程性能主分析指标与建议与系统性能类似,更多的从进线程维度分析性能特征并给出优化指导
(2)系统调优样例
识别性能瓶颈点所在位置并完成系统配置级优化后,可以使用系统调优功能进一步选择性能瓶颈点对应的分析模块进行深层次的数据采集与分析。整体任务界面如下图所示:
以识别出性能问题在访存层面,内存访问存在跨NUMA问题做为假设前提,此时可使用鲲鹏专有的NUMA精细化功能进一步采集分析。获取当前系统内存NUMA访问矩阵,了解内存访问跨NUMA情况是否严重,并可以基于每个进程提供的绑核优化建议进行相关的调优操作。
(3)程序调优样例
通过系统级的性能调优,可以实现多数情况下程序运行时的性能提升,但是当开发者开发的源代码存在与架构强相关的逻辑或者代码实现本身存在性能问题,需要进一步源码级定位问题瓶颈时,就需要使用程序调优功能,具体步骤呈现于第2、3章节。
本章节介绍了DevKit性能分析工具提供基础调优、系统调优和程序调优三个功能样例,如果大家想深入了解DevKit开发套件,欢迎大家前往社区下载使用:https://www.hikunpeng.com/developer/devkit
接下来的章节将通过理论、实操的方式来讲解如何使用DevKit快速完成系统级性能分析调优以及程序级性能分析调优。