全球化竞争日益激烈的今天,大国都已把科技作为战略博弈的核心。在这样的宏观态势下,核心技术和产品的国产替代迫在眉睫。
以数据中心为例,X86的江湖地位已大不如从前,ARM服务器的崛起正在撬动英特尔一统天下的格局。
去年,华为就推出了首款基于ARM架构的服务器芯片鲲鹏920,强势闯入服务器市场。经过一年多的沉淀,国产化的步伐在鲲鹏这个后浪的推动下,满地开花。
曾琼,是中软国际的系统工程师,也是第一批投入到鲲鹏适配调优浪潮中的专业技术人才。经过60多个鲲鹏迁移项目的洗礼,他总结了一些鲲鹏适配移植的经验,让后来者少走点弯路,少踩点坑。
作为一个接触Linux差不多10年的IT老人,曾琼做过5年的嵌入式Linux系统开发,5年的操作系统运维,长年苦于交叉编译的繁琐:在当前编译平台下,编译出来的程序能运行在体系结构不同的另一种目标平台上,但编译平台本身却不能运行该程序。
对此,曾琼分析了4个原因:
1、即使目标平台资源很充足,可以本地编译,但是第一个在目标平台上运行的本地编译器总需要通过交叉编译获得;
2、目标平台的运行速度往往比主机慢得多,许多专用的嵌入式硬件被设计为低成本和低功耗,没有太高的性能;
3、整个编译过程是非常消耗资源的,嵌入式系统往往没有足够的内存或磁盘空间;
4、交叉编译使我们不需要花时间将各种支持包移植到目标板上。
总结下来就是场景、算力和生态的问题。
这个情况一直在持续,直到鲲鹏的出现,改变了整个使用格局。
当时曾琼在西安做EulerOS的系统运维,回想初次接触国产操作系统,他形容自己是满心的期待和感慨。
“那时EulerOS还没有被扶正,我因为工作原因,18年开始接触鲲鹏,记得第一次直接在鲲鹏架构上编译出AArch64软件包的那种舒爽,真实且感慨。后来随着不断的整合编译,越来越多的开源包被整合到EulerOS。作为一个尝鲜人,真实体验到EulerOS运行在鲲鹏上的感觉。”
后来曾琼所在的公司成立了负责鲲鹏迁移工作的专家团队,从早期的鲲鹏适配、行业方案验证、数据迁移到性能测试、调优,一路走来,曾琼和团队在鲲鹏上积累了一套端到端交付的能力。
图: 2019年在陕西鲲鹏训练营上分享鲲鹏移植适配经验
图:2019年获得公司鲲鹏移植金牌团队
这一年时间里,曾琼参与了60多个鲲鹏迁移项目,涉及航运额20多个。
他总结,“在整个项目交付过程中,除了对鲲鹏架构的差异适配,各个开源组件与自研代码的适配外,还要掌握IaaS\PaaS\SaaS各层级的技术。而且得理解华为云的各个云服务,才能高效快速的帮助客户设计合理的上云规划,高性价比、高效的解决客户的痛点,加快客户的业务改造。”
基于一年的鲲鹏迁移经验,曾琼将迁移项目分为三大类:大数据类,数据库类,容器类。
以大数据为例,这部分客户主要的问题在于平台的适配。
很多用到大数据的客户都是采用CDH进行管理,然而CDH不支持鲲鹏且是闭源的,因此要推荐客户首选华为云的MRS服务。同时曾琼和团队也在第一时间适配了Ambari大数据管理平台,为客户提供最小改造,完善行业场景的适配。
如果遇到平台在拉起过程中出现适配不到位的情况,曾琼表示需要尽可能使用华为的迁移工具提前进行扫描,找出并整改所有架构不适配的部分,确保一次迁移成功。
另外,当客户需要业务改造时,曾琼推荐最多的方案是大数据的算存分离。
“OBS服务的物美价廉让人爱不释手,它提供了与大数据存储组件无感知接口的方式,业务代码不用做任何改动,安全高效地完成业务能力提升,我们团队内部当前的资料和产品也都开始放到了OBS上。”
图:数据库存算分离方案
图:大数据问题定位思维导图
对于数据库类的客户,华为云鲲鹏云的RDS与DRS基本是数据库资源申请与数据迁移的首选。曾琼表示,“DRS服务简洁的设计让很多只会开发的兄弟们也过了一把迁移专家的瘾,轻松搞定数据迁移。”
比如有个制造类的企业,想要从SQL Server迁移到MySQL,曾琼原本的调研规划需要割接8个小时的数据,最终采用RDS服务仅花了1.5个小时就完成所有的迁移。然后再使用校验功能,快速识别数据库数据表差异,做了轻微改动便完成了业务上线。
另外,对于国产数据库的迁移,前期调研与方案设计也非常重要。曾琼附上了他们总结的数据库选型导图与数据库信息调研表。
图:数据库的选型方案
数据库信息收集调研表 |
||
调研类型 |
调研项 |
|
硬件信息 |
CPU型号 |
|
服务器配置(CPU:内存) |
||
存储类型 |
||
网络带宽 |
||
数据库 |
待迁移用户/Schema个数 |
|
TOP5表数据量 |
||
数据库字符集 |
||
开发接口 |
||
时区 |
||
最大连接数 |
||
峰值TPS/QPS |
||
运行模式 |
||
是否使用数据库高级特性 |
||
容灾备份 |
全量备份时间周期 |
|
增量备份周期 |
||
应用系统 |
开发语言 |
|
框架 |
在鲲鹏移植过程中,最关键的是做好业务切换,即在不改动代码的情况下,完成性能调优。
性能调优分为系统调优(CPU、内存、IO、网络)和应用调优(配置、代码、编译、环境)。
要想做好调优,既要了解鲲鹏多核优势,也要从计算、存储中找到网络的问题,因为“一切呈现都是计算,瓶颈多在资源。”
基于60多个鲲鹏迁移项目经验,曾琼总结了他的鲲鹏性能调优之路。
首先是基础知识的掌握和能力的提高:
1、鸟哥的书,马哥的培训视频,快速切入对Linux的基本掌握与入门;
2、Linux内核设计与实现;
3、韦东山的嵌入式视频,从软件层面切入到底层,以及系统启动,驱动编写,内核原理实战;
4、《性能之巅》,了解基本常见的性能定位讨论与方法;
5、系统编程,网络编程;
6、掌握寄存器架构、汇编、内嵌汇编、C、Python、Java至少三种以上;
7,掌握虚拟化KVM、QEMU、OpenStack;
8、掌握Docker,K8S等虚拟化技术,掌握各类云服务,不限于华为云;
9、掌握大数据开发、数据库开发、高性能运算、云原生、AI、异构计算等技能;
10、从物理层、虚拟化、容器化,从SaaS、PaaS、IaaS,从应用、接口、库、平台、系统调用、内核、驱动、硬件到总线和CPU;掌握自上至下的业务与系统架构,纵深理解业务与系统,从计算(CPU)、存储(内存,磁盘)、网络和硬件加速等四方面全面整合上面的技能;
11、了解鲲鹏与X86的差异,多核,硬件加速模式,SSE与NENO区别等.
其次,具备以下能力,方能更好的做好性能调优:
1、基本技能之熟悉软件架构(业务架构);
2、在调优过程中要对代码熟悉(代码架构);
3、对系统进行测试验证 (测试设计);
4、掌握整个服务器的软硬件的基本配置:网络,内存,磁盘(系统架构)。
工具和方向之外,还要具备对内核、CPU、调度、驱动、内存、中断,各个子系统以及代码能力的软实力。
总的来看,既要用好工具,结合自身经验做好提问,精准找到问题根因,快速闭合;也要善于利用网络资源,打开思路,查询开源bug,多做总结整理。
图:Linux性能调优工具全景
经过一年多的努力,目前获得鲲鹏认证的行业解决方案已达2000多个,包括操作系统(麒麟、普华、统信),数据库(达梦、金仓、高斯),中间件(金蝶、东方通、宝兰德)都已完成了对鲲鹏的适配。
曾琼强调,基础组件的完善对鲲鹏的适配起到了非常大的进步。而且昇腾、OpenEuler与OpenGauss给行业注入了新的活力与动能,势必将进一步加快鲲鹏生态的完善。
“作为鲲鹏领域的先行者,希望个人能够紧跟鲲鹏社区节奏,不断提升自己在适配与迁移领域的技术,在性能调优和国产化改造方面突破自己,提供行业领先的鲲鹏移植服务,为国产化改造贡献一份力量 。”