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

工具介绍

当前开发套件支持的工具如下表。

表1 开发套件支持工具

工具

说明

应用迁移工具

支持x86 Linux软件迁移到鲲鹏Linux上的扫描、分析与迁移。

亲和分析工具

支持鲲鹏920平台软件代码质量检查,提升代码质量、优化访存性能。

应用开发工具

利用鲲鹏平台各类算力及高性能组件帮助开发者高效开发鲲鹏应用,仅支持在IDE端使用。

编译调试工具

支持鲲鹏平台远程编译调试能力,通过可视化界面提升编译效率,仅支持在IDE端使用。

系统性能分析工具

提供系统多场景性能采集和分析能力,并基于调优系统给出优化建议。

Java性能分析工具

针对运行在鲲鹏服务器的Java程序进行性能优化的分析和优化。

系统诊断工具

快速定位和诊断各部件异常,并识别源码中内存使用的问题点。

应用迁移工具

鲲鹏应用迁移工具可以简化应用迁移的过程,支持将x86 Linux软件迁移到鲲鹏Linux上的扫描、分析与迁移。通过该工具能够自动分析并输出指导报告,极大提高了代码迁移效率。

鲲鹏应用迁移工具支持的功能特性如下:

表2 应用迁移工具支持的功能特性

功能

描述

软件迁移评估

  • 检查用户软件包(RPM、DEB、TAR、ZIP、GZIP等文件)中包含的SO(Shared Object)依赖库和可执行文件,并评估SO依赖库和可执行文件的可迁移性。
  • 检查用户Java类软件包(JAR、WAR、EAR)中包含的SO依赖库和二进制文件,并评估SO依赖库和二进制文件的可迁移性。
  • 检查指定的用户软件安装路径下的SO依赖库和可执行文件,并评估SO依赖库和可执行文件的可迁移性。

源码迁移

  • 检查用户C/C++/ASM/Fortran/Go软件构建工程文件,并指导用户如何迁移该文件。
  • 检查用户C/C++/Fortran/Go/解释型语言软件构建工程文件使用的链接库,并提供可迁移性信息。
  • 检查用户C/C++/ASM/Fortran/Go/解释型语言软件源码,并指导用户如何迁移源文件。其中,Fortran源码支持从Intel Fortran编译器迁移到GCC Fortran编译器,并进行编译器支持特性、语法扩展的检查。
  • 检查用户Python/Java/Scala程序通过ctypes模块加载的SO文件的兼容性。
  • x86汇编指令转换,分析部分x86汇编指令,并转换成功能对等的鲲鹏汇编指令。

软件包重构

在鲲鹏平台上,分析待迁移软件包构成,重构并生成鲲鹏平台兼容的软件包,或直接提供已迁移的软件包。

专项软件迁移

在鲲鹏平台上,对部分常用的解决方案专项软件源码,进行自动化迁移修改、编译并构建生成鲲鹏平台兼容的软件包。

亲和分析工具

亲和分析支持软件代码质量检查,提升代码质量、优化访存性能,亲和分析工具仅支持基于鲲鹏920的鲲鹏平台。亲和分析工具支持的功能特性如下:

表3 亲和分析工具支持的功能特性

功能

描述

64位运行模式检查

64位运行模式检查是将原32位平台上的软件迁移到64位平台上,进行迁移检查并给出修改建议。

字节对齐检查

结构体字节对齐检查是在需要考虑字节对齐时,检查源码中结构体类型变量的字节对齐情况。

缓存行对齐检查

缓存行对齐检查是对C/C++源码中结构体变量进行128字节对齐检查,提升访存性能。

内存一致性静态检查

内存一致性静态检查就是检查源码迁移在鲲鹏平台运行时可能存在的内存一致性问题,并提供插入内存屏障的建议。

向量化检查

向量化检查功能用于对可向量化源码片段进行检查,并提供向量化修改建议。

矩阵化检查

矩阵化检查功能用于对可矩阵化源码片段进行检查,并提供矩阵化修改建议。

构建亲和

构建亲和功能用于分析makefileCMakeLists.txt中可以替换鲲鹏加速库的内容,并提供替换建议和功能修复。

计算精度分析

精度分析工具应用函数插桩后,分别在x86平台和鲲鹏平台运行,最终通过对比输出结果,分析平台计算精度差异。

应用开发工具

鲲鹏应用开发工具支持创建鲲鹏应用工程,能够扫描代码文件中可使用鲲鹏加速库优化后的函数或汇编指令,生成可视化报告;支持C/C++开发语言,编码时能够自动匹配鲲鹏加速库函数字典、智能提示、高亮、联想字典中可以替换的库和函数。

鲲鹏应用开发工具支持的功能特性如下。

表4 鲲鹏应用开发工具支持的功能特性

功能

描述

通用计算应用

鲲鹏应用开发工具提供鲲鹏通用计算SDK,创建通用计算应用工程以支持基础应用开发,包含加速库应用、硬件加速应用以及同构加速框架应用。

安全计算应用

鲲鹏应用开发工具能自动化创建安全计算GP工程和高级语言工程,改造已有Java/Python工程,支持部署SDK、检查编译环境等。

高性能计算应用

基于高性能通信库和数学库创建高性能计算应用,用户能够通过扩展工程样例,提升开发效率。

DPAK应用

鲲鹏应用开发工具能自动化创建DPAK工程并提供鲲鹏DPAK SDK,鲲鹏DPAK提供面向Smart NIC场景的业务卸载能力,支持网络卸载、虚拟化卸载等场景。

字典管理

鲲鹏应用开发工具可导入本地字典文件。

编程辅助

支持鲲鹏加速库函数的悬浮提示、函数搜索,支持编码时自动联想和高亮鲲鹏加速库优化后的相关函数。

编译调试工具

鲲鹏编译调试工具能一键式部署鲲鹏编译器,支持单机下NVIDIA GPU应用调试能力,通过统一调试界面调试GPU应用,实现CUDA-GDB调试能力;支持HPC场景多节点应用并行调试能力以及鲲鹏平台远程编译调试能力。

表5 鲲鹏编译调试工具支持的功能特性

功能

描述

部署编译器

支持一键式部署GCC for openEuler毕昇JDK毕昇编译器

通用编译

通用编译提供最基础的远程编译能力,可视化配置编译参数,一键式编译且编译过程信息实时展示。

自动反馈优化编译

自动反馈优化是一种可简化PGO部署流程的一种技术,主要思想是通过采样方式收集程序的运行信息,间接得到程序的执行情况,简化了PGO的部署流程。

通用应用调试

通用应用调试提供鲲鹏平台远程调试能力,提供图形化界面,大幅提升调试效率。

HPC并行应用调试

编译调试工具提供HPC场景多节点并行调试能力,仅支持以Launch模式调试MPI应用。并行计算包含任务并行和数据并行,指每个节点执行不同的任务或每个节点存储不同的数据,目前HPC并行任务只支持CPU调试。

CUDA应用调试

编译调试工具支持鲲鹏平台调试NVIDIA CUDA程序,通过统一的调试界面使用CUDA-GDB调试GPU应用。

安全应用调试

在应用开发工具中创建Java或Python工程后,进入编译调试工具会生成一个通用编译任务和一个安全应用调试任务,可根据实际情况进行编译运行,用户也可自行创建安全应用调试任务。

系统性能分析工具

系统性能分析是针对基于鲲鹏服务器的性能分析工具,能收集服务器的处理器硬件、操作系统、进程/线程、函数等各层次的性能数据,分析出系统性能指标,定位到系统瓶颈点及热点函数,给出优化建议。该工具可以辅助用户快速定位和处理软件性能问题,不支持x86环境。

调优助手是针对基于鲲鹏服务器的调优工具,能系统化组织性能指标,引导用户分析性能瓶颈,实现快速调优。

表6 功能特性

任务分类

描述

调优助手

调优助手通过系统化组织和分析性能指标、热点函数、系统配置等信息,形成系统资源消耗链条,引导用户根据优化路径分析性能瓶颈,并针对每条优化路径给出优化建议和操作指导,以此实现快速调优。

对比分析

支持对同一种类型分析任务的结果,选择同一节点或者不同节点间进行比较,从而快速获得不同分析结果之间的差别,定位性能指标的变化,快速识别优化手段的效果。

HPC集群检查

通过对用户指定的MPI集群进行硬件、软件配置检查,并给出集群中各节点软硬件配置的一致度报告。检查对象支持硬件领域的CPU、GPU、互联、内存、网卡、磁盘,软件领域中的OS、Kernel、环境变量、MPI、OpenMP、HPC常用依赖库等维度。 对于不符合鲲鹏平台最佳实践的配置,工具会给出优化建议。

HPC应用分析

HPC应用分析通过采集系统的PMU事件并配合采集面向OpenMP和MPI应用的关键指标,从而帮助用户精准获得Parallel region及Barrier-to-Barrier的串行及并行时间,校准的L2层微架构指标,指令分布及L3的利用率和内存带宽等信息。

全景分析

通过采集系统软硬件配置信息,以及系统CPU、内存、存储IO、网络IO资源的运行情况,获得对应的使用率、饱和度、错误次数等指标,以此识别系统性能瓶颈。针对部分系统指标项,根据当前已有的基准值和优化经验提供优化建议。

针对大数据场景、数据库场景和分布式存储场景的硬件配置、系统配置和组件配置进行检查并显示不是最优的配置项,同时分析给出典型硬件配置及软件版本信息。

微架构分析

基于ARM PMU(Performance Monitor Unit)事件,获得指令在CPU流水线上的运行情况,可以帮助用户快速定位当前应用在CPU上的性能瓶颈,用户可以有针对性地修改自己的程序,以充分利用当前的硬件资源。

访存分析

基于CPU访问缓存和内存的事件,分析访存过程中可能的性能瓶颈,给出造成这些性能问题的可能原因及优化建议。
  1. 访存统计分析

    基于处理器访问缓存和内存的PMU事件,分析存储的访问次数、命中率、带宽等情况,具体包括:

    • 分析L1C、L2C、L3C、TLB的访问命中率和带宽。
    • 分析HHA访问速率。
    • 分析DDR的访问带宽和次数。
  2. Miss事件分析

    基于ARM SPE(Statistical Profiling Extension)能力实现。SPE针对指令进行采样,同时记录一些触发事件的信息,包括精确的PC指针信息。利用SPE能力可以用于业务进行LLC Miss,TLB Miss,Remote Access,Long Latency Load等Miss类事件分析,并精确的关联到造成该事件的代码。基于这些信息,用户便可以有针对性地修改自己的程序,降低发生对应事件发生的几率,提高程序处理性能。

  3. 伪共享分析

    基于ARM SPE(Statistical Profiling Extension)能力实现。SPE针对指令进行采样,同时记录一些触发事件的信息,包括精确的PC指针信息。利用SPE能力可以用于业务进行伪共享分析,得到发生伪共享的次数和比例、指令地址和代码行号、NUMA节点等信息。基于这些信息,用户便可以有针对性地修改自己的程序,降低发生伪共享的几率,提高程序处理性能。

  4. NUMA精细化分析

    基于ARM SPE(Statistical Profiling Extension)能力实现。SPE针对指令进行采样,同时记录一些触发事件的信息,包括精确的PC指针信息。利用SPE能力可以用于收集系统中所有进程的NUMA性能,找到Top N (e.g. N = 10) NUMA性能最差的进程及这些进程中的内存热区,各NUMA节点间内存访问统计矩阵,识别节点间内存访问不平衡状态,并得到相关优化建议。

I/O分析

分析存储IO性能。以存储块设备为分析对象,分析得出块设备的I/O操作次数、I/O数据大小、I/O队列深度、I/O操作时延等性能数据,并关联到造成这些I/O性能数据的具体I/O操作事件、进程/线程、调用栈、应用层I/O APIs等信息。根据I/O性能数据分析给出进一步优化建议。

进程/线程性能分析

采集进程/线程对CPU、内存、存储IO等资源的消耗情况,获得对应的使用率、饱和度、错误次数等指标,以此识别进程/线程性能瓶颈。针对部分指标项,根据当前已有的基准值和优化经验提供优化建议。针对单个进程,还支持分析它的系统调用情况。

资源调度分析

基于CPU调度事件分析系统资源调度情况,主要包括:

  1. 分析CPU核在各个时间点的运行状态,如:Idle、Running,以及各种状态的时长比例。
  2. 分析进程/线程在各个时间点的运行状态,如:Wait、Schedule和Running,以及各种状态的时长比例。
  3. 分析进程/线程切换情况,包括:切换次数、平均调度延迟时间、最小调度延迟时间和最大延迟时间点。
  4. 分析各个进程/线程在不同NUMA节点之间的切换次数。如果切换次数大于基准值,能给出绑核优化建议。

热点函数分析

分析C/C++程序代码,找出性能瓶颈点,获得对应的热点函数,支持通过火焰图展示函数的调用关系,给出优化路径。

锁与等待分析

分析glibc和开源软件(如MySQL、OpenMP)的锁与等待函数(包括sleep、usleep、mutex、cond、spinlock、rwlock、semaphore等),关联到其归属的进程和调用点,并根据当前已有的优化经验给出优化建议。

AI调优分析

使用自研高性能AI调优方案,通过用户自主选择测试用例,对数据库和大数据场景进行自动优化,自动调优后给予最优参数配置,提供复杂场景下参数配置的优化建议。

Java性能分析工具

Java性能分析是针对基于鲲鹏的服务器上运行的Java程序的性能分析和优化工具,能图形化显示Java程序的堆、线程、锁、垃圾回收等信息,收集热点函数、定位程序瓶颈点,帮助用户采取针对性优化。

表7 功能特性

任务分类

描述

在线分析

在线分析包含对于目标JVM和Java程序的双重分析。包括Java虚拟机的内部状态如Heap,GC活动,线程状态及上层Java程序的性能分析,如调用链分析,热点函数,锁分析,程序线程状态及对象生成分布等。通过Agent的方式在线获取JVM运行数据,进行精确分析。

主要分析结果包含:

  1. 概览
    • 在线显示Java虚拟机系统状态。
    • 在线显示JVM的Heap大小、GC活动、Thread数量、Class加载数量和CPU使用率。
  2. 线程信息

    获取当前JVM中实时的活动线程状态和当前线程转储,图形化显示线程锁定状态,分析线程死锁情况。

  3. 内存信息
    • 通过抓取堆快照,分析应用在某时刻堆的直方图分布和支配调用关系,追溯堆内存中各Java存活对象到GC root的引用关系链,帮助定位潜在的内存问题;对比分析不同时刻的堆快照,给出堆使用与分配变化,辅助用户发现堆内存在分配和使用过程中的异常情况。
    • 获取Java堆中各个对象创建的数量及大小,显示相关内存使用情况并实时刷新。
  4. 热点信息

    通过工具分析的热点方法,热点方法以倒火焰图形式呈现,不同层(如Java调用层、JNI层、Native层、内核层等)的热点方法以不同颜色区分。通过工具展开查看Java方法对应的字节码(非必须)、经JVM JIT编译器生成的机器指令,并查看这些指令的热点分布;对于不能查看的字节码的情形需要给出原因。对给定的入口方法进行调用链采集,收集采集期间的方法调用关系,方法耗时等数据并以树形式展现。

  5. GC信息

    用户可以在线统计分析目标JVM进程中发生的GC事件,分析GC原因、GC阶段分布、GC内存回收效果、GC暂停等因素,以定位潜在的GC相关的内存问题、性能瓶颈问题。

  6. IO信息

    在线分析应用中的文件IO、Socket IO时延、消耗带宽等数据,找出热点IO操作。

  7. 数据库信息
    • 监测和分析数据库连接池。监测数据库连接池连接的情况、帮助用户定位潜在的连接泄露,对不合适的连接池配置给出优化建议。
    • 分析JDBC热点SQL操作。记录应用中的SQL调用时间、耗时和堆栈跟踪,帮助用户定位耗时最长的热点SQL操作。
    • 分析NoSQL热点操作。记录应用中访问/操作NoSQL数据库调用时间、耗时和堆栈跟踪,帮助用户定位耗时最长的热点NoSQL操作。
  8. HTTP信息

    记录应用中的HTTP请求时间和耗时,找出热点HTTP请求。

  9. 快照信息

    支持在堆、IO、Workload在线分析过程中生成快照,对快照进行比对,辅助用户发现资源、业务相关指标的变化趋势,定位潜在的资源泄露问题或性能指标恶化问题。

采样分析

通过采样的方式,收集JVM的内部活动/性能事件,通过录制及回放的方式来进行离线分析。这种方式对系统的额外开销很小,对业务影响不大,适用于大型的Java程序。

主要分析结果包括:

  1. 概览
    • 显示Java虚拟机系统状态。
    • 通过采样及回放的方式显示JVM的Heap使用情况、GC活动、IO消耗和CPU使用率。
  2. 线程转储及锁分析结果
    • 分析程序线程状态及锁。获取采样时间内的线程的状态变化和当前线程转储,根据线程转储图形化地显示线程锁定状态,分析线程死锁情况。
    • 分析估计线程阻塞对象和阻塞时间。
  3. 方法采样分析结果
    • 分析Java及native代码中热点函数CPU Cycles的占比及定位。
    • 支持通过火焰图查看热点函数及其调用栈。
  4. 内存分析结果
    • Java对象在Heap中的分配情况,快速定位消耗Heap最多或数量分配最多的对象,发现潜在问题;通过堆栈追踪定位潜在的内存问题。
    • 通过对存留周期长的Java对象进行采样分析,发现潜在的堆内存泄漏点,定位潜在堆内存泄露问题。
  5. GC分析结果

    用户查看Java的GC配置,Heap大小变化以及GC事件发生情况。通过观察Heap变化,GC活动频率和暂停时间,分析和调整当前的GC策略。

  6. IO分析结果

    用户可分析目标Java应用中关于文件读写、Socket流量使用情况,以发现IO使用瓶颈;分析应用对文件的读写统计信息: 读写路径、读/写频次、读/写速率、读/写总量、堆栈跟踪(可配)及随时间变化图。

系统诊断工具

表8 任务描述

任务分类

描述

内存使用诊断

分析应用程序存在的内存泄漏点(包括内存未释放和异常释放),得出具体的泄漏信息,并支持关联出调用栈信息和源码。

内存越界诊断

分析应用程序的内存异常访问点,给出异常访问类型和内存访问信息,并支持关联出调用栈和源码。

网络IO诊断

压测网络,获得网络最大能力,为网络IO性能优化提供基础参考数据;诊断网络,定位网络疑难问题,解决因网络配置和异常而导致的网络IO性能问题。具体包括:网络拨测、丢包诊断(RDMA暂不支持)、网络抓包(RDMA暂不支持)、系统负载监控。实现网络数据流统计功能,对IPv4/IPv6协议簇中UDPTCP协议数据流、RDMA RoCEv2、IB数据流进行分析,统计不同阶段数据流在不同处理核上执行的情况。

存储IO诊断

压测存储IO,获得存储设备最大能力,为存储IO性能优化提供基础参考数据。支持存储IO压测,获得存储IO最大能力,包括:吞吐量、IOPS、时延。