- 2 鲲鹏应用移植
- 2.1 软件迁移原理和迁移过程
- 2.1.2 软件迁移原理概述
- 2.1.3 软件迁移过程概述
- 2.2 鲲鹏分析扫描工具介绍
- 2.3 容器迁移指导
- 2.3.1 容器相关概念
- 2.4 迁移常见问题及解决思路
- 2.4 迁移常见问题及解决思路
鲲鹏处理器与x86处理器的指令差异
鲲鹏处理器指令集是定长的
x86处理器指令集是不定长的
2.1.3 软件迁移过程概述要提醒的一点是,如果要迁移的系统包含SSE、MMX、IPP、AVX等x86指令,则移植的工 作量需要单独评估
自研C/C++代码的移植工作量,可以使用迁移工具先做代码扫描,需要修改的代码按照25 行/人天的生产率评估
Java/Python代码如果调用了C/C++等语言开发的外部库,需要将外部库的迁移单独评估工 作量,生产率可以参考开源组件或自研C/C++代码的迁移工作
C/C++代码是编译型语言,源码需要使用编译器重新编译,按照鲲鹏处理器的指令集和程序结构生成可执行程序
如果代码中调用了汇编指令,使用了x86平台扩展的SSE、MMX、AVX等指令,则需要对指令逐条移植
在x86和鲲鹏处理器下,C/C++语言中默认的char类型有所不同,x86下默认的char类型是有符号的char类型,而鲲鹏处理器下则是无符号的char,因此需要移植修改。当然,也可以增加编译选项屏蔽这种差异
Builtin函数是编译器提供的一套函数。编译器实现的builtin函数通常是通过cpu的指令实现 某些频繁调用的函数,以达到很高的性能
-m64是AMD CPU编译64位程序的选项,在鲲鹏处理器下要修改为-mabi=lp64
2.2 鲲鹏分析扫描工具介绍-march是指定cpu的指令集,broadwell是x86的一款cpu,实用鲲鹏处理器需要指定为 armv8-a
Kunpeng Porting Advisor
“软件包重构”,“专项软件迁移”, "增强功能"只支持Web使用方式
工具的安装方式有Web和CLI两种,Web方式下支持Web浏览器访问和CLI命令行方式访问,CLI方式下只支持CLI命令行访问。其中Web浏览器访问支持所有功能,CLI命令行访问支持软件迁移评估和源代码迁移功能。
鲲鹏代码迁移工具部署方式:
单机部署
可将鲲鹏代码迁移工具部署在用户的开发、测试的x86物理服务器上或基于鲲鹏916/920的物理服务器上。
也可以部署在x86架构或鲲鹏架构的ECS服务器上。
鲲鹏代码迁移工具WEB
HTTPS默认端口8084
系统默认用户名为portadmin,默认密码Admin@9000
为了提升工具运行效率,上述业务流程采取多线程并发处理
2.3 容器迁移指导 2.3.1 容器相关概念工具内部后台处理逻辑如下:
检查用户软件Makefile中的编译链接
与“依赖库白名单”进行比较
产生SO依赖库移植信息
根据用户输入信息依次进行“C/C++源码扫描”
产生用户源码移植列表
根据软件移植规则字典对软件代码输出逐条修改建议
容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。
定义:容器是容器image运行时的实例
所有的容器共享同一个Host Os,使得容器在体积上要比虚拟机小很多
查找镜像
docker search centos
获取镜像
docker pull arm64v8/centos:7
查看拉取官方镜像
docker images arm64v8/centos:7
启动容器
docker run -it arm64v8/centos:7 /bin/bash
查看容器运行中和未运行的容器
docker ps -a
提交和查看新镜像
docker commit -a "huawei.com" -m "redis images" f4603f1f918a t_arm64v8/centos:7
查看新构建的基础镜像
docker images
2.4 迁移常见问题及解决思路cker commit -a “huawei.com” -m “redis images” f4603f1f918a t_arm64v8/centos:7`
查看新构建的基础镜像
docker images
2.4 迁移常见问题及解决思路 暑期编程PK赛 得CSDN机械键盘等精美礼品!


