深入理解基于鲲鹏处理器的极致性能优化
架构师技术联盟
共 7359字,需浏览 15分钟
·
2024-07-13 15:21
更多内容请参考“鲲鹏CPU软件性能调优(精编版)”,从硬件特点分析如何进行性能调优,同时还介绍了项目中性能调优的思路和常用性能采集工具。“终极版:服务器基础知识全解(182页PPT)”和“2024中国服务器CPU行业概览:信创带动服务器CPU国产化”。
鲲鹏处理器为核心的华为TaiShan服务器在国产服务器中可以说是名列前茅的。不仅仅是其高效的处理性能,还有针对鲲鹏处理器进行深度优化的原生应用以及不断壮大的共建鲲鹏社区。下面以鲲鹏处理器的软硬件性能优化为例,深入理解更为底层的技术方案。
以一个4800*4800矩阵乘法为例阐述性能调优的重要性
从冯诺依曼架构看性能调优
基于鲲鹏处理器的软硬加速能力概览
-
指令布局优化:拆分函数代码,按照冷热指令重新排序,提升指令Cache命中率 -
内存布局优化:按照内存数据访问频度,组合热数据区域,提升数据Cache命中率 -
循环优化:分析循环迭代间数据访存依赖关系,对无依赖的循环并行到多核执行,无依赖的数据自动矢量化计算,加速程序运行。
-
JIT编译优化,GC内存回收管理优化提升内存管理性能 -
JVM循环、向量化、序列化技术,提升程序执行性能
具体来说,可通过如下三种方式实现NUMA绑核配置方法:
-
使用系统工具numactl设置:numactl -C 0-15 process name -C: Core scope -
在代码中调用亲和性设置参数:int sched_setaffinity(pid_t pid, size_t cpusetsize, cpu_set_t*mask) -
多数开源软件中提供了配置接口:nginx中可在其配置文件nginx.conf中调整worker_cpu_affinity参数
优化磁盘与网卡,给鲲鹏处理器一个更好的运行环境
通过应用调优充分发挥硬件性能
鲲鹏性能调优十板斧
-
调整内存页大小 -
CPU预取 -
修改线程调度策略
-
脏数据刷新 -
异步文件操作(libaio) -
文件系统参数
-
网卡多队列 -
开启网卡TSO -
开启网卡CSUM
-
优化编译选项 -
文件缓存机制 -
缓存执行结果 -
NENO指令加速
以MariaDB为例看性能调优流程
-
innodb_thread_concurrency:控制并发线程数,默认值0表示,不限制并发 -
innodb_sync_spin_loops:减少原子操作轮休次数 -
innodb_spin_wait_delay:增加原子操作轮休间隔时间
总结
-
CPU/内存、磁盘、网卡、应用,是我们性能调优的四个主要方向 -
采集性能指标、分析性能瓶颈、优化相关参数代码,是调优的基本思路 -
充分利用硬件资源才能发挥软件的最优性能 -
时延、吞吐、并发需要寻找一个均衡点
CPU技术篇
温馨提示:
扫描二维码关注公众号,点击阅读原文链接获取“架构师技术全店资料打包汇总(全)”电子书资料详情。
评论