系统性能分析是针对基于鲲鹏的服务器的性能分析工具,能收集服务器的处理器硬件、操作系统、进程/线程、函数等各层次的性能数据,分析出系统性能指标,定位到系统瓶颈点及热点函数,给出优化建议。该工具可以辅助用户快速定位和处理软件性能问题。
表1 任务描述任务分类
|
描述
|
对比分析
|
支持对同一种类型分析任务的结果,选择同一节点或者不同节点间进行比较,从而快速获得不同分析结果之间的差别,定位性能指标的变化,快速识别优化手段的效果。
|
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访问缓存和内存的事件,分析访存过程中可能的性能瓶颈,给出造成这些性能问题的可能原因及优化建议。 - 访存统计分析
基于处理器访问缓存和内存的PMU事件,分析存储的访问次数、命中率等情况,具体包括:
- 分析L1C、L2C、L3C、TLB的访问命中率和带宽。
- 分析HHA访问速率。
- 分析DDR的访问带宽和次数。
- Miss事件分析
基于ARM SPE(Statistical Profiling Extension)能力实现。SPE针对指令进行采样,同时记录一些触发事件的信息,包括精确的PC指针信息。利用SPE能力可以用于业务进行LLC Miss,TLB Miss,Remote Access,Long Latency Load等Miss类事件分析,并精确的关联到造成该事件的代码。基于这些信息,用户便可以有针对性地修改自己的程序,降低发生对应事件发生的几率,提高程序处理性能。
- 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性能数据分析给出进一步优化建议。
|
资源调度分析
|
采集进程/线程的运行情况,获得对应的冷火焰图、链路切换次数和全局占比等指标,以此识别性能瓶颈。支持分析单个进程的系统调用情况。
|
热点函数分析
|
分析C/C++程序代码,找出性能瓶颈点,获得对应的热点函数,支持通过火焰图展示函数的调用关系,给出优化路径。
|
锁与等待分析
|
分析glibc和开源软件(如MySQL、OpenMP)的锁与等待函数(包括sleep、usleep、mutex、cond、spinlock、rwlock、semaphore等),关联到其归属的进程和调用点,并根据当前已有的优化经验给出优化建议。
|
Roofline分析
|
帮助用户在给定硬件平台上,分析出应用程序的瓶颈点位置,从而有针对性的进行优化。
|
使用限制
表2 使用限制任务分类
|
描述
|
对比分析
|
支持全景分析、热点函数分析和Roofline分析。
|
HPC集群检查
|
MPI集群各节点需已配置免密,对于不符合鲲鹏平台最佳实践的配置,工具会给出优化建议。
|
HPC应用分析
|
采集OpenMP数据时,将开启内核参数/proc/sys/kernel/kptr_restrict和/proc/sys/kernel/perf_event_paranoid,以便采集call graph数据和PMU事件;当采集结束后会将内核参数恢复原值。
|
微架构分析
|
以下修改需具有root权限。
- 如果Paranoid配置不符,请将Paranoid变量更改为-1,CentOS及openEuler系统可使用以下命令:
| echo -1 > /proc/sys/kernel/perf_event_paranoid
|
- 如果显示“任务采集失败,操作系统性能监视器未开启。”,可使用命令开启系统性能监视器。
| echo 0 > /proc/sys/kernel/nmi_watchdog
|
|
访存分析
|
支持openEuler(内核版本为4.19及以上)、CentOS 7.6(内核版本为4.14.0-115.el7a.0.1/4.14.0-115.2.2.el7a/4.14.0-115.5.1.el7a/4.14.0-115.6.1.el7a/4.14.0-115.7.1.el7a/4.14.0-115.8.2.el7a/4.14.0-115.10.1.el7a)操作系统,并且配置SPE(Statistical Profiling Extension)环境。
- Miss事件分析
Miss事件统计暂不支持虚拟机和容器环境。
- NUMA精细化分析
NUMA精细化分析暂不支持虚拟机环境。
|
I/O分析
|
系统内核需要支持ftrace采集。
|
资源调度分析
|
建议使用4.19及其以上内核版本的操作系统运行资源调度分析任务。
|
Roofline分析
|
环境配置/proc/sys/kernel/perf_event_paranoid的值小于等于0。
|
锁与等待分析
|
环境需支持eBPF(extended Berkeley Packet Filter)配置。
|