Migrasikan aplikasi x86 ke instans ECS berbasis Yitian 710 (g8y, c8y, r8y) untuk meningkatkan kinerja komputasi, penyimpanan, dan jaringan.
Latar Belakang
Apa itu instans ECS YiTian?
Instans ECS YiTian adalah instans ECS berbasis arsitektur ARM Yitian 710 yang menggunakan akselerasi fast-path tingkat chip untuk meningkatkan kinerja komputasi, penyimpanan, dan jaringan. Instans ini cocok untuk skenario seperti aplikasi cloud-native, pengkodean dan dekoding video, komputasi kinerja tinggi (HPC), pembelajaran mesin berbasis CPU, dan layanan game.
Keluarga instans berbasis Yitian 710 mencakup g8y, c8y, dan r8y. Untuk tipe instans dan metrik kinerja, lihat:
Mengapa melakukan migrasi?
Instans ECS YiTian menggunakan arsitektur ARM, yang berbeda dari x86. Untuk men-deploy kode sumber x86 pada instans YiTian, Anda harus mengompilasi ulang dan menerapkan optimasi khusus arsitektur.
Langkah-langkah migrasi
Migrasi aplikasi dari x86 ke YiTian melibatkan dua langkah:
-
Persiapan pra-migrasi
Rencanakan sistem operasi, perangkat lunak dasar, dan sumber daya perangkat keras. Periksa kode Anda untuk instruksi assembly atau dependensi perangkat keras khusus x86. Verifikasi versi ARM dari pustaka pihak ketiga dan lakukan pengujian kompatibilitas.
-
Kompilasi dan migrasi perangkat lunak
Instal kompilator dan versi perangkat lunak yang sesuai untuk bahasa pemrograman Anda, lalu kompilasi ulang.
Skenario migrasi
Migrasi perangkat lunak biasanya melibatkan dua skenario:
-
Perangkat lunak kode sumber: Perangkat lunak yang Anda kembangkan atau tingkatkan berdasarkan proyek open source. Bahasa-bahasa tersebut terbagi menjadi dua kategori:
-
Bahasa terkompilasi: Bahasa seperti C++ dan Go dikompilasi menjadi biner khusus arsitektur dan memerlukan kompilasi ulang setelah migrasi. Lihat File build Make/CMake dan Migrasi bahasa C/C++.
-
Bahasa terinterpretasi: Bahasa seperti Java dan Python menghasilkan bytecode yang independen terhadap arsitektur dan secara teori dapat dijalankan lintas arsitektur. Namun, jika melibatkan pustaka native—misalnya, aplikasi Java yang memanggil pustaka dinamis C melalui JNI—maka aplikasi tersebut menjadi bergantung pada arsitektur dan harus dikompilasi ulang. Lihat Migrasi bahasa Java dan Migrasi bahasa Python.
-
-
Perangkat lunak open source: Perangkat lunak yang diunduh dari komunitas open source tanpa modifikasi, atau perangkat lunak yang termasuk dalam ekosistem OS Anda. Sebagian besar perangkat lunak open source sudah mendukung platform ARM YiTian dan dapat langsung diinstal dari manajer paket OS Anda. Lihat Migrasi perangkat lunak open source.
Prosedur migrasi
Siapkan sumber daya lingkungan yang diperlukan, termasuk instans ECS, sistem operasi, dan perangkat lunak dasar, lalu ikuti prosedur berikut:
Langkah 1: Buat instans ECS YiTian
Lihat Buat instans kustom. Perhatikan parameter berikut:
|
Parameter |
Deskripsi |
|
Instance type |
|
|
Image |
|
Langkah 2: Migrasi perangkat lunak
Tabel berikut mencantumkan versi yang direkomendasikan untuk kompilator, pustaka runtime, dan aplikasi. Instal sesuai kebutuhan.
|
Kategori |
Perangkat Lunak |
Versi yang direkomendasikan |
Deskripsi |
|
Compiler |
GCC |
gcc 10.2.1 |
Gunakan GCC 10 atau versi lebih baru untuk peningkatan kinerja signifikan. |
|
LLVM |
LLVM 13/clang 13 |
|
|
|
Glibc |
glibc 2.32 |
Tidak ada |
|
|
JDK |
Dragonwell 11 atau OpenJDK 11 |
Dragonwell lebih disarankan karena kinerja dan dukungan yang lebih baik. |
|
|
Golang |
go 1.18+ |
SDK Go terus dioptimalkan untuk ARM. Gunakan versi terbaru:
|
|
|
Python |
3.8 |
Python 2.7 mencapai EOL pada 1 Januari 2020. Python 3.6 mencapai EOL pada 23 Desember 2022. Gunakan Python 3.7 atau versi lebih baru. |
|
|
PHP |
7.4+ |
Didukung komunitas |
|
|
Container |
K8s |
K8s 1.22 Containerd 1.5.0+ |
Didukung komunitas |
|
Web application |
Nginx |
Gunakan versi yang disertakan dengan OS. |
Dikelola oleh distributor OS |
|
httpd |
Gunakan versi yang disertakan dengan OS. |
Dikelola oleh distributor OS |
|
|
NodeJS |
Gunakan versi yang disertakan dengan OS. |
Dikelola oleh distributor OS |
|
|
Database |
MySQL |
Gunakan versi yang disertakan dengan OS. |
Dikelola oleh distributor OS |
|
Redis |
Gunakan versi yang disertakan dengan OS. |
Dikelola oleh distributor OS |
|
|
Big data |
Hadoop |
Hadoop 3.3.1 |
Didukung komunitas |
|
Spark |
Spark 3.2 |
Didukung komunitas |
|
|
Hive |
Hive 3.1 |
Didukung komunitas |
|
|
ElasticSearch |
ES 7.12 |
Didukung komunitas |
|
|
Others |
Gromacs |
Versi terbaru |
Didukung komunitas |
|
BWA |
Versi terbaru |
Didukung komunitas |
|
|
Gatk |
4.3.0.0 |
Didukung komunitas |
Langkah 3: Kompilasi dan build
Kompilasi dan build perangkat lunak Anda berdasarkan panduan berikut:
-
Migrasi kode sumber
-
Migrasi perangkat lunak open source
Gunakan perangkat lunak open source seperti Nginx, MySQL, Redis, TensorFlow, dan PyTorch pada instans ECS YiTian.
Referensi
Periksa arsitektur CPU
Jalankan uname -m atau arch untuk memeriksa arsitektur CPU. Output bervariasi tergantung arsitektur:
-
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
Periksa informasi CPU detail
Jalankan lscpu untuk melihat informasi CPU detail. Output bervariasi tergantung arsitektur:
-
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
Periksa informasi OS
Jalankan cat /proc/version untuk memeriksa versi OS dan kompilator. Output bervariasi tergantung arsitektur:
-
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