微认证:鲲鹏软件性能调优实践

ruochen 发表于 2021/02/25 09:57:22 2021/02/25
【摘要】 微认证:鲲鹏软件性能调优实践详解

基于硬件特性的性能调优方向

1. 基于硬件特性的性能调优方向

1.1 从冯诺依曼架构看性能调优方向

1.2 基于鲲鹏处理器的软加速和硬加速(CPU/内存)

  • 编译器:基于鲲鹏芯片微架构,构建鲲鹏极致性能和完善生态

  • NUMA是CPU发展的一种必然趋势

    • 在SMP系统中,核数的扩展收到内存总线的限制。非统一内存访问架构(Non-uniform memory access)很好的解决了这一问题
    • 发挥NUMA性能,需要克服服内存访问速度不均匀的挑战 【内存在物理上是分布式的,不同的核访问不同内存的时间不同】
    • NUMA-Aware亲和性资源规划,让内存访问最短路径 【利用CPU亲和性与内存分配策略,让进程与内存的距离更“短”】
    • Nginx绑核优化举例(将Nginx进程分不到各个NUMA node之内,让系统整体的负载比较均衡,按照中断号将中断服务核Nginx绑定在一个NUMA内。性能将会有非常明显的提升)


  • 基于鲲鹏技术优势构建加速库,实现软硬加速互补

  • 软硬加速库相结合,构筑鲲鹏高性能软件栈


  • 调用鲲鹏RSA加密加速引擎,提升Web应用Https性能


1.2 文件系统决定了磁盘加载到内存过程的快慢(磁盘)

  • 磁盘预取可以充分利用磁盘带宽

    >适用于大数据读场景:Hibench测试spark,yarn-client模型,read_ahead_kb由128修改至4096,性能约提升10%

1.3 网卡中断产生频率会影响应用吞吐核延迟

  • 调用网卡中断聚合,在低时延和高吞吐取平衡点
  • 在数据库TPCC测试模型中降低网卡中断可以提升吞吐

    >降低网卡中断频率,可以带来约10%的吞吐提升,但也会增加20%左右的延迟

1.4 软件调优的本质是充分发挥硬件性能

  • 减少资源抢占,提升并行度,发挥多核性能优势

  • Tcmolloc通过减少内存分配中的锁以提升高并发下的性能
  • Mysql5.7.12内存对齐硬编码,导致伪共享

1.6 性能调优十板斧

2. MariaDB性能调优案例

  • 性能调优三步法

2.1 MariaDB性能调优——监控

测试模型sysbench压测Maria DB10.3.8数据库,OLTP模型1:1读写

2.2 MariaDB性能调优——分析

  • 当CPU是业务的性能瓶颈时,可以通过分析进程热点函数来寻找优化空间
  • 对于本测试用例中的热点函数分析如下:随着并发线程数的增多,CPU的时间片集中在了锁的争抢中,这部分无用功造成了CPU资源的浪费

2.3 MariaDB性能调优——优化

3. 自研套件&开源工具

3.1 分析扫描工具(Dependency Advisor):提升软件移植分析效率和准确率

  • 功能:分析移植软件包依赖库,评估可移植性;分析移植软件代码文件

3.2 代码迁移工具(Porting Advisor):准确定位代码修改点及修改指导

  • 功能:分析软件源文件,提供代码移植指导报告

3.3 性能优化工具Tuning Kit:提升鲲鹏性能竞争力

  • 功能:系统性能数据采集和分析,分析出系统性能指标,定位到瓶颈点及热点函数,给出调优建议

4. 性能优化工具Tuning Kit:提升鲲鹏性能竞争力

  • 功能:软件运行状态下,通过采集系统数据,分析出系统性能指标,定位到系统瓶颈点或热点函数,给出调优建议
  • 应用场景:客户软件在鲲鹏计算平台上运行时遇到性能或体验问题时,可用该工具来快速分析、定位及调优
  • 解决痛点:解决客户软件运行遇到性能问题时凭人工经验定位困难、调优能力弱的痛点

华为鲲鹏性能优化工具是一个工具集,包含工具:系统性能优化工具、Java性能优化工具
系统性能优化工具为软件开发人员、系统管理员/POC人员提供两种维度的性能优化视角

4.1 性能优化工具(Tuning Kit):软件实现

  • 系统性能优化工具从软件逻辑上分成 Analysis Server 和 Agent 两大部分
    • Analysis Server:主要作用是实现性能数据分析及分析结果呈现
    • Agent:主要作用是实现性能数据采集

4.2 性能优化工具(Tuning Kit):功能特性

  • 系统级分析,包括:全景分析、系统资源调度分析和访存分析
  • 进程级分析,包括:进行/线程性能分析、锁与等待分析
  • 函数级分析,包括:C/C++程序分析、Java Mixed-Mode 分析
  • 底层架构分析,包括:微架构分析,Miss事件分析

4.2.1 性能优化工具(Tuning Kit):系统级分析

  • 系统级性能分析定义为针对整个系统进行性能分析,包括发生在所有的硬件组件、整个软件栈和数据路径上的事件,这些事件都有可能影响性能。系统级性能分析包含以下功能:

4.2.2 性能优化工具(Tuning Kit):系统级分析(全景分析)




4.2.3 性能优化工具(Tuning Kit):底层架构级分析

  • 底层架构级分析定义为采集整个系统(包括运行中的进程或直接启动的进程)的硬件PMU性能事件,然后按照CPU微架构的特点划分为不同层级及关键指标,提供用户快速定位当前应用在CPU上或者uncore上的性能瓶颈,更加方便地针对性地修改自己的程序,以充分利用当前的硬件资源

4.2.4 性能优化工具(Tuning Kit):底层架构级分析(微架构分析)


4.2.5 性能优化工具(Tuning Kit):函数级分析

  • 函数级性能分析定义为采集整个系统或指定进程(包括运行中的进程或直接启动的进程)的CPU Cycles性能事件,快速定位到热点函数,包括应用程序函数、模块函数与内核函数,以及能够定位到热点指令

4.2.6 性能优化工具(Tuning Kit):函数级分析(C/C++程序分析案例)




5. 求助渠道&兼容性清单

5.1 鲲鹏社区:在线资源整合平台

5.2 鲲鹏小智:海量资源搜索,智能问答

5.3 兼容性清单查询工具

5.4 访问入口信息

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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