All Products
Search
Document Center

Elastic Compute Service:Migrate applications from the x86 platform to a YiTian ECS instance

Last Updated:May 16, 2025

YiTian Elastic Compute Service (ECS) instances that use the Arm-based YiTian710 CPU architecture significantly improve computing, storage, and network performance. You can migrate applications from x86 platforms to a YiTian ECS instance to obtain better cloud service experience. This topic describes the procedure, scenarios, and usage for migrating applications to a YiTian ECS instance.

Background information

YiTian ECS instances

YiTian ECS instances include ECS instances that use the Arm-based YiTian 710 CPU architecture. YiTian ECS instances perform fast path acceleration on chips to greatly improve storage performance, network performance, and computing stability. The instances are suitable for various scenarios, such as cloud native applications, video encoding and decoding, high-performance computing, CPU-based machine learning, and gaming services.

Note

g8y, c8y, and r8y instance families use the Arm-based YiTian 710 CPU architecture. You can learn about instance types and metrics, such as computing, storage, network metrics by referring to the following topics:

Necessity for migration

YiTian ECS instances use the Arm architecture that is different from the x86 architecture. Before you deploy a program whose source code is developed for an x86 platform on a YiTian ECS instance, you must recompile the program and optimize the code as needed to improve performance.

Migration process

The process of migrating applications from an x86 platform to a YiTian ECS instance involves the following main steps:

  1. Prepare before migration

    Plan the operating system, select basic software, and configure hardware resources of the instance that you want to migrate. Check whether the code contains x86-related assembly instructions or hardware and feature dependencies and whether third-party libraries provide Arm versions. You also need to perform compatibility tests.

  2. Compile and migrate software

    Install compilers and software versions based on the programming language, and then recompile the code.

Migration scenarios

Software compilation and migration scenarios involve the following types of software:

  • Source code software: developed by developers or enhanced based on open source software. Most in-house software uses the following types of programming languages:

    • Compiled language: typically includes C++ and Go. These languages compile source code into architecture-specific binary files. The files must be recompiled after migration. For more information, see Use Make and CMake to build files and Migrate C or C++ code.

    • Interpreted language: typically includes Java and Python. Files compiled from source code in these languages are independent of architectures and can theoretically run across architectures. If a native library is introduced in an interpreted language, such as when a Java application uses Java Native Interface (JNI) to call a dynamic-link library that is developed in C, the application is related to an architecture and must be recompiled. For more information, see Migrate Java code and Migrate Python.

  • Open source software: downloaded from open source communities without modification or comes with operating systems. Most open source software is supported by the Arm-based YiTian platform. You can directly use open source software provided in operating systems. For more information, see Migrate open source software.

Procedure

Before you migrate software from the x86 platform to the YiTian ECS instance, prepare environmental resources, including the instance, operating system, and basic software. Perform the following steps:

Step 1: Create a YiTian ECS instance

For more information, see Create an instance on the Custom Launch tab. Take note of the parameters described in the following table.

Parameter

Description

Instance family

  • g8y (recommended)

  • c8y

  • r8y

Image

  • Alibaba Cloud Linux

    • Alibaba Cloud Linux 3.2104 LTS 64-bit for Arm (recommended)

    • Alibaba Cloud Linux 3.2104 LTS 64-bit for Arm (MLPS 2.0 Level 3)

  • Anolis OS

    • Anolis 8.8 RHCK 64-bit for Arm

    • Anolis 8.8 ANCK 64-bit for Arm (MLPS 2.0 Level 3)

    • Anolis 8.8 ANCK 64-bit for Arm

    • Anolis 8.6 RHCK 64-bit for Arm

    • Anolis 8.6 ANCK 64-bit for Arm

    • Anolis 8.4 RHCK 64-bit for Arm

    • Anolis 8.4 ANCK 64-bit for Arm

    • Anolis 7.9 RHCK 64-bit for Arm

    • Anolis 7.9 ANCK 64-bit for Arm

  • Ubuntu

    • Ubuntu 22.04 64-bit for Arm

    • Ubuntu 20.04 64-bit for Arm

    • Ubuntu 18.04 64-bit for Arm

  • CentOS 7.9 64-bit for Arm

    Note

    CentOS 7 series reached end of life (EOL). We recommend that you do not use this version.

  • Debian

    • Debian 11.5 64-bit for Arm

    • Debian 11.2 64-bit for Arm

    • Debian 10.13 64-bit for Arm

      Note

      Debian 10.13 reached EOL. We recommend that you do not use this version.

Step 2: Migrate software

Software to be migrated includes in-house software and open source software. The following table describes the recommended versions of compilers, runtime libraries, and applications. Install and use the software based on your business requirements.

Category

Software

Recommended version

Description

Compilers

GCC

GCC 10.2.1

We recommend that you use GCC 10 or later for significant performance improvements.

LLVM

LLVM 13/Clang 13

  • When you use Clang 13, the GNU C Library (glibc) version must be 2.17 or later.

  • When you use Clang 13, the C++ runtime library that is used must be libstdc++ (GCC 6 or later, or GCC 9 or later).

  • Clang 13 depends on LLVM 13 and GCC-C++ Package Manager (RPM).

Glibc

glibc 2.32

None.

JDK

Dragonwell 11 or OpenJDK 11

We recommend that you use Dragonwell for better performance and support.

Golang

Go 1.18+

SDKs for Go are optimized for Arm architectures. We recommend that you use the following versions:

  • Go 1.16: The performance of Arm atomic operations and data copying operations is optimized.

  • Go 1.18: Parameters are passed in by using registers instead of stacks. This version provides a 10% performance improvement for the Arm architecture.

Python

3.8

Python 2.7 reached EOL on January 1, 2020. Python 3.6 reached EOL on December 23, 2022. We recommend that you use Python 3.7 or later.

PHP

7.4+

Supported by the community.

Containers

Kubernetes

Kubernetes 1.22 Containerd 1.5.0+

Supported by the community.

Web applications

NGINX

The version that comes with the recommended operating system

Maintained and supported by the operating system provider.

HTTPd

The version that comes with the recommended operating system

Maintained and supported by the operating system provider.

NodeJS

The version that comes with the recommended operating system

Maintained and supported by the operating system provider.

Databases

MySQL

The version that comes with the recommended operating system

Maintained and supported by the operating system provider.

Redis

The version that comes with the recommended operating system

Maintained and supported by the operating system provider.

Big data

Hadoop

Hadoop 3.3.1

Supported by the community.

Spark

Spark 3.2

Supported by the community.

Hive

Hive 3.1

Supported by the community.

Elasticsearch

ES 7.12

Supported by the community.

Others

Gromacs

Latest version

Supported by the community.

BWA

Latest version

Supported by the community.

Gatk

4.3.0.0

Supported by the community.

Step 3: Perform post-migration compilation

Refer to the following guides to compile and build software based on your business requirements.

References

View the CPU architecture

Run the uname -m or arch command to view the CPU architecture. The command output varies based on the architecture:

  • aarch64 indicates the Arm architecture.

    image

  • x86_64 indicates the x86 architecture.

    image

View detailed CPU information

Run the lscpu command to view detailed CPU information. The command output varies based on the architecture.

  • Arm

    image

  • x86

    image

View operating system information

The operating system information differs between x86 and Arm architectures. Run the cat /proc/version command to view the operating system information and compiler version. The command output varies based on the architecture.

  • x86

    image

  • Arm

    image