合作QQ:165687462 | 合作热线:0755-83692700 | 设为首页 | 加入收藏 首页 | 登录 | 注册

今日深圳 | 娱乐星闻 | I T资讯 | 名企之窗 | 深圳教育 | 旅游资讯 | 社区活动 | 美食乡村 | 公益活动 | 时尚奢华 | 品牌消费 | 数码电子 | 体育快报 | 汽车之家 | 房产家居 | 女性母婴 | 健康养生 | 智能科技 | 文化艺术 | 深圳交通 | 原创活动 | 最近更新 |
当前位置: > 首页 > 福田 > 智能科技 > 智能 > 正文
迈入鲲鹏计算产业的大门:一文带你了解鲲鹏开发生态的点点滴滴
阅读 2020/7/17 21:30:22来源:深圳在线 作者:牛海滨

    2020年被称为是ARM架构的元年:在HPC、服务器和PC领域,富士通、亚马逊和苹果公司均取得了标志性的突破,展现了ARM平台强大的发展潜力。在国内,华为鲲鹏处理器也以优异的表现博得了业界的好评。随着5G、AI和云服务产业的兴起和成熟,ARM正在凭借移动计算浪潮中积累的市场优势,向多年来一直由x86把持的传统计算市场进军,有望在这些领域成为下一个十年的舞台主角。

    任何硬件技术的崛起都离不开软件生态的配合,ARM也不例外。如今,华为在努力围绕鲲鹏计算产业生态,建设以服务器和云端应用为主要场景的开发社区,并成功吸引了成千上万开发者的关注和参与。在华为公司的推动和全球开发者的支持下,年轻的鲲鹏社区生机勃勃,优秀的开源项目和应用实践和不断涌现,成为了服务器和云端市场不可忽视的新生力量。

    7月11日,华为在全国18城举办了鲲鹏创新中心开发者创享日活动,为鲲鹏计算产业生态建设添砖加瓦。在本次活动中,深圳会场请到了华为公司多位资深专家,为开发者介绍鲲鹏计算产业生态的概况,以及迈入鲲鹏生态时最关心的软件迁移和优化相关内容;活动最后还有鲲鹏应用创新大赛深圳区域赛的相关信息。

    以下内容经由InfoQ编辑整理自开发者创享日深圳会场的课程。

    鲲鹏产业源头创新中心和鹏城生态:开发者云平台介绍

    在全球科技领域激烈竞争和贸易冲突的背景下,中国IT产业亟需有竞争力的自主创新芯片、数据库和操作系统产业链。华为公司经过15年的发展,自主开发出了鲲鹏920服务器芯片、昇腾AI芯片、OpenEuler服务器操作系统、GaussDB数据库、MindSpore AI框架等关键核心技术,初步形成了服务器和云端市场的高水平自主生态系统。

    去年9月,深圳市人民政府与华为技术有限公司签署联合打造全国鲲鹏产业示范区战略合作协议,共建鲲鹏产业源头创新中心,为鲲鹏生态伙伴提供鲲鹏云资源、技术支持、联合创新、标准制定、测试认证、人才培养等公共服务,加快深圳市鲲鹏生态体系规划布局,打造全国鲲鹏产业示范区。华为云解决方案架构师鄢强介绍,鲲鹏产业源头创新中心为合作伙伴提供七大权益:资源补贴、证书资质、市场推广、品牌宣传、技术支持、人才培养、政企对接,目的是帮助合作伙伴实现智能化、数字化转型。在创新中心的帮助下,至今已有多家合作伙伴借助华为云鲲鹏云服务实现了业务改进和优化,形成了良好的示范效应。

    与此同时,鲲鹏产业源头创新中心还和鹏城实验室"鹏城生态"项目组多次交流。鹏城实验室作为ARM+Linux生态建设的先行者,在这方面具有丰富的经验。"鹏城生态"意图打造国内最大,要素最齐全的ARM+Linux生态环境。开发者云平台是"鹏城生态"重要组成部分,作为种类最全的ARM+Linux服务平台,正在为粤港澳、北京、长沙等多地用户提供ARM+Linux生态的应用服务。开发者云平台为用户提供物理机、虚拟机、云存储等服务,芯片包含了鲲鹏916、920等,操作系统覆盖麒麟、OpenEuler、Ubuntu、CentOS等,可以为开发者提供高性能计算、分布式存储、大数据处理和机器学习等解决方案,以及开箱即用的云手机软件栈和深度学习软件栈。

    鹏城实验室工程师张晓梨介绍,开发者云平台向所有人免费开放,所有环境都可以远程访问。平台上有开发者社区,支持应用上传,并为个人和企业开发者提供了展示和交流的窗口。平台的云手机软件栈兼容安卓应用通过轻量级虚拟化技术支持移动OS运行;深度学习软件栈则基于ARM+Atlas架构,支持开发多种类型的人工智能应用。

    鲲鹏软件性能调优

    在任何硬件平台上,软件想要充分发挥硬件的实力都必须做好性能调优工作。很多时候,软件优化带来的性能收益甚至远远超过了硬件算力提升的水平:

    

    基于冯诺依曼架构的计算机分为CPU、存储器和输入/输出设备几大部分。其中,CPU/内存、磁盘、网卡和应用是计算性能优化时主要考虑的四个方向。华为计算产品部软件迁移调优高级工程师陈龙分别讲解了华为云鲲鹏云服务在这几个方向上的软件调优要点。

    CPU/内存

    CPU/内存部分有软加速和硬加速两大模块。其中,软加速主要涉及编译、JDK优化和Numa优化。

    编译优化主要包括指令布局、内存布局、循环和除法优化等,都是为了让软件代码更好地配合CPU硬件的设计特性。JDK优化主要涉及JIT和GC的针对性提升。基于鲲鹏云服务,华为推荐使用华为JDK和Gcc 9.1以上版本的编译器,以获得最佳的优化效果。

    鲲鹏服务器芯片的一个关键设计理念就是NUMA多核架构。相比众多内核统一访问内存的SMP多核架构,NUMA架构中不同的内核访问内存的速度可能是不一样的,如图所示:

    

    如果一个进程调用了NUMA CPU中node1的核心资源,那么当这个进程需要访问node2的内存块时,就需要更高的延迟并导致性能下降。为此,应用在优化时就要尽可能避免这种情况,尽量让进程只访问速度最快的内存块,这种方法也叫亲和性设置。

    亲和性设置有三种主流方法可选,第一种是使用系统工具numactl,将具体的核心按编号绑定到进程上;第二种是将亲和性设置参数硬编码到程序中;第三种是调用开源软件配置文件中的亲和性参数设置。

    除此之外,华为还为鲲鹏提供了一些加速库,提供类似x86平台上流行加速库的效果:

    

    这些加速库会自动为应用选择合适的软硬加速路径,有条件时就调用鲲鹏芯片的硬加速模块(以加解密引擎为主),提供很高的加速比。

    磁盘/网卡/应用

    在磁盘性能优化方面,影响较大的是文件系统的选择。华为推荐在鲲鹏平台上使用Ext4和XFS文件系统,并针对大数据场景开启文件预读来提升性能。

    在网卡端,主要需要根据实际应用场景来调整frames和usecs两个特性,根据延时和带宽需求来权衡控制两个参数。

    

    在应用侧,开发者可以提高并发数、优化缓存操作、启用异步读写等,针对鲲鹏平台的系统特性进行整体配置。

    

    在具体的性能调优实践中,第一步就是选择调优方向,包括三大块硬件和应用;第二步是性能采集、分析性能瓶颈、定位热点函数;第三步是针对平台特性充分利用硬件资源;最后还要在网络端寻求合适的参数平衡点。

    

    ARM64平台上Hadoop及Hive集群环境调优

    麒麟软件服务器资深工程师王华功回顾了2018-19年,华为在国产数据库上搭建Hadoop环境的实践案例。这一课题使用的硬件是三台TaiShan2280服务器,基于鲲鹏916 64核心ARM芯片,具体配置环境如下:

    

    在TPC测试中,使用75G大小的lineitem.tbl,通过Hive加载进hdfs计算Hadoop集群的吞吐量。

    优化措施

    Hadoop的负载压力主要集中在CPU、网络、内存和磁盘几个方面,它们也是本次优化工作的重心。优化工作可分为5个步骤。

    1. 第一步是在ARM平台下重新编译Hadoop,主要目的是将一些针对x86编写的原生库移植到ARM上,提升性能;

    2. 经过对比,选择了Hadoop环境中表现最好的Oracle JDK;

    3. 数据节点改用SSD来提升HDFS分布式文件进程的性能。

    4. 调整mount参数和操作系统配置,禁用透明大页压实功能和内存交换;

    5. 调整Hadoop参数,针对服务器大内存环境调整线程运行时,调整网络参数等。

    一些相关参数如下:

    

    

    

    经过上述一系列调优工作,整个集群的IO吞吐量也得到了很大程度的提升:单节点吞吐量由220MB/s提升到306MB/s,两节点达到近500,三节点来到了764。

    王老师总结说,后续的调优工作要考虑到网络交换机的参数,还要考虑Hadoop的不同版本性能差异。具体的调优参数要根据应用和环境的不同来做针对性调整,凭借自己的经验和理论知识来权衡控制。

    鲲鹏服务器上的云原生应用优化实践

    所谓云原生应用,就是在云端直接运行原本跑在客户端上的应用,从而提供云手机、云办公、云直播、云游戏等全新的服务形式。对AL(ARM+Linux)生态而言,云原生应用可以将数以千万的安卓应用无损迁移到AL上,极大丰富后者的应用生态,缩小其与x86桌面生态的差距。

    鲲鹏服务器的云原生平台架构基于Robox+Anbox,上面运行一个标准的容器云平台,并通过投射协议投射到各个客户端上。

    鹏城实验室工程师周军提到,鲲鹏云原生平台主要基于开源项目,但在产品化的过程中遇到了很多问题。在调优过程中需要一一解决。

    首先是兼容性问题,需要保证绝大多数安卓应用不经修改就能运行在鲲鹏平台上;其次是提升并发能力,在一台服务器上运行更多安卓实例来降低成本;第三是提升系统流畅度,降低网络延时,提升画面清晰度,比拟真机使用效果。

    兼容性

    在这个方向上,主要处理的是原生Robot方案支持的OpenGL ES版本过低的问题,并为安卓设备常见的各种传感器提供仿真模拟。

    

    并发能力

    为了尽可能提升单台鲲鹏服务器(64核心)同时运行的云原生应用实例数量,有几个关键点需要注意:

    · 首先是充分利用GPU,将CPU从一些繁重的渲染/编码任务中解放出来,使得每个实例占用的核心数量大幅减少;

    · 其次是限制容器内可建的CPU数量,防止应用过分索取CPU核心资源。

    · 根据单台主机实际需要的线程数量扩大默认配置。

    · 为应用实例建立退出机制,防止应用在后台一直占用资源。

    · 针对鲲鹏芯片的NUMA架构进行优化。

    · 根据实际应用场景选择合适的容器核心数量。

    提升系统流畅度

    云原生平台需要将虚拟的安卓系统的运算数据编码成视频流传送到客户端,因此对GPU侧的软硬件要求很高。需要注意的是,鲲鹏NUMA架构需要考虑GPU的绑定优化,避免增加GPU方面的延时。此外还要根据应用场景、显卡性能、显存特性等具体情况进行优化。

    

    在调优思路方面,周老师给出了一个三步走的建议:

    · 第一步是建立基准,找出系统的关键性能参数并评测出来;

    · 第二是利用好工具,观察调优点的底层状态,定位具体的瓶颈加以改进

    · 不要一次调整太多,而是每次只改一个参数,不断迭代来逐渐接近最优水平。

    平台下一步的优化方向包括去掉转换层、通过分时复用提高伪并发数、通过SSD提升加载速度等。

    鲲鹏软件迁移

    在这一部分,华为鲲鹏计算产品部软件迁移调优高级工程师唐启稳分享了鲲鹏平台的软件迁移思路和相关案例。

    迁移流程

    唐老师总结说,向新平台迁移软件时,首先要从官方文档入手,获取源码、查询依赖项和编译方法等。下一步是使用扫描工具扫描依赖项,找出闭源、无法移植的部分,考虑替换或屏蔽等手段。处理好依赖项后即可对整个应用进行编译移植工作。

    迁移案例

    首先是一个科学计算应用的迁移。原始应用主要依赖三个模块,其中MPI编译器和MKL加速库的迁移出现了障碍。MPI使用的官方库与鲲鹏平台不兼容,因此最后改用了兼容的Openmpi;MKL是专门针对Intel芯片优化的数学计算库,参考社区案例后最终选择了用Openblas替换。解决这两个模块的迁移问题后,整个应用就很容易编译通过了。

    第二个案例是NiFi,一个基于Java的开源大数据工作流平台。在向鲲鹏平台迁移的过程中发现它的一个库只有x86版,没有aarch-64版。经过分析确认这个模块只在自动测试时会调用,不影响软件的整体功能,最后就对它做了屏蔽处理。

    第二个案例是Pandas数据分析包。它基于numpy来解决数据任务,但在迁移过程中找不到numpy模块。经过分析,发现原来是安装的numpy版本号不匹配安装脚本要求,于是手动修改版本号解决了问题。

    第三个案例是OpenCV迁移。迁移过程中遇到的问题时无法获取源码,原因是基于内网的迁移无法连接外网,于是手动下载了文件并安装编译。从这里看出,具体的迁移实践中网络故障也是需要注意的潜在问题。

    迁移工具和社区资源

    华为提供了一些常用的工具帮助开发者完成迁移工作,包括依赖项的分析扫描工具、代码迁移分析工具和性能优化工具等。开发者还可以访问鲲鹏社区来查找迁移经验文档,求助专家支持;在OpenLab知识库上可以找到兼容性列表和一些高频开源软件的迁移指导与安装手册。最后,开发者也可以使用鲲鹏小智搜索引擎提问,寻求帮助和资料。

    2020鲲鹏应用创新大赛深圳区域赛介绍

    为促进鲲鹏行业解决方案孵化,加速区域生态发展,全国多地创新中心联合举办"鲲鹏应用创新大赛2020"。本次大赛已于7月1日开启报名,总奖金池为500万元,开放13个区域赛和1个综合赛区,深圳区域赛——"鲲鹏凌粤·展翅鹏城 鲲鹏应用创新大赛2020"由鲲鹏产业源头创新中心主办,设置了"金融""政府""大数据""ARM原生应用"和"开放命题"5个赛题,面向具备软件开发背景和解决方案的企业参赛者,同一家企业允许多个不同解决方案的团队报名参赛。每支队伍人数不超过5人。各赛题优胜队伍(一等奖)将由鲲鹏产业源头创新中心推选参加 "华为开发者大赛@鲲鹏应用创新大赛2020"全国赛。

    具体参赛信息可访问华为云官网

    

    

关于我们 - 版权声明 - 广告服务 - 网站地图 - 会员专区 - 客户服务 - 疑难解答 - 联系我们
Copyright© 2007-2019 www.szol.net 深圳在线 版权所有
中国·深圳 粤ICP备15080520号