All Products
Search
Document Center

Elastic Compute Service:Migrate x86 applications to YiTian ECS instances

Last Updated:Jul 15, 2026

Migrate x86 applications to Yitian 710-based ECS instances (g8y, c8y, r8y) for improved compute, storage, and network performance.

Background

What are YiTian ECS instances?

YiTian ECS instances are ECS instances based on the Yitian 710 ARM architecture. They use chip-level fast-path acceleration to enhance compute, storage, and network performance. They suit scenarios such as cloud-native applications, video encoding and decoding, high-performance computing (HPC), CPU-based machine learning, and game services.

Note

Instance families based on the Yitian 710 include g8y, c8y, and r8y. For instance types and performance metrics, see:

Why migrate?

YiTian ECS instances use the ARM architecture, which differs from x86. To deploy x86 source code on a YiTian instance, you must recompile it and apply architecture-specific optimizations.

Migration steps

Migrating an application from x86 to YiTian involves two steps:

  1. Pre-migration preparation

    Plan the operating system, base software, and hardware resources. Check your code for x86-specific assembly instructions or hardware dependencies. Verify ARM versions of third-party libraries and run compatibility tests.

  2. Software compilation and migration

    Install the appropriate compiler and software versions for your programming language, then recompile.

Migration scenarios

Software migration typically involves two scenarios:

  • Source code software: Software you developed or enhanced based on open source projects. The languages fall into two categories:

    • Compiled languages: Languages such as C++ and Go compile into architecture-specific binaries and require recompilation after migration. See Make/CMake build files and C/C++ language migration.

    • Interpreted languages: Languages such as Java and Python produce architecture-independent bytecode and can theoretically run cross-architecture. However, if a native library is involved—for example, a Java application calling a C dynamic-link library through JNI—the application becomes architecture-dependent and must be recompiled. See Java language migration and Python language migration.

  • Open source software: Software downloaded from open source communities without modifications, or software included in your OS ecosystem. Most open source software already supports the YiTian ARM platform and can be installed directly from your OS package manager. See Open source software migration.

Migration procedure

Prepare the required environment resources, including the ECS instance, operating system, and base software, then follow this procedure:

Step 1: Create a YiTian ECS instance

See Create a custom instance. Note the following parameters:

Parameter

Description

Instance type

  • g8y (Preferred)

  • c8y

  • r8y

Image

  • Alibaba Cloud Linux

    • Alibaba Cloud Linux 3.2104 LTS 64-bit for ARM (Preferred)

    • Alibaba Cloud Linux 3.2104 LTS 64-bit for ARM MLPS 2.0 Level 3 compliant edition

  • Anolis OS

    • Anolis 8.8 64-bit for ARM (RHCK)

    • Anolis 8.8 64-bit for ARM (ANCK) MLPS 2.0 Level 3 compliant edition

    • Anolis 8.8 64-bit for ARM (ANCK)

    • Anolis 8.6 64-bit for ARM (RHCK)

    • Anolis 8.6 64-bit for ARM (ANCK)

    • Anolis 8.4 64-bit for ARM (RHCK)

    • Anolis 8.4 64-bit for ARM (ANCK)

    • Anolis 7.9 64-bit for ARM (RHCK)

    • Anolis 7.9 64-bit for ARM (ANCK)

  • 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 has reached EOL. Not recommended.

  • 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 has reached EOL. Not recommended.

Step 2: Migrate software

The following table lists recommended versions for compilers, runtime libraries, and applications. Install as needed.

Category

Software

Recommended version

Description

Compiler

GCC

gcc 10.2.1

Use GCC 10 or later for significant performance improvements.

LLVM

LLVM 13/clang 13

  • Requires glibc 2.17 or later.

  • Uses libstdc++ (from GCC 6/9 or later) as the C++ runtime library.

  • Depends on LLVM 13 and gcc-c++ RPM packages.

Glibc

glibc 2.32

None

JDK

Dragonwell 11 or OpenJDK 11

Dragonwell is preferred for better performance and support.

Golang

go 1.18+

The Go SDK is continuously optimized for ARM. Use the latest version:

  • Go 1.16 improves ARM atomic operation performance and data copying.

  • Go 1.18 passes parameters in registers instead of on the stack, providing a 10% performance boost on ARM.

Python

3.8

Python 2.7 reached EOL on January 1, 2020. Python 3.6 reached EOL on December 23, 2022. Use Python 3.7 or later.

PHP

7.4+

Community-supported

Container

K8s

K8s 1.22 Containerd 1.5.0+

Community-supported

Web application

Nginx

Use the version included with the OS.

Maintained by the OS distributor

httpd

Use the version included with the OS.

Maintained by the OS distributor

NodeJS

Use the version included with the OS.

Maintained by the OS distributor

Database

MySQL

Use the version included with the OS.

Maintained by the OS distributor

Redis

Use the version included with the OS.

Maintained by the OS distributor

Big data

Hadoop

Hadoop 3.3.1

Community-supported

Spark

Spark 3.2

Community-supported

Hive

Hive 3.1

Community-supported

ElasticSearch

ES 7.12

Community-supported

Others

Gromacs

Latest version

Community-supported

BWA

Latest version

Community-supported

Gatk

4.3.0.0

Community-supported

Step 3: Compile and build

Compile and build your software based on the following guides:

References

Check the CPU architecture

Run uname -m or arch to check the CPU architecture. The output varies by architecture:

  • ARM: `aarch64`

    [  t@iUf682 xxx         ~]# uname -m
    aarch64
    [  t@iUf682 xxx         ~]# arch
    aarch64
    
  • x86: `x86_64`

    [root@iZbp144worxxx : ~]# uname -m
    x86_64
    [root@iZbp144worxxx : ~]# arch
    x86_64
    

Check detailed CPU information

Run lscpu to view detailed CPU information. The output varies by architecture:

  • 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 ssbs
    
  • x86:

    [  @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
    

Check OS information

Run cat /proc/version to check the OS and compiler version. The output varies by architecture:

  • 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 2022
    
  • ARM:

    [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