将x86应用迁移到倚天云服务器

基于倚天710 ARM CPU架构的倚天云服务器可以显著提升实例的计算、存储和网络性能。您可以将x86平台的应用迁移到倚天实例服务器上使用,获取更优性能的云服务体验。本文介绍迁移到倚天云服务器的迁移步骤、场景和使用流程。

迁移背景

什么是倚天云服务器

倚天云服务器是基于倚天实例(包含倚天710 ARM CPU架构的ECS实例)的云服务器。通过芯片快速路径加速手段,完成计算、存储、网络性能的数量级提升,可应用于云原生、视频编解码、高性能计算、基于CPU的机器学习和游戏服务等场景。

说明

基于倚天710 ARM CPU架构的实例规格族包括g8y、c8yr8y。您可以通过以下链接了解实例规格及计算、存储、网络等指标数据。

迁移必要性

倚天云服务器采用ARM架构(与x86架构不同)。若需将x86平台上的源代码程序部署到倚天云服务器上使用,必须经过重新编译,并建议进行针对性优化以提升性能。

迁移步骤

将基于x86平台的应用迁移到倚天服务器上,主要分为以下两步:

  1. 迁移前准备

    您需要规划云服务器的操作系统、基础软件选型、硬件资源配置;需要检查代码是否存在x86架构相关的汇编指令、硬件特性依赖等;需要检查第三方库是否提供ARM版本;需要进行兼容性测试等。

  2. 软件编译迁移

    根据软件编程语言,安装编译器、软件版本等,之后重新编译。

    说明

    EasyYitian是阿里云为支持倚天迁移专门打造的工具平台,包括软件兼容性扫描、环境兼容性分析、跨架构编译构建和预置镜像、性能对比调优,是集工具、预置镜像、迁移指南为一体的统一平台。通过对迁移过程的全链路支持,解决倚天迁移的难点和痛点,帮助您快速将业务和应用迁移到倚天云服务器。

迁移场景

软件编译迁移主要包含以下两种场景:

  • 源码软件:指开发者开发的或者基于开源软件增强开发的软件。自研软件使用的编程语言主要包含以下两类:

    • 编译型语言:以C++/Go为代表的编译型语言,这些语言会将源代码编译成架构相关的二进制文件,因此迁移后必须进行重新编译。更多信息,请参见Make/CMake构建文件C/C++语言迁移

    • 解释型语言:以Java/Python为代表的解释型语言,这些语言源代码编译文件与架构无关,理论上可以跨架构运行。但是,如果解释型语言引入了本地库,比如Java应用通过JNI调用了C开发的动态链接库,那么此应用就与架构相关,必须重新编译。更多信息,请参见Java语言迁移Python语言迁移

  • 开源软件:开源软件指开发者从开源社区下载未做源码修改的软件或者所使用操作系统生态中默认携带的软件。当前大部分开源软件在倚天ARM平台上已经提供较好的应用生态,您可以直接使用操作系统提供的开源生态软件来安装部署。更多信息,请参见开源软件迁移

迁移流程

x86平台迁移到倚天云服务器之前,需要准备环境资源,包括云服务器、操作系统、基础软件。将x86平台业务软件迁移到倚天云服务器,具体流程如下:

步骤一:创建倚天云服务器

具体步骤,请参见自定义购买实例。您需要注意以下参数。

参数

说明

实例规格

  • g8y(首选)

  • c8y

  • r8y

镜像

  • Alibaba Cloud Linux

    • Alibaba Cloud Linux 3.2104 LTS 64位 ARM版(首选)

    • Alibaba Cloud Linux 3.2104 LTS 64位 ARM版 等保2.0三级版

  • Anolis OS

    • Anolis 8.8 64位 RHCK ARM

    • Anolis 8.8 64位 ANCK ARM版 等保2.0三级版

    • Anolis 8.8 64位 ANCK ARM

    • Anolis 8.6 64位 RHCK ARM

    • Anolis 8.6 64位 ANCK ARM

    • Anolis 8.4 64位 RHCK ARM

    • Anolis 8.4 64位 ANCK ARM

    • Anolis 7.9 64位 RHCK ARM

    • Anolis 7.9 64位 ANCK ARM

  • Ubuntu

    • Ubuntu 22.04 64位 ARM

    • Ubuntu 20.04 64位 ARM

    • Ubuntu 18.04 64位 ARM

  • CentOS 7.9 64位 ARM

    说明

    CentOS 7系列已停止维护(EOL),不建议您使用该版本。

  • Debian

    • Debian 11.5 64位 ARM

    • Debian 11.2 64位 ARM

    • Debian 10.13 64位 ARM

      说明

      Debian 10.13已停止维护(EOL),不建议您使用该版本。

步骤二:软件迁移

软件迁移主要分为自研软件和开源软件,推荐使用的编译器、运行库、应用等版本如下表所示。请自行安装使用。

分类

软件

推荐版本

说明

编译器

GCC

gcc 10.2.1

建议使用gcc 10以上版本,性能有大幅提升。

LLVM

LLVM 13/clang 13

  • clang 13使用的glibc版本为2.17及以上

  • clang 13使用c++运行时库为libstdc++ (gcc 6/9以上版本)

  • clang 13依赖llvm 13gcc-c++ rpm

Glibc

glibc 2.32

JDK

Dragonwell 11OpenJDK 11

优先推荐Dragonwell,性能和支持更好。

Golang

go 1.18+

Go SDK正持续针对ARM架构进行优化,推荐您使用最新版本:

  • Go 1.16优化了ARM原子操作性能及数据拷贝。

  • Go 1.18从栈传参优化为寄存器传参,在ARM架构下有10%的性能提升。

Python

3.8

Python 2.7版本已于202011日停止维护(EOL),Python 3.6版本已于20221223日停止维护(EOL),建议您使用Python 3.7及以上版本。

PHP

7.4+

对应社区支持

容器

K8s

K8s 1.22 Containerd 1.5.0+

对应社区支持

Web应用

Nginx

使用推荐的操作系统版本提供的自带版本

操作系统发行商维护支持

httpd

使用推荐的操作系统版本提供的自带版本

操作系统发行商维护支持

NodeJS

使用推荐的操作系统版本提供的自带版本

操作系统发行商维护支持

数据库

MySQL

使用推荐的操作系统版本提供的自带版本

操作系统发行商维护支持

Redis

使用推荐的操作系统版本提供的自带版本

操作系统发行商维护支持

大数据

Hadoop

Hadoop 3.3.1

对应社区支持

Spark

Spark 3.2

对应社区支持

Hive

Hive 3.1

对应社区支持

ElasticSearch

ES 7.12

对应社区支持

其他

Gromacs

new version

对应社区支持

BWA

new version

对应社区支持

Gatk

4.3.0.0

对应社区支持

步骤三:迁移后编译

根据您的业务需求,请参考如下指导对软件进行编译构建。

参考文档

查看CPU架构

执行uname -march命令查看CPU架构,不同架构回显信息如下:

  • ARM架构显示:aarch64

    image

  • x86架构显示:x86_64

    image

查看CPU详细信息

执行lscpu命令查看CPU详细信息,不同架构回显信息如下:

  • ARM架构显示:

    image

  • x86架构显示:

    image

查看OS信息

x86架构与ARM架构的OS信息不同。执行cat /proc/version命令查看OS信息及编译器版本,不同架构回显信息如下:

  • x86架构显示:

    image

  • ARM架构显示:

    image