Metodologi Pengujian: FIO Direct I/O dan Audit Steal Time
direct=1. Skenario write diuji menggunakan pola acak 4K (random write) dengan concurrency queue depth yang realistis bagi backend aplikasi dinamis maupun engine OLTP.
Perintah pengujian I/O dijalankan selama 300 detik untuk menguras burst buffer kontroler storage:
BASH
fio --name=random-write-audit --ioengine=libaio --rw=randwrite --bs=4k \
--direct=1 --size=2G --numjobs=4 --iodepth=32 --runtime=300 \
--time_based --group_reporting --output=fio_result.jsonmpstat -P ALL 1 300 dan inspeksi /proc/stat untuk menangkap metrik %steal secara presisi. CPU Steal Time terjadi saat virtual CPU siap mengeksekusi instruksi kernel VM Anda, tetapi hypervisor host (KVM/QEMU) justru menahan thread tersebut karena physical core sedang sibuk melayani VM lain.
Pengujian dilakukan dalam dua jendela waktu: pukul 03:00 WIB (off-peak) dan pukul 20:30 WIB (peak traffic time konsumen Indonesia).
Bedah Arsitektur Provider Lokal
1. Biznet Gio (NEO Lite Series)
2. IDCloudHost (Cloud VPS)
%steal terpantau berfluktuasi antara 6% hingga 22% saat CPU stress test dijalankan. Dalam skenario disk FIO 4K write, storage lokal NVMe mampu melesat hingga 14.000 IOPS pada 10 detik pertama, tetapi langsung terdegradasi ke kisaran 900 IOPS saat mekanisme burst credit habis. Variabilitas I/O latency (p99 latency) melar dari 1.8ms ke 84ms, yang berbahaya bagi replikasi transaksi database.
3. DomaiNesia
4. CloudKilat (Kilat VM 2.0)
Tabel Perbandingan Arsitektur & Hasil Pengujian
| Provider / Layanan | Network Peering (IIX / OpenIXP / Latensi) | Storage & IOPS Tier (Sustained FIO 4K) | Virtualization Stack | CPU Steal Peak (Jam 20:30 WIB) | Rekomendasi Workload |
|---|---|---|---|---|---|
| Biznet Gio (NEO Lite) | Direct Biznet Core, OpenIXP, IIX (<2ms JKT) | Throttled Flat ~1.500 IOPS, p99: 4.2ms | OpenStack / KVM | Rendah (<2.5%) | API Service, Staging, Redis Cache |
| IDCloudHost (Cloud VPS) | OpenIXP, CDIX, Telkom Direct (~5ms JKT) | Burst 14k -> Drop ~900 IOPS, p99: 84ms | Proxmox VE / KVM | Tinggi (6.0% - 22.0%) | Dev Environment, Static Web, Bot Worker |
| DomaiNesia (VPS KVM) | IIX, OpenIXP, Matrix Peering (<3ms JKT) | NVMe Array ~3.000 IOPS, p99: 3.1ms | Enterprise KVM | Terkendali (1.5% - 3.5%) | Microservices, Database OLTP Ringan |
| CloudKilat (Kilat VM) | OpenIXP, IIX, Indosat/Telkom Peering (<4ms JKT) | Network Storage ~1.100 IOPS, p99: 8.9ms | OpenStack / KVM | Moderat (3.0% - 7.0%) | Web Monolith, VPN Gateway, DNS Resolver |
| Dewaweb (Cloud VPS Mini)* | Tier-1 Peering, Equinix JK1, Telkom (<2ms JKT) | SAN Enterprise ~2.200 IOPS, p99: 3.8ms | VMware ESXi / KVM | Sangat Rendah (<1.0%) | Production Mission-Critical, E-Commerce Ringan |
Dampak Nyata CPU Steal dan I/O Wait pada PostgreSQL
fsync(). Ketika CPU steal melonjak:
- Query Queue Pileup: Worker process PostgreSQL tertahan dalam status
D-state(uninterruptible sleep). Connection pooler (seperti PgBouncer) kehabisan koneksi karena antrean query tertahan bukan karena query yang lambat, melainkan karena vCPU tidak dijadwalkan oleh kernel hypervisor. - Replication Lag: Jika VPS murah ini dijadikan target read-replica, write delay pada WAL (Write-Ahead Log) akibat I/O bottleneck menyebabkan replikasi tertinggal puluhan detik dari primary.
- TCP Connection Timeouts: Kernel Linux pada VPS tamu gagal memproses software interrupt (softirq) jaringan tepat waktu, memicu TCP retransmissions pada user yang sedang mengakses web app Anda.
Rekomendasi Tuning Kernel untuk VPS Murah
INI
# Batasi dirty memory pages agar kernel tidak menumpuk flush besar ke disk lambat
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10
# Kurangi kecenderungan kernel melakukan swapping agresif di memory sempit
vm.swappiness = 10
# Turunkan toleransi I/O scheduler overhead (gunakan mq-deadline atau none untuk NVMe)
# Pastikan scheduler drive diatur via udev:
# echo none > /sys/block/vda/queue/scheduler