绿盟赛—鲲鹏软件迁移实践

目录

  • 鲲鹏软件迁移概述
    • 为什么要做软件迁移
      • 计算技术栈与程序执行过程
      • 鲲鹏处理器与x86处理器的指令差异
    • 软件迁移过程概述
      • 五个步骤完成软件迁移
        • 迁移准备——搜集软件栈信息,准备迁移环境
        • 迁移分析——分析软件栈,制定迁移策略
        • 编译迁移——软件编译打包,验证基本功能
        • 性能调优——利用五步法优化软件性能
        • 测试与认证——保障商用上线,共建鲲鹏生态
    • 典型案例
      • 华为内部项目:大型平台软件历时4个月完成规模商用
      • 互联网行业伙伴快速实现软件迁移
      • 金融行业核心系统整体切换案例
      • 鲲鹏开发套件,使能开发者,加速算力升级
  • C/C++代码迁移
    • 编译性语言源码——可执行程序过程介绍
      • 从源码到可执行程序——编译性语言
    • C/C++代码编译构建过程
    • C/C++代码迁移典型移植类问题
      • 代码迁移——编译迁移、编译选项移植
      • 代码迁移——编译迁移、编译宏移植
      • 代码迁移——builtin函数移植
      • 代码迁移——内联汇编函数移植
      • 代码迁移——SSE intrinsic函数移植
        • 代码迁移- SSE itrinsic函数移植(MMX/SSE)
        • 代码迁移SSE intrinsic函数移植(AVX)
        • 代码迁移一SSE intrinsic函数移植方法
    • 迁移工具——Porting Advisor初步代码扫描
    • 本章总结
  • Java/Python代码迁移
    • Java代码迁移
      • 从源码到可执行案例
        • 安装合适的JDK版本
        • 包含SO库调用的jar包迁移方法
        • 设置JVM参数,稳定快速的运行程序
      • 案例分析
        • 源码编译、安装OpenJDK9
        • netty-all-4.1.34.Final.jar迁移
        • JVM参数设置,解决服务挂死问题
      • Java迁移小结
    • Python代码迁移
      • 从源码到可执行案例
      • 典型迁移场景处理
        • 升级Python版本
        • 含C模块或全C模块的迁移
      • 案例分析
        • numpy-1.18.1模块迁移
  • Maven仓软件构建
    • Java构建工具
    • Maven介绍
    • Maven依赖管理
    • Maven仓库分类
    • Maven仓库搜索顺序
    • Maven仓库软件构建流程
    • 鲲鹏Maven
    • 如何配置优先搜索鲲鹏Maven仓
    • 鲲鹏Maven仓库软件构建流程
    • Hive编译指导
    • 鲲鹏Maven仓编译Hive
  • 软件包迁移
    • rpm介绍
      • rpm软件包组成
      • rpm软件包获取渠道
      • 传统rpm重构流程
        • 扫描
        • 编译
        • 打包(鲲鹏上重新生成rpm包)
        • 验证
    • rpm迁移
      • 鲲鹏开发套件Porting Advisor
      • Porting Advisor工具实现迁移自动化
      • 环境准备
      • Porting Advisor快速重构rpm包流程
    • rpm迁移实例

鲲鹏软件迁移概述

为什么要做软件迁移

计算技术栈与程序执行过程

绿盟赛—鲲鹏软件迁移实践

软件迁移过程概述

五个步骤完成软件迁移

绿盟赛—鲲鹏软件迁移实践

迁移分析——分析软件栈,制定迁移策略

绿盟赛—鲲鹏软件迁移实践

性能调优——利用五步法优化软件性能

绿盟赛—鲲鹏软件迁移实践

典型案例

华为内部项目:大型平台软件历时4个月完成规模商用

绿盟赛—鲲鹏软件迁移实践

金融行业核心系统整体切换案例

绿盟赛—鲲鹏软件迁移实践

C/C++代码迁移

编译性语言源码——可执行程序过程介绍

从源码到可执行程序——编译性语言

  • 编译性语言:典型的如C/C++/Go语言,都属于编译性语言。编译性语言开发的程序在从x86处理器迁移到鲲鹏处理器时,必须经过重新编译才能运行
  • 从源码到程序的过程:源码需要由编译器、汇编器翻译成机器指令,再通过链接器链接库函数生成机器语言程序
    绿盟赛—鲲鹏软件迁移实践
    可能设计的移植项
    • 编译构建脚本类文件
      编译选项的移植(指定数据类型、生成代码特性、目标执行器架构、处理器硬件加速功能等)
    • C/C++源码类文件
      编译宏移植(用户自定义宏移植、编译器自定义宏移植)
      编译器自带builtin函数移植
      内联汇编移植
      SSE intrinsic函数移植(MMX/SSE类函数移植、AVX函数移植)

    绿盟赛—鲲鹏软件迁移实践
    编译选项修改(典型编译脚本修改参考):
    • Cmakelists.txt文件修改
      ●add_ definitions( -Wall -mabi=lp64 -9)
      ●set(CMAKE_ CXX_ FL AGS “-Wall – mabi=lp64-g” )
      ●add_ compile_ options(-Wall -mabi=lp64 -9)
    • Makefile文件修改
      cc/g++ -Wall -mabi=lp6A -9 -0…-…

    链接: https://gcc.gnu.org/onlinedocs/gcc- 7.3.0/gcc/Submodel-Options.html#Submodel-Options

    代码迁移——编译迁移、编译宏移植

    绿盟赛—鲲鹏软件迁移实践

    代码迁移——内联汇编函数移植

    绿盟赛—鲲鹏软件迁移实践

    代码迁移——SSE intrinsic函数移植

    • SIMD(Single Instruction Multi Data)是一 种单指令处理多数据流的并行处理技术,能够在批量数据操作时进行向量化运算加速,具有较高的执行效率,在多媒体处理、矩阵运算等场景都有广泛的应用。
      绿盟赛—鲲鹏软件迁移实践

      代码迁移SSE intrinsic函数移植(AVX)

      绿盟赛—鲲鹏软件迁移实践
      大数据中的Impala组件为例
    1. Impala源码下载及扫描分析
      绿盟赛—鲲鹏软件迁移实践

    本章总结

    • 本章简要介绍:了C/C+ +代码的编译原理及构建流程,重点对典型迁移类问题及方法进行详细介绍。
      最后引入Porting Advisor开发工具,帮助学员快速、高效的完成C/C+ +代码迁移。
    • 核心类移植项及迁移方法:
    1. 编译选项移植:关注平台差异项(用好编译器官方文档)
    2. 编译宏移植:区分编译器/用户自定义宏移植
    3. builtin函数移植:关注常用builtin函数替换
    4. 内联汇编移植:识别核心汇编指令,用好汇编指令/builtin函数替换
    5. SSE intrinsic函数移植:开源工程、官网指导手册相结合

    Java/Python代码迁移

    Java代码迁移

    从源码到可执行案例

    绿盟赛—鲲鹏软件迁移实践

    包含SO库调用的jar包迁移方法

    绿盟赛—鲲鹏软件迁移实践

    案例分析

    源码编译、安装OpenJDK9

    绿盟赛—鲲鹏软件迁移实践
    绿盟赛—鲲鹏软件迁移实践

    Java迁移小结

    1. 改动点:安装JDK版本
    • 通过yum安装
    • 源码编译安装
    1. 引用的SO库需重新编译
    2. 根据业务实际情况,调整JVM参数

    Python代码迁移

    从源码到可执行案例

    绿盟赛—鲲鹏软件迁移实践

    含C模块或全C模块的迁移

    绿盟赛—鲲鹏软件迁移实践
    绿盟赛—鲲鹏软件迁移实践

    Maven介绍

    Maven是Apache下的一个纯Java开发的开源项目,基于项目对象模型(缩写: POM) ,可以对Java项目进行构建、依赖管理

    • Maven官网链接: http://maven.apache.orgl
    • Maven’下载链接: http://maven.apache.org/download.cgi
    • Maven安装指导: http://maven.apache.org/install.html

    Maven依赖管理

    在Java世界中,可以用groupld、 artifactld、 version组成的Coordination (坐标)唯一标识一个依赖。
    pom.xm|文件中一个典型的依赖引用如下图,Maven编译时会自动拼接路径和文件名, 去本地或远程仓查找。

    绿盟赛—鲲鹏软件迁移实践

    Maven仓库软件构建流程

    Maven软件构建关键流程:将X86依赖文件替换成Kunpeng依赖文件,重新构建,直到不包含X86依赖

    绿盟赛—鲲鹏软件迁移实践

    鲲鹏Maven仓库软件构建流程

    绿盟赛—鲲鹏软件迁移实践

    鲲鹏Maven仓编译Hive

    绿盟赛—鲲鹏软件迁移实践

    rpm介绍

    rpm软件包组成

    绿盟赛—鲲鹏软件迁移实践

    传统rpm重构流程

    绿盟赛—鲲鹏软件迁移实践

    编译

    绿盟赛—鲲鹏软件迁移实践

    验证

    绿盟赛—鲲鹏软件迁移实践

Porting Advisor工具实现迁移自动化

来源:KeaLoo

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年8月5日
下一篇 2020年8月5日

相关推荐