为什么必须将代码从x86迁移到ARM,这篇文章给你答案( 二 )
向量寄存器差异:x86和鲲鹏处理器使用向量寄存器不同,向量指令集也存在差异 。
从这三点出发,一个在x86上运行的程序根本不可能毫无阻碍地就可以在鲲鹏上使用,必须经过编译,同时也证明了迁移的必要性 。
迁移的五个步骤
----为什么必须将代码从x86迁移到ARM , 这篇文章给你答案//----
1.迁移准备:信息收集环境申请
信息的收集主要分为两部分,首先是硬件信息的收集,主要就是一些型号,目的是根据此类信息匹配一个x86的服务器;其次是收集软件栈信息,包括操作系统、虚拟机、中间件、编译器、上层依赖的开源软件、商业软件、业务软件等信息 。
2.迁移分析:软件栈分析编程语言分析
这一过程要做的就是对收集到的信息和软件栈做初步分析,目的是判断是否真正需要迁移,评估迁移的工作量 。
对开源软件来说,因为社区发展已经比较成熟,迁移相对较为简单,通过基于鲲鹏的架构分支或者鲲鹏支持的软件包,自行安装即可 。 对于自研软件来讲,情况则较为复杂,如C、C++这类编译型软件,从指令集差异化出发,需要重新编译后才能完成迁移,而Java、Python这种解释型的语言,因为其虚拟机如JDK、PVM已经把上层的一些跟指令集相关的东西屏蔽掉了,平滑地迁移过去即可 。 对于商用软件而言,不会公开源码,如果需要迁移,就必须要联系厂家去编译一个鲲鹏的版本,并且完成一系列的适配 。
此外像运行环境、虚拟机、编译器和操作系统这些也是要进行替换,但是这些并非需要重新编译,因为在华为云鯤鹏论坛内有软件仓库,可以直接去软件仓库下载由鲲鹏官方所做的经过验证的版本 。
3.编译迁移:代码迁移软件包迁移
编译型的语言,之所以迁移起来比较困难,原因就在于涉及到比较多的迁移点,下面将从代码和软件包两方面进行阐述 。
对于对指令集有依赖的代码来说,与x86架构相关的,都需要替换成ARM架构下的语言;像以Java、Python为代表的解释型语言,换一下JDK和PVM就行了,如果语言中调用了编译型语言,必须把这部分重新编译才可行 。 对于软件包来说,其迁移与Java、Python语言类似,即扫描出来里边的对编译型语言的依赖,把这一部分依赖进行替换即可 。
4.性能调优:性能指标测试性能优化
经过前面几个步骤之后,软件迁移其实就基本完成了,之后要对性能进行调优,主要分为建立基准、压力测试、确定瓶颈、实施优化、确认效果五个步骤 。
首先需要建立调优基准,该基准根据当前的硬件配置、组网、测试模型来做综合评估,以建立合理的条有目标;其次在调优目标建立后,通过压测工具对软件或系统进行加压,在加压过程中暴露性能瓶颈,确定瓶颈之后对瓶颈进行优化;第四,注意在优化过程中要及时记录,因为优化并不一定是正向的,出现负向优化时需要及时回退;最后在优化措施实施完成后,需要重新启动压力测试工具以确认优化效果 。
推荐阅读
- 热量|为什么有的人喝凉水都长肉,有的人却光吃不胖?营养科医生:原因其实很简单
- 『中越战争』1979年的中越战争,为什么世界各国都认为越南会赢?主要的原因其实有3点
- 蜜蜂蜇熊刺针拔不出而被肢解致死
- 三星手机|为什么三星手机,在我国越来越没市场了?原来这是必然结果
- 胖子撩综艺|为什么特斯拉这么受欢迎?自主品牌造不出水平相当的电动汽车吗?
- 轻拔琴弦|AI挑战赛「潮流商品标签识别」:谁说写代码的人不懂潮?
- 不执著财经|为什么越来越多的外企都搬迁到东南亚?
- 『程序员』装出新高度! 程序员用代码写招租广告只因不想与其它行业人士合租
- 罗民教授|看到好多脑梗的病人,而且是正值壮年的男人居多,这是为什么呢?
- 美国得克萨斯州|6岁男孩在校戴耳环被禁,妈妈怒指校方性别歧视:为什么女生就行?
