VPS ARM vs x86: Apa yang Sebenarnya Berubah?
VPS ARM biasanya lebih murah per core, tetapi tidak semua software kompatibel. Cek arm64, aarch64, amd64, image container, dan build sebelum membayar.
Perubahan saat beralih ke VPS ARM
VPS ARM menjalankan Linux dan Nginx yang sama seperti VPS x86, dan biasanya biayanya lebih rendah per core. Risiko saat beralih adalah kompatibilitas. Program yang dikompilasi untuk x86-64 sama sekali tidak dapat berjalan pada arm64, sehingga setiap komponen dalam stack Anda harus menyediakan build arm64 atau dapat Anda build ulang.
Sebagian besar stack modern memenuhi persyaratan ini tanpa pekerjaan tambahan. Masalah biasanya terdapat pada dua hal: image container yang hanya pernah dibuat untuk satu arsitektur, dan software closed source yang tidak menyediakan unduhan arm64. Perintah di bawah ini membantu menjawab kedua pertanyaan tersebut untuk stack Anda sendiri sebelum Anda membayar sebuah instance. Jika Anda masih menentukan jenis server yang dibutuhkan, mulai dari apa itu VPS dan perbedaannya dengan shared hosting.
arm64, aarch64, amd64: arti setiap nama
Jalankan perintah berikut pada instance apa pun sebelum melakukan hal lain.
uname -m
dpkg --print-architecture
lscpu | head -n 12
getconf PAGESIZEuname -m menampilkan aarch64 pada mesin ARM dan x86_64 pada mesin Intel atau AMD. dpkg --print-architecture menampilkan arm64 dan amd64 pada kedua jenis mesin tersebut. Keduanya benar. Kernel Linux dan sistem packaging Debian menggunakan nama yang berbeda untuk instruction set yang sama. Jadi, aarch64 dan arm64 berarti satu jenis, sedangkan x86_64 dan amd64 berarti jenis lainnya. Docker menggunakan nama bergaya Debian. Karena itu, platform image ditulis sebagai linux/arm64.
Pada arm64, tidak ada baris model name di dalam /proc/cpuinfo. Sebagai gantinya, terdapat field Features. Hardware crypto muncul di sana sebagai flag seperti aes pmull sha1 sha2. Itu adalah ARMv8 Cryptographic Extensions. Fitur tersebut menjalankan fungsi yang sama seperti AES-NI pada prosesor Intel dan AMD: mempercepat TLS (transport layer security) dan enkripsi disk melalui hardware. Memeriksa akselerasi hardware AES pada VPS menjelaskan pengujian untuk kedua arsitektur.
Mengapa container pertama kali gagal, dan seperti apa error-nya
Setiap manifest image Docker mencatat arsitektur tempat image tersebut dibuat. Jika Anda melakukan pull image yang hanya memiliki manifest amd64 ke host arm64, proses pull berhasil. Kegagalan terjadi saat proses pertama dijalankan:
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
exec /usr/local/bin/docker-entrypoint.sh: exec format errorexec format error berarti kernel menolak menjalankan file tersebut karena header ELF (executable and linkable format) menyebutkan jenis mesin yang tidak didukung CPU ini. Tidak ada pengaturan yang dapat memperbaikinya. Instruksi tersebut tidak tersedia pada perangkat keras CPU.
Periksa manifest sebelum melakukan deployment:
docker buildx imagetools inspect nginx:1.27Output tersebut mencantumkan satu baris Platform: untuk setiap image dalam daftar manifest, seperti linux/amd64 dan linux/arm64. Jika linux/arm64 tidak ada, tag tersebut tidak akan berjalan pada VPS ARM. docker manifest inspect --verbose nginx:1.27 menampilkan informasi yang sama, tetapi Docker mendokumentasikan docker manifest sebagai perintah eksperimental yang perilakunya dapat berubah antar-rilis. Karena itu, gunakan imagetools.
Untuk image yang Anda buat sendiri, buat kedua arsitektur dalam satu perintah, lalu push daftar manifest:
docker buildx build --platform linux/amd64,linux/arm64 -t registry.example.com/app:1.4 --push .Pembuatan untuk arsitektur lain pada satu host memerlukan emulasi mode pengguna QEMU yang terdaftar pada handler binfmt_misc milik kernel:
docker run --privileged --rm tonistiigi/binfmt --install allGunakan emulasi untuk membuat dan menguji image. Jangan gunakan emulasi untuk melayani trafik. Dokumentasi Docker sendiri menyatakan bahwa emulasi dengan QEMU "dapat jauh lebih lambat daripada build native, terutama untuk tugas yang intensif komputasi seperti kompilasi dan kompresi atau dekompresi". Karena itu, service x86 yang diemulasikan pada instance ARM dapat menghilangkan penghematan yang menjadi alasan Anda berpindah. Penyiapan host untuk kasus native identik pada kedua arsitektur: menjalankan Docker pada VPS membahasnya, dan file Compose yang sudah ada dapat digunakan tanpa perubahan setelah setiap image di dalamnya memiliki manifest arm64.
Apakah paket yang saya perlukan tersedia untuk arm64?
Ubuntu dan Debian membangun hampir seluruh arsipnya untuk arm64, sehingga apt install nginx postgresql redis-server berperilaku sama pada kedua arsitektur tersebut. Kesenjangan biasanya terdapat pada repositori pihak ketiga.
Tanyakan langsung kepada apt pada instance ARM:
apt-cache policy some-vendor-agent
apt-get install -s some-vendor-agentPelaporan apt-cache policy oleh Candidate: (none) berarti tidak ada repositori yang diaktifkan dan menerbitkan build paket tersebut untuk arsitektur ini. apt-get install -s menyimulasikan instalasi tanpa menulis perubahan apa pun. Dalam kasus yang sama, perintah tersebut berakhir dengan E: Unable to locate package.
Kemudian baca output apt update, bukan melewatinya dengan menggulir. Repositori vendor yang hanya mendukung amd64 akan menyatakannya:
N: Skipping acquire of configured file 'main/binary-arm64/Packages' as repository 'https://repo.example.com/apt stable InRelease' doesn't support architecture 'arm64'Repositori tersebut telah dikonfigurasi dan dapat dijangkau, tetapi tidak menyediakan apa pun yang dapat diinstal oleh mesin ini. Periksa juga entri sumbernya. Baris yang dipasang pin dengan [arch=amd64] akan dilewati pada host arm64, sehingga paket terlihat tidak tersedia, padahal penyebab sebenarnya adalah pin tersebut.
Beban kerja mana yang aman, dan mana yang perlu diperiksa terlebih dahulu
Runtime yang ditafsirkan dan runtime bytecode sejak awal dirancang agar portabel. PHP, Python, Ruby, dan Node.js semuanya memiliki paket arm64 dalam distribusi utama. Go dan Rust dapat melakukan kompilasi silang ke arm64 dengan menetapkan satu target. LEMP stack, API Node, binary Go di belakang Nginx, atau database Postgres merupakan pekerjaan umum pada arm64.
Kompilator just in time (JIT) menghasilkan machine code saat program berjalan, sehingga memerlukan code generator untuk arsitektur target. Versi saat ini memilikinya: OpenJDK, .NET, engine V8 di dalam Node.js, dan PyPy semuanya mendukung arm64 pada Linux. Risiko sebenarnya ada pada versi lama yang dipatok. deploy script yang memasang rilis runtime dari beberapa tahun lalu harus diperiksa terhadap catatan rilis tersebut untuk memastikan dukungan aarch64, bukan langsung diasumsikan akan berfungsi.
Library yang memuat assembly x86 yang ditulis secara manual, atau intrinsic SSE dan AVX, merupakan kasus yang lebih sulit dikenali. Sebagian besar juga memiliki jalur NEON (NEON adalah instruction set vektor ARM) atau fallback C biasa, sehingga dapat dikompilasi dan dijalankan. Performanya dapat berbeda dari build x86, baik lebih cepat maupun lebih lambat. Ukur hal tersebut pada instance Anda, bukan memprediksinya berdasarkan sebuah artikel.
Software closed source merupakan penghambat yang sebenarnya. Agent monitoring vendor, driver database berlisensi, control panel komersial, atau daemon anti-virus hadir sebagai binary hasil kompilasi. Jika vendor tidak menyediakan build arm64, tidak ada tindakan yang dapat Anda lakukan untuk mengatasinya. cPanel dan WHM adalah contoh paling jelas dalam hosting: persyaratan sistemnya mencantumkan x86_64 dan tidak mencantumkan ARM, sehingga server control panel tetap menggunakan x86 (diperiksa pada Agustus 2026, dan layak dibaca kembali pada halaman persyaratan milik vendor). Jika hanya hal itu yang menghambat Anda, alternatif cPanel yang layak dijalankan pada VPS adalah titik awalnya. Periksa dukungan arsitektur masing-masing dengan cara yang sama.
Kernel dan ukuran halaman: bagian yang masih berbeda pada instance ARM
Server x86-64 hampir dapat dipertukarkan. Server ARM kurang seragam, dan perbedaannya berada di bawah lapisan aplikasi Anda.
Ukuran halaman adalah perbedaan yang terlihat saat produksi. Sebagian besar kernel arm64 menggunakan halaman berukuran 4 KiB, sama seperti x86-64. Sebagian lainnya menggunakan 64 KiB. Red Hat Enterprise Linux 8 untuk aarch64 menyediakan kernel dengan halaman 64 KiB secara default, sedangkan RHEL 9 mengembalikan default ke 4 KiB sambil tetap menyediakan paket kernel-64k terpisah untuk workload yang memerlukan ukuran lebih besar. Ukuran halaman 64 KiB meningkatkan batas minimum memori bagi proses dengan banyak pemetaan kecil karena ukuran blok terkecil yang dapat dialokasikan kernel menjadi enam belas kali lebih besar. Jalankan getconf PAGESIZE pada instance dan baca nilainya, bukan mengasumsikannya. Ukuran halaman bukan satu-satunya keputusan kernel yang berdampak pada Anda, karena versi yang disediakan provider juga menentukan cara pekerjaan dijadwalkan ke core, dan penjadwalan yang mempertimbangkan cache yang ditambahkan di Linux 7.2 berlaku pada arm64 dan x86-64.
Ada beberapa perbedaan kecil lain yang perlu diketahui. Tidak ada paket microcode CPU dari sistem operasi pada arm64, sehingga pembaruan firmware berasal dari provider Anda, bukan dari apt. Server ARM melakukan boot melalui UEFI (unified extensible firmware interface) dan mendeskripsikan perangkat kerasnya melalui ACPI (advanced configuration and power interface). Beberapa fitur x86 sama sekali tidak memiliki padanan di ARM, termasuk enkripsi memori AMD SEV dan GPU termediiasi Intel GVT-g.
Apakah platform server ARM sudah matang?
Dari sisi perangkat lunak, ya. Debian, Ubuntu, Fedora, dan RHEL semuanya merilis build arm64 kelas satu, dan image resmi di Docker Hub pada umumnya sudah mendukung multi-arsitektur.
Bukti terbaru yang paling jelas adalah Proxmox. Pada 5 August 2026, Proxmox mengumumkan edisi arm64 pertama Proxmox Virtual Environment yang didukung secara resmi, yaitu version 9.2. Edisi ini menggunakan repositori paket dan siklus rilis yang sama dengan edisi x86-64. Edisi tersebut dibangun di atas Debian 13.5 dengan Linux 7.0, QEMU 11.0, LXC 7.0, dan ZFS 2.4. Konfigurasi dan tooling-nya sama dengan x86-64, kecuali beberapa hal khusus arsitektur.
Baca batasannya dalam pengumuman yang sama. Batasan tersebut menunjukkan bahwa perangkat keras server ARM yang didukung secara resmi masih sangat terbatas. Proxmox memvalidasi sistem NVIDIA Grace dan NVIDIA Vera sejak hari pertama, setelah pengujian bersama NVIDIA dan Supermicro pada perangkat keras Grace Hopper. Perangkat keras ARMv8-A dan ARMv9-A lain yang berbasis UEFI mendapat dukungan best effort. Single-board computer yang hanya menggunakan device tree, seperti Raspberry Pi, tidak didukung. Guest hanya dapat berjalan pada node dengan arsitektur yang sama. Live migration hanya berfungsi di antara node dengan arsitektur yang sama. Cluster dengan arsitektur campuran tidak didukung secara resmi.
Itulah kondisi sebenarnya per August 2026. Vendor hypervisor yang merilis arm64 dengan siklus dukungan yang sama seperti x86-64 merupakan kemajuan nyata bagi platform ini. Daftar perangkat keras yang didukung sejak hari pertama hanya mencakup dua keluarga CPU.
Daftar periksa yang perlu dijalankan sebelum menetapkan pilihan
- Jalankan
uname -mpada instance uji dan pastikan perintah tersebut mencetakaarch64. - Jalankan
docker buildx imagetools inspectpada setiap image dalam file Compose dan pastikan terdapat baris platformlinux/arm64untuk masing-masing image. - Jalankan
apt updatepada instance ARM dan baca setiap peringatanSkipping acquireyang dicetaknya. - Buka halaman unduhan setiap agent closed source yang Anda gunakan, lalu cari build arm64 atau aarch64 berdasarkan nama.
- Jalankan
getconf PAGESIZEdan catat jawabannya sebelum menentukan kapasitas memori. - Jalankan benchmark Anda sendiri pada plan ARM dan plan x86 yang sedang Anda pertimbangkan.
Klaim yang tidak dibuat oleh artikel ini
Kami tidak akan memberikan rasio harga terhadap performa ARM dibandingkan dengan x86. Harga per core berbeda-beda menurut provider dan paket, dan angka yang diukur pada hardware milik orang lain tidak dapat memprediksi hasil pada hardware Anda. Lakukan pengukuran sendiri. Panduan kami untuk melakukan benchmarking VPS membahas sysbench dan fio dengan metode yang dapat Anda ulangi, sedangkan biaya sebenarnya sebuah VPS membahas sisi harga dalam perbandingan ini. Penyimpanan merupakan keputusan yang terpisah dari arsitektur CPU, dan perbandingan NVMe dengan SATA SSD pada VPS membahas bagian tersebut. Jalankan pengujian yang sama pada kedua paket, gunakan workload Anda sendiri jika memungkinkan, lalu jadikan hasil pengukuran Anda sebagai dasar keputusan.
FAQ
Apakah container Docker saya akan berjalan pada VPS ARM?
Container akan berjalan jika setiap image dalam stack memiliki entri linux/arm64 di manifest-nya. Periksa masing-masing image dengan docker buildx imagetools inspect <image> dan cari baris Platform: linux/arm64. Image resmi di Docker Hub biasanya mendukung multi-arsitektur. Image dari vendor yang lebih kecil, serta image yang Anda build sendiri pada mesin x86, sering kali tidak mendukungnya. Untuk image Anda sendiri, lakukan build ulang dengan docker buildx build --platform linux/amd64,linux/arm64 ... --push agar satu tag dapat digunakan pada kedua arsitektur.
Apa arti exec format error pada server ARM?
Kernel mencoba menjalankan binary yang header ELF-nya mencantumkan jenis mesin yang berbeda, lalu menolaknya. Pada host arm64, ini hampir selalu berarti binary atau image container x86-64. Docker terlebih dahulu menampilkan peringatan bahwa platform image yang diminta, linux/amd64, tidak sesuai dengan platform host yang terdeteksi, linux/arm64/v8. Solusinya adalah melakukan build untuk arsitektur yang benar. Tidak ada perubahan konfigurasi yang dapat membuat binary x86-64 berjalan secara native pada ARM.
Apakah arm64 sama dengan aarch64?
Ya. Keduanya adalah dua nama untuk instruction set ARM 64-bit. Kernel melaporkan aarch64 melalui uname -m, sedangkan packaging Debian dan Ubuntu, serta string platform Docker, menggunakan arm64. Pembagian yang sama berlaku di sisi lain: uname -m berarti x86_64, sedangkan packaging menggunakan amd64. Jika halaman download hanya menyediakan file aarch64, file tersebut adalah file yang tepat untuk mesin yang oleh dpkg --print-architecture disebut arm64.
Apakah VPS ARM lebih cepat daripada VPS x86?
Pertanyaan itu tidak memiliki jawaban umum. Rasio tunggal apa pun yang Anda baca diukur pada hardware yang belum tentu sama dengan milik Anda. Kecepatan bergantung pada model CPU tertentu, jumlah core yang diberikan kepada Anda, cara provider menangani contention antar-tenant, dan seberapa baik workload Anda menggunakan instruksi vektor. Lakukan benchmark terhadap dua paket yang benar-benar sedang Anda pilih. Jika memungkinkan, gunakan workload Anda sendiri, lalu bandingkan hasilnya.
Apa yang harus saya periksa sebelum memindahkan server produksi ke arm64?
Lakukan empat pemeriksaan berikut secara berurutan. Pastikan setiap image container memiliki manifest arm64. Pastikan setiap repository apt pihak ketiga memublikasikan binary-arm64. Pastikan setiap agent closed source menyediakan download aarch64. Kemudian jalankan getconf PAGESIZE pada instance target, karena kernel dengan page 64 KiB mengubah footprint memori proses yang memiliki banyak mapping kecil. Apa pun yang gagal dalam salah satu dari empat pemeriksaan tersebut merupakan alasan untuk mempertahankan server tersebut pada x86.