Categories
程式開發

「鲲鹏应用创新大赛2020」重庆赛区宣讲会顺利召开


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」的大幕却刚徐徐拉开,鲲鹏将时刻牢记使命,激发行业创新,促进人才培养,加入产业融合,和开发者携手筑梦数字未来!