微认证:鲲鹏软件性能调优实践
【摘要】 微认证:鲲鹏软件性能调优实践详解
基于硬件特性的性能调优方向
1. 基于硬件特性的性能调优方向
1.1 从冯诺依曼架构看性能调优方向
1.2 基于鲲鹏处理器的软加速和硬加速(CPU/内存)
-
编译器:基于鲲鹏芯片微架构,构建鲲鹏极致性能和完善生态
-
NUMA是CPU发展的一种必然趋势
- 在SMP系统中,核数的扩展收到内存总线的限制。非统一内存访问架构(Non-uniform memory access)很好的解决了这一问题
- 发挥NUMA性能,需要克服服内存访问速度不均匀的挑战 【内存在物理上是分布式的,不同的核访问不同内存的时间不同】
- NUMA-Aware亲和性资源规划,让内存访问最短路径 【利用CPU亲和性与内存分配策略,让进程与内存的距离更“短”】
- Nginx绑核优化举例(将Nginx进程分不到各个NUMA node之内,让系统整体的负载比较均衡,按照中断号将中断服务核Nginx绑定在一个NUMA内。性能将会有非常明显的提升)
- 在SMP系统中,核数的扩展收到内存总线的限制。非统一内存访问架构(Non-uniform memory access)很好的解决了这一问题
-
基于鲲鹏技术优势构建加速库,实现软硬加速互补
-
软硬加速库相结合,构筑鲲鹏高性能软件栈
-
调用鲲鹏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 鲲鹏社区:在线资源整合平台
- 鲲鹏社区访问地址:https://www.huaweicloud.com/kunpeng
5.2 鲲鹏小智:海量资源搜索,智能问答
- 智能小智访问路径:http://ic-openlabs.huawei.com/chat/
5.3 兼容性清单查询工具
5.4 访问入口信息
- 鲲鹏社区:https://www.huaweicloud.com/kunpeng
- 鲲鹏小智:http://ic-openlabs.huawei.com/chat/
- 鲲鹏开发套件
- Dependency Advisor:https://www.huaweicloud.com/kunpeng/software/dependencyadvisor.html
- Porting Advisor:https://www.huaweicloud.com/kunpeng/software/portingadvisor.html
- Tuning Kit:https://www.huaweicloud.com/kunpeng/software/tuningkit.html
- 兼容软件:http://ic-openlabs.huawei.com/openlab/#/unioncompaty
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)