为什么必须将代码从x86迁移到ARM,这篇文章给你答案( 二 )

向量寄存器差异:x86和鲲鹏处理器使用向量寄存器不同,向量指令集也存在差异 。

从这三点出发,一个在x86上运行的程序根本不可能毫无阻碍地就可以在鲲鹏上使用,必须经过编译,同时也证明了迁移的必要性 。

迁移的五个步骤


为什么必须将代码从x86迁移到ARM,这篇文章给你答案

----为什么必须将代码从x86迁移到ARM , 这篇文章给你答案//----

1.迁移准备:信息收集环境申请

信息的收集主要分为两部分,首先是硬件信息的收集,主要就是一些型号,目的是根据此类信息匹配一个x86的服务器;其次是收集软件栈信息,包括操作系统、虚拟机、中间件、编译器、上层依赖的开源软件、商业软件、业务软件等信息 。

2.迁移分析:软件栈分析编程语言分析

这一过程要做的就是对收集到的信息和软件栈做初步分析,目的是判断是否真正需要迁移,评估迁移的工作量 。

对开源软件来说,因为社区发展已经比较成熟,迁移相对较为简单,通过基于鲲鹏的架构分支或者鲲鹏支持的软件包,自行安装即可 。 对于自研软件来讲,情况则较为复杂,如C、C++这类编译型软件,从指令集差异化出发,需要重新编译后才能完成迁移,而Java、Python这种解释型的语言,因为其虚拟机如JDK、PVM已经把上层的一些跟指令集相关的东西屏蔽掉了,平滑地迁移过去即可 。 对于商用软件而言,不会公开源码,如果需要迁移,就必须要联系厂家去编译一个鲲鹏的版本,并且完成一系列的适配 。

此外像运行环境、虚拟机、编译器和操作系统这些也是要进行替换,但是这些并非需要重新编译,因为在华为云鯤鹏论坛内有软件仓库,可以直接去软件仓库下载由鲲鹏官方所做的经过验证的版本 。

3.编译迁移:代码迁移软件包迁移

编译型的语言,之所以迁移起来比较困难,原因就在于涉及到比较多的迁移点,下面将从代码和软件包两方面进行阐述 。

对于对指令集有依赖的代码来说,与x86架构相关的,都需要替换成ARM架构下的语言;像以Java、Python为代表的解释型语言,换一下JDK和PVM就行了,如果语言中调用了编译型语言,必须把这部分重新编译才可行 。 对于软件包来说,其迁移与Java、Python语言类似,即扫描出来里边的对编译型语言的依赖,把这一部分依赖进行替换即可 。

4.性能调优:性能指标测试性能优化

经过前面几个步骤之后,软件迁移其实就基本完成了,之后要对性能进行调优,主要分为建立基准、压力测试、确定瓶颈、实施优化、确认效果五个步骤 。

首先需要建立调优基准,该基准根据当前的硬件配置、组网、测试模型来做综合评估,以建立合理的条有目标;其次在调优目标建立后,通过压测工具对软件或系统进行加压,在加压过程中暴露性能瓶颈,确定瓶颈之后对瓶颈进行优化;第四,注意在优化过程中要及时记录,因为优化并不一定是正向的,出现负向优化时需要及时回退;最后在优化措施实施完成后,需要重新启动压力测试工具以确认优化效果 。


推荐阅读