7 月 25 日,「鲲鹏应用创新大赛 2020」重庆赛区宣讲会在重庆市海王星科技大厦智酷沙龙顺利召开,共 300 余人参与了本次宣讲活动。
现场实况
鲲鹏计算产业生态重庆中心副总经理马渊首先对活动进行了精彩的致辞,并对「鲲鹏应用创新大赛 2020」作了详细的介绍。
鲲鹏计算产业生态重庆中心副总经理马渊
「鲲鹏应用创新大赛 2020」已于 7 月 1 日正式启动,大赛总奖金池达 500 万,本次赛事共设有数字政府创新解决方案、金融行业创新解决方案、大数据创新解决方案、ARM 原生创新应用、开放赛题、openEuler 商业应用迁移和 openEuler 开源系统迁移 7 大赛题,含北京、重庆、福建、广州、广西、河南、湖南、江苏、陕西、深圳、四川、天津、浙江在内的 13 个区域赛区和 1 个全国综合赛区。
重庆区域赛由华为公司、中软国际和鲲鹏重庆生态创新中心联手举办,主要面向重庆 ICT 行业企业从业人员,旨在培养鲲鹏产业发展所需的基于鲲鹏生态的软件适配、迁移、软件开发、解决方案孵化等研发能力,力求加速构建以鲲鹏为底座覆盖全产业链的千亿级计算产业。
马渊还向大家详细介绍了本次鲲鹏应用创新大赛重庆赛区的赛程、组队要求、参赛要求、奖项设置等内容。重庆赛区自 7 月 10 号起接受报名,8 月 15 日截止提交方案,选手可以从数字政府创新解决方案、金融行业创新解决方案、大数据创新解决方案、ARM 原生创新应用或开放赛题中择一参赛。重庆赛区就数字政府创新解决方案、金融行业创新解决方案、开放命题设置金奖、银奖、铜奖各一名,优秀个人奖 15 名,本场区域赛中的优胜队伍更有机会参与到全国总决赛的角逐之中。
本次大赛中,所有参赛队伍必须基于鲲鹏计算技术构建产品与解决方案,鲲鹏社区将提供完整的软件资源技术支持、产品方案和学习认证以及超过 50 门的在线培训课程,来自华为的技术专家也将全程跟踪,为参赛者答疑解惑。在本次重庆赛区宣讲会上,华为鲲鹏计算软件迁移工程师钟海鹏就鲲鹏软件性能调优、工具套件与技术支持以及软件迁移实战案例进行了介绍,让广大开发者和参赛者对鲲鹏计算技术和生态有了更为具体的了解。
华为鲲鹏计算软件迁移工程师钟海鹏
钟海鹏对鲲鹏软件性能调优作了详细介绍,从硬件特点分析了如何进行性能调优,并介绍了项目中性能调优的思路以及常用的性能采集工具。
钟海鹏首先列出了 Python、C、C 语言多线程并行运算、C 语言并行运算和高效缓存优化以及 NEON 向量指令分别对 4800*4800 矩阵乘法加速效果的实测结果,从该结果中可以看出通过软硬协同的方式能够带来上万倍的代码性能提升。根据这一结论,从冯诺依曼架构来看,性能调优可以有四大方向:CPU/内存,磁盘,网卡,应用。
CPU/内存
基于鲲鹏处理器可进行软加速和硬加速,软加速包含单核加速场景下基于鲲鹏芯片微架构进行的编译优化和多核加速场景下进行的 NUMA-Aware 亲和性优化,硬加速则已硬件加速引擎为代表。编译优化又分为编译器性能优化和 JDK 性能优化,通过编译器性能优化,能实现提升指令 Cache 命中率、提升数据 Cache 命中率、加速程序运行等效果,经过 JDK 性能优化,能够实现内存管理和程序执行等性能的提升。NUMA 的出现很好地解决了在 SMP 系统中核数扩展受内存总线限制的问题,NUMA-Aware 亲和性资源规划让内存能够访问最短路径,有效克服了内存访问速度不均匀的问题,最大可能的发挥了 NUMA 性能 。在硬加速方面,鲲鹏基于其技术优势,针对四类业务提供了 9 大加速库,实现软硬加速上的互补,在各类典型场景中能够达到 10%~100%的性能提升。
磁盘
要将信息从本地磁盘或者网络存储中读入内存,必须经过文件系统,也就是说磁盘加载到内存过程的速度是由文件系统决定的。要在磁盘上实现性能调优,可以通过开启磁盘预取来充分利用磁盘带宽,从而实现磁盘加载到内存这一过程中速度的有效提升。这一优化适用于大数据中的读场景,在开启磁盘预取后,Hibench 测试 spark,yarn-client 模型,将 read_ahead_kb 由 128 修改至 4096 后,性能提升了约 10%。
网卡
网卡中断产生的频率会影响应用的吞吐和延迟,中段产生的频率过高会消耗大量的 CPU 时间片,终端产生的频率过低则会影响应用收到的数据的时延,也就是说低中断就伴随着高吞吐,低时延则伴随着高中断。在数据库 TPCC 测试模型中降低网卡中断可以提升吞吐,结果显示,通过降低网卡中断频率可以带来约 10%的吞吐提升,但同时会造成 20%左右的延迟。因此要在网卡上做出调整实现性能优化,就需要对网卡中断聚合进行调整,在低时延和高吞吐中找寻一个平衡点。
应用
软件调优的本质是充分发挥硬件的性能。在应用层面,通过推进无锁编程、大锁变小锁、原子操作指令等方式的应用,减少资源抢占,提升并度,在 Cache 中也可采取减小 CacheLine 的大小、分别放置读写频繁的变量的方式,充分发挥多核性能优势。
鲲鹏性能调优十板斧,能够从 CPU/内存、磁盘、网卡、应用四大方面为性能调优提供解决方案,助力软硬协同全面提升性能。随后钟海鹏还向大家介绍了 MariaDB 性能调优案例,从监控、分析、优化三步入手完成调优过程。
鲲鹏还为广大开发者提供了鲲鹏社区、鲲鹏小智、华为鲲鹏开发套件、兼容软件查询等一系列工具套件和技术支持服务,帮助开发者解决开发过程中的一系列难题。鲲鹏社区作为一个在线资源整合平台,能够为开发者提供 400+迁移实践相关文档、200+主流软件下载、答疑交流论坛和鲲鹏计算兼容性认证查询和证书获取服务。鲲鹏小智是一个智能服务机器人,能够对兼容性软件查询、镜像包查询、汇编指令查询等问题进行智能问答。华为鲲鹏还提供一系列分析扫描、代码迁移、性能优化等工具,助力开发效率提升和性能竞争力的增强。兼容软件查询功能,能够对开源软件商业软件以及操作系统进行查询,方便开发者获取需求软件的一系列信息。
随后,钟海鹏对鲲鹏软件迁移作了介绍,首先从程序运行原理出发,介绍了当下软件迁移的背景和必要性,并通过软件迁移过程介绍了完成软件迁移所需的迁移准备、迁移分析、编译迁移、性能调优、测试与认知五个步骤及每个步骤的具体事项,又以经典案例对鲲鹏软件迁移技术在实际问题中的应用作了进一步说明。
软件迁移的五个步骤分别是:
1.迁移准备:信息收集、环境申请
2.迁移分析:软件栈分析、编程语言/代码/依赖库分析
3.编译迁移:代码迁移、软件包迁移
4.性能调优:性能指标测试、性能优化
5.测试与认证:压力测试、长稳测试、规模商用/鲲鹏展翅认证
钟海鹏还从 C/C++代码迁移、Java/Python 代码迁移,Maven 仓软件构建、软件包迁移四大方面对软件迁移进行了介绍。
C/C++代码迁移
在对 C/C++代码迁移的讲解中,钟海鹏先对编译型语言以及 C/C++代码需要移植的原因进行了介绍,由于架构、指令集、向量寄存器等方面上的差异,C/C++代码需要进行迁移。C/C++代码工程主要包括编译构建脚本和 C/C++源码两类文件,其中涉及多种移植项,在 C/C++代码编译构建需要获取源码、准备编译环境、生成 makefile、编译可执行程序、替换依赖库、安装部署这六大过程。代码迁移中常在编译脚本与编译选项移植、编译宏移植、builtin 函数移植、内联汇编函数移植、SSE intrinsic 函数移植过程中出现的典型移植类问题,XXX 也对此做出了分析,并重点讲解了针对这几类移植问题的迁移方法。
Java/Python 代码迁移
Java 语言编写的代码在迁移的过程中,涉及修改的部分是 JDK 和 SO 库。Java 迁移一共可分三步进行,首先安装 JDK 版本,然后对引用的 SO 库需重新编译,最后根据业务实际情况调整 JVM 参数。Python 的运行过程和 Java 类似,在编译修改上也是类似的,同样从编译环境和 SO 库两大方面入手修改。
Maven 仓软件构建
鲲鹏 Maven 仓实质是一个远程仓,里有各种各样适用于鲲鹏平台的 jar 包,基于 Maven 仓的构建过程,在本地仓没有找到合适的 jar 包时,就到鲲鹏的远程仓找,下载出来就是在鲲鹏平台可以使用的 jar 包,无需重复校验、编译,就可以得到一个鲲鹏上可以用的版本包。这一过程能够大大简化 Maven 软件构建流程,有效提升开发效率。
软件包迁移
在应用程序里面不可避免存在一些二进制或者 SO 库,它们和 C、指令集都密切相关,因此要实现迁移软件包部分也做一些程序编译和替换。软件包的迁移需要扫描、编译、打包、验证四个步骤。鲲鹏还为广大开发者提供了 Porting Advisor 工具,助力实现自动扫描、自动打包功能,加速迁移。
本次宣讲会的最后,各位技术专家与现场观众进行了亲切友好的互动,现场就开发者对鲲鹏及开发中所遇到的问题作出了详细解答。
尾声
「鲲鹏应用创新大赛 2020」重庆赛区宣讲会圆满落幕,「鲲鹏应用创新大赛 2020」的大幕却刚徐徐拉开,鲲鹏将时刻牢记使命,激发行业创新,促进人才培养,加入产业融合,和开发者携手筑梦数字未来!
评论