基于倚天710 ARM CPU架构的倚天云服务器可以显著提升实例的计算、存储和网络性能。您可以将x86平台的应用迁移到倚天实例服务器上使用,获取更优性能的云服务体验。本文介绍迁移到倚天云服务器的迁移步骤、场景和使用流程。
迁移背景
什么是倚天云服务器
倚天云服务器是基于倚天实例(包含倚天710 ARM CPU架构的ECS实例)的云服务器。通过芯片快速路径加速手段,完成计算、存储、网络性能的数量级提升,可应用于云原生、视频编解码、高性能计算、基于CPU的机器学习和游戏服务等场景。
基于倚天710 ARM CPU架构的实例规格族包括g8y、c8y和r8y。您可以通过以下链接了解实例规格及计算、存储、网络等指标数据。
迁移必要性
倚天云服务器采用ARM架构(与x86架构不同)。若需将x86平台上的源代码程序部署到倚天云服务器上使用,必须经过重新编译,并建议进行针对性优化以提升性能。
迁移步骤
将基于x86平台的应用迁移到倚天服务器上,主要分为以下两步:
迁移前准备
您需要规划云服务器的操作系统、基础软件选型、硬件资源配置;需要检查代码是否存在x86架构相关的汇编指令、硬件特性依赖等;需要检查第三方库是否提供ARM版本;需要进行兼容性测试等。
软件编译迁移。
根据软件编程语言,安装编译器、软件版本等,之后重新编译。
迁移场景
软件编译迁移主要包含以下两种场景:
源码软件:指开发者开发的或者基于开源软件增强开发的软件。自研软件使用的编程语言主要包含以下两类:
编译型语言:以C++/Go为代表的编译型语言,这些语言会将源代码编译成架构相关的二进制文件,因此迁移后必须进行重新编译。更多信息,请参见Make/CMake构建文件和C/C++语言迁移。
解释型语言:以Java/Python为代表的解释型语言,这些语言源代码编译文件与架构无关,理论上可以跨架构运行。但是,如果解释型语言引入了本地库,比如Java应用通过JNI调用了C开发的动态链接库,那么此应用就与架构相关,必须重新编译。更多信息,请参见Java语言迁移和Python语言迁移。
开源软件:开源软件指开发者从开源社区下载未做源码修改的软件或者所使用操作系统生态中默认携带的软件。当前大部分开源软件在倚天ARM平台上已经提供较好的应用生态,您可以直接使用操作系统提供的开源生态软件来安装部署。更多信息,请参见开源软件迁移。
迁移流程
从x86平台迁移到倚天云服务器之前,需要准备环境资源,包括云服务器、操作系统、基础软件。将x86平台业务软件迁移到倚天云服务器,具体流程如下:
步骤一:创建倚天云服务器
具体步骤,请参见自定义购买实例。您需要注意以下参数。
参数 | 说明 |
实例规格 |
|
镜像 |
|
步骤二:软件迁移
软件迁移主要分为自研软件和开源软件,推荐使用的编译器、运行库、应用等版本如下表所示。请自行安装使用。
分类 | 软件 | 推荐版本 | 说明 |
编译器 | GCC | gcc 10.2.1 | 建议使用gcc 10以上版本,性能有大幅提升。 |
LLVM | LLVM 13/clang 13 |
| |
Glibc | glibc 2.32 | 无 | |
JDK | Dragonwell 11或OpenJDK 11 | 优先推荐Dragonwell,性能和支持更好。 | |
Golang | go 1.18+ | Go SDK正持续针对ARM架构进行优化,推荐您使用最新版本:
| |
Python | 3.8 | Python 2.7版本已于2020年1月1日停止维护(EOL),Python 3.6版本已于2022年12月23日停止维护(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 | 对应社区支持 |
步骤三:迁移后编译
根据您的业务需求,请参考如下指导对软件进行编译构建。
源码迁移
介绍如何在倚天云服务上使用Nginx、MySQL、Redis、TensorFlow、PyTorch等开源软件的方法。
参考文档
查看CPU架构
执行uname -m或arch命令查看CPU架构,不同架构回显信息如下:
ARM架构显示:aarch64
[ t@iUf682 xxx ~]# uname -m aarch64 [ t@iUf682 xxx ~]# arch aarch64x86架构显示:x86_64
[root@iZbp144worxxx : ~]# uname -m x86_64 [root@iZbp144worxxx : ~]# arch x86_64
查看CPU详细信息
执行lscpu命令查看CPU详细信息,不同架构回显信息如下:
ARM架构显示:
[root@iZuf682t1xxx ~]# lscpu Architecture: aarch64 Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 1 Core(s) per cluster: 4 Socket(s): 1 Cluster(s): 1 NUMA node(s): 1 Vendor ID: ARM BIOS Vendor ID: Alibaba Cloud Model: 1 Model name: Neoverse-N1 BIOS Model name: virt-rhel7.6.0 Stepping: r3p1 BogoMIPS: 50.00 NUMA node0 CPU(s): 0-3 Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp ssbsx86架构显示:
[ @iZbp14x ~]# lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 16 On-line CPU(s) list: 0-15 Thread(s) per core: 2 Core(s) per socket: 8 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 106 Model name: Intel(R) Xeon(R) Platinum 8369B CPU @ 2.90GHz Stepping: 6 CPU MHz: 2899.998 BogoMIPS: 5799.99 Hypervisor vendor: KVM Virtualization type: full L1d cache: 48K L1i cache: 32K L2 cache: 1280K L3 cache: 49152K NUMA node0 CPU(s): 0-15 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq monitor ssse3 fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves wbnoinvd arat avx512vbmi avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid fsrm arch_capabilities
查看OS信息
x86架构与ARM架构的OS信息不同。执行cat /proc/version命令查看OS信息及编译器版本,不同架构回显信息如下:
x86架构显示:
[root@iZbp144worxxx ~]# cat /proc/version Linux version 4.19.91-26.1.al7.x86_64 (mockbuild@x86-003.build.alibaba.cm10) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)) #1 SMP Tue Jul 26 17:52:28 CST 2022ARM架构显示:
[root@iZuf682t ~]# cat /proc/version Linux version 5.10.134-12.al8.aarch64 (mockbuild@r75e11320.cm10.tbsite.net) (gcc (GCC) 10.2.1 20200825 (Alibaba 10.2.1-3 2.32), GNU ld version 2.35-12.2.al8) #1 SMP Tue Sep 6 07:11:41 UTC 2022