【系列三:DevKit性能分析工具】第一讲:鲲鹏性能分析工具介绍学习笔记

举报
Tianyi_Li 发表于 2022/11/27 22:07:30 2022/11/27
【摘要】 业界已经有非常丰富的系统性能分析工具,而鲲鹏性能分析工具的目标是在提供业界工具的能力之外,实现独特功能。

【系列三:DevKit性能分析工具】第一讲:鲲鹏性能分析工具介绍学习笔记

工具的目标

image.png

业界已经有非常丰富的系统性能分析工具,而鲲鹏性能分析工具的目标是在提供业界工具的能力之外,还实现几点独特功能:

  • 基于鲲鹏处理器,提供软硬件结合分析能力,采集和分析硬件性能指标,以及硬件性能在软件层的表现,让用户更加全面的了解整个系统的运行状况。

  • 系统化的分析建立各层指标之间的关联关系、并以用户视角呈现这些指标和关系方便用户更易于发现问题。

  • 结合华为在鲲鹏处理器上的性能优化经验,给出优化思路和建议,帮忙用户快速定位和修复问题。

  • 实现分析过程管理,例如:优化结果对比、优化效果标记、优化过程记录等。

image.png

工具的功能

image.png

工具的目标用户

image.png

软件架构

工具从软件逻辑上分成Analysis Server和Agent两大部分:

  • Analysis Server:主要作用是实现性能数据分析及分析结果呈现

  • Agent:主要作用是实现性能数据采集。

image.png

软件部署

部署方式

image.png

硬件/OS要求

image.png

功能原理

全景分析

image.png

全景分析原理

基于USE (utilization、saturation、errors)性能分析方法,获得系统资源(CPU、内存、I/0等)的使用率、饱和度、错误等指标,以此识别系统瓶颈。

  • 使用率:在规定的时间间隔内,资源用于服务工作的时间百分比。虽然资源繁忙但是资源还有能力接受更多的工作,不能接受更多工作的程度被视为饱和度。

  • 饱和度:资源不能在服务更多额外工作的程度,通常有等待队列。

  • 错误:错误事件的个数。

image.png

USE指标

image.png

CPU重点指标解读

image.png

内存重点指标解读

image.png

存储IO重点指标解读

image.png

网络IO重点指标解读

image.png

重点系统配置解读

image.png

进程/线程性能分析

image.png

具体分析指标:

image.png

重点指标分析解读:

image.png

性能影响:

1、在切换次教较多的情况下,很容易导题CPU将大量时间耗费在寄器、内核械以及拟内存等资源的保存和恢复上,进而大大编短了真工运行进程的时间。

2、切换后虚拟内存更新,TLB也需要刷新,内存的访问会勒之变侵,多处理盟系统上,缓存是被多个处理共享的,所以还会影响共享银存的具他处理器的进程,减少不必要的系统调用、中断,可以有效的降低进程上下文切换,提高进程性能。

热点函数分析

image.png

分析原理为基于cpucycles事件的数据进行分析:

  1. 热点函数和热点指令是基于CPU Cycle事件中断时的调用栈信息标识的。在一段时间内,某个函数的某个指令被采集的越多,就认为越热。
  2. 以调用栈信息反映调用关系,绘制火焰图;
  3. 反汇编目标文件获取汇编指令。
  4. 通过符号表和DEBUG信息关联源码;

image.png

举例说明如下:

image.png

微架构分析

image.png

基于鲲鹏处理器PMU(Performance Mntor Unit)事件,建立处的Top-Down模型,获得指在CPU流水线上的运行况,可以帮用户快速定位当前应用在CPU上的性能瓶颈,用户可以有针对性地修改自己的程序,以充分利用当前的硬件资源。

分析原理是根据一条指令在流水线上运行时,需要经过取指、译码、执行、回写等多个阶段,处理器在每个阶段都设定了一些PMU统计事件,通过采集这些事件,并结合一定模型,就可以表示出指令在CPU流水线上的运行情况。

image.png

基于最新的PMU采集逻辑,对各PMU数据梳理整合分析:

1、Retiring:指正常退休的指令数量;
2、BadSpeculation:反映了软件中测失败的比例,主要包括两个方面: 1)分支测失败2) machine clear。
3、Frontend Bound:反映前端prefetch,decode流程是否产生空槽
4、Backend Bound:代表的是CPU的如下指标1)运算/执行能力;2)资源数量3)访存能力。

举例分析如下:

image.png

访存分析

鲲鹏处理器是NUMA架构,并存在三级Cache机制,CPU核访问数据时,存在本地、跨片、跨带访问Cache和内存的情况。不同的访问路径,在时延和带宽上都相差很大,并严重影响系统和程序性能。

image.png

访存统计分析主要项目:

image.png

其主要原理为基于处理器的Core和Uncore事件统计CPU核访问Cache和DDR的性能数据分析对缓存和内存的访问次数命中率、带宽等情况。

image.png

这里主要介绍下Miss事件分析和伪内存分析。

Miss事件分析原理为基于ARM SPE(tatistical Profling Extension)能力实现。SP是针对指进行采样,同时记录一些触发事件的信息,包括精确的PC指针信息。利用该项能力可以用于对应用程序进行LLC Miss,TLB Mis,Remote Access,Long Latency Load等Miss类事件分析,并精确的关联到造成该事件的代码。相对于PMU事件,SPE可以解决PMU事件无法精确对应到PC指针的问题。

image.png

伪共享分析也是基于SPE能力实现。通过采样Load指令和store指令,并匹配他们在相同时间点对cacheline的的访问情况,如果存在同时读写写写同一个cacheline的情况,就可能发生伪共享。

image.png

image.png

对比,提出伪共享优化建议:

  1. 对于写的很频影的变量应该在自己独立的Cache line。可以据此进行对齐调整让它们不那么竞争,运行更快,也能让其它的共享了该Cache Line的变量不被拖慢。
  2. 跨越了多个Cache Line的热的Lock或Mutex,需要考虑Cache Line对齐的
  3. 读多写少的变量,可以将这些变量组合到相同或相邻的Cache Line。
  4. 一段代码,它不在某一行Cache Line上竞争严重,但是它却在很多Cache Line上党争,这样的代码段也需要优化。
  5. 多进程程序访问共享内存时,同样要关注Cache Line上竞争。

举例说明如下:

image.png

IO分析

image.png

其大体原理总结如下:

  • 在块设备层,通过ftrace工具跟踪内核的tracepoint事件,得到每个/0操作的全部信息。
  • 通过关联这些tracepoint事件,分析得到操作数据大小、操作时延等信息。针对一段时间内的/0操作进行统计分析,进一步得到数据块分布、操作时延分布、数据大小分布等等信息。
  • tracepoint事件只能反映到内核针对1/0的处理,而无法反映应用层的处理(非direct方式)。所以通过获取应用层1/0API调用信息,形成内核层与应用层处理的简单映射,指导应用层的优化,例如通过某个段时间的数据块分布是连续还是随机,优化对应应用层的I/o请求。
  • 支持获取自研盘内部性能数据。

image.png

举例分析如下:

image.png

资源调度分析

image.png

其原图展示如下图所示:

image.png

举例分析如下:

image.png

锁与等待分析

image.png

HPC场景

image.png

内存诊断

image.png

其原理介绍如下图所示:

image.png

此外,调优助手采集的数据覆盖OS、应用、硬件等系统各层的配置和性能指标,并根据硬件资源的消耗,来关联消耗这些硬件资源的软件信息,再从这些软件信息,来查看软件对其他的硬件资源的消耗,从而推断出性能瓶颈。将数据从应用消耗、物理消耗以及硬件关联在一起。可以用于系统性能、热点函数分析等等。

image.png

Java性能分析

image.png

总结

这次内容非常多,要好好看看,搞一搞。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。