Awal Mula VPS Baik-Baik Saja, Sampai Windsurf AI Agent Masuk.
Ceritanya sederhana. Ada sebuah VPS Linux yang sudah berjalan cukup lama melayani beberapa aplikasi web dan riset riset kecil.
Ya mulai dari API backend Node.js, aplikasi PHP, database MariaDB, hingga beberapa bot dan service kecil lainnya. Semua berjalan lancar, stabil, dan tidak ada keluhan berarti. RAM terpakai sekitar 1.5–2 GB dari total yang tersedia, masih ada ruang yang cukup nyaman.
Lalu datanglah si AI Agent.
Tools seperti Windsurf, Cursor, dan sejenisnya memungkinkan developer bekerja langsung dari dalam IDE yang terhubung ke server remote via SSH.
Fiturnya luar biasa dimana AI bisa membaca kode, menulis fungsi, men-debug error, bahkan menjalankan perintah terminal langsung.
Produktivitas naik drastis.
Tapi ada yang aneh.
Tidak lama setelah rutin menggunakan AI Agent yang terhubung ke VPS, server mulai aneh tingkahnya.
Kadang response lambat.
Kadang aplikasi web mendadak tidak bisa diakses.
Beberapa kali bahkan harus login ke panel hosting untuk restart VPS karena sudah tidak responsif sama sekali.
Load average melonjak, dan saat berhasil masuk, RAM sudah penuh hampir 100%.
Awalnya dikira ada bug di aplikasi, atau mungkin ada traffic spike yang tidak terduga. Tapi setelah dicek satu per satu, semua aplikasi baik-baik saja.
Yang bermasalah justru sesuatu yang tidak pernah terpikirkan sebelumnya: proses-proses dari AI Agent itu sendiri.
Analisa: Apa yang Sebenarnya Terjadi?
AI Agent modern seperti Windsurf juga Cursor bekerja dengan cara yang cukup kompleks di balik layar.
Saat kamu membuka koneksi remote ke VPS, bukan hanya satu proses yang berjalan melainkan serangkaian proses yang masing-masing punya fungsi sendiri:
- Language Server — proses utama yang menjalankan AI, melakukan indexing kode, dan berkomunikasi dengan server inferensi di cloud. Ini adalah proses paling berat.
- Extension Host — Node.js process yang menjalankan semua ekstensi IDE.
- Server Main — proses server utama yang mengelola koneksi SSH dan komunikasi antara IDE lokal dengan remote server.
- PTY Host — proses yang mengelola terminal session.
- File Watcher — proses yang memantau perubahan file secara real-time.
- Agent Process (Devin/Cascade) — proses agent AI yang menjalankan task-task otomatis.
Semua proses ini berjalan bersamaan selama sesi aktif.
Dan yang lebih mengejutkan, beberapa proses tetap berjalan di background bahkan setelah IDE-nya ditutup, sampai ada timeout atau server di-restart.
Itulah mengapa RAM terus tergerus meski developer sudah tidak aktif bekerja.
Selain itu, AI Agent juga melakukan code indexing — memindai seluruh file dalam workspace untuk membangun konteks AI. Untuk workspace dengan banyak file, proses ini bisa sangat intensif dan memakan RAM dalam jumlah besar dalam waktu singkat.
Data Riil: Seberapa Besar RAM yang Dimakan AI Agent?
Berikut adalah data aktual dari VPS dengan spesifikasi RAM ~3.73 GB yang menjalankan beberapa aplikasi web, diambil saat AI Agent sedang aktif:
| Proses | RAM Terpakai (RSS) | % dari Total RAM |
|---|---|---|
| language_server_linux_x64 (AI core) | ~600 MB | ~16% |
| node extensionHost | ~315 MB | ~8.2% |
| node server-main.js | ~130 MB | ~3.4% |
| node ptyHost | ~73 MB | ~1.9% |
| node fileWatcher | ~59 MB | ~1.5% |
| devin acp (agent) | ~77 MB | ~2% |
| Total Windsurf | ~1.26 GB | ~33% |
Sementara itu, aplikasi-aplikasi yang seharusnya menjadi tujuan utama VPS ini memakan resource sebagai berikut:
| Aplikasi/Service | RAM Terpakai |
|---|---|
| MariaDB (database) | ~194 MB |
| PHP-FPM workers (6 pool) | ~560 MB |
| Node.js apps (beberapa) | ~380 MB |
| Netdata monitoring | ~172 MB |
| Nginx | ~23 MB |
| Docker + Containerd | ~80 MB |
| Lain-lain (PM2, fail2ban, dll) | ~100 MB |
| Total Apps | ~2.1 GB |
Kesimpulannya: AI Agent sendirian memakan sepertiga total RAM VPS, sementara puluhan service dan aplikasi produktif berbagi dua pertiga sisanya.
Tidak heran VPS sering kehabisan nafas.
Solusi: Mengunci RAM AI Agent dengan systemd cgroup
Setelah mengidentifikasi masalahnya, solusi yang paling tepat bukan mematikan AI Agent-nya karena justru itu tools yang sedang digunakan untuk bekerja.
Solusinya adalah membatasi berapa RAM yang boleh dimakan, sehingga AI Agent tetap bisa jalan tapi tidak bisa mengambil jatah resource milik aplikasi lain.
Di Linux, cara paling robust dan recommended untuk ini adalah menggunakan systemd cgroup (control group).
Ini adalah fitur kernel Linux yang memungkinkan administrator membatasi, memprioritaskan, dan mengontrol penggunaan resource (RAM, CPU, I/O) dari sekelompok proses sekaligus.
Kenapa tidak pakai cara lain seperti ulimit atau nice/renice? Karena:
ulimithanya berlaku per shell session, tidak untuk daemon atau proses background- nice/renice hanya mengatur prioritas CPU, tidak membatasi RAM
- systemd cgroup berlaku untuk semua proses dalam group secara permanen, termasuk child processes yang di-spawn belakangan
Cara Kerja systemd cgroup
systemd mengorganisir semua proses dalam hierarki slice.
Saat AI Agent terhubung ke VPS via remote SSH sebagai user root, semua prosesnya otomatis masuk ke dalam cgroup:
user.slice → user-0.slice → session-XX.scopeIni bisa diverifikasi dengan melihat cgroup dari salah satu proses Windsurf:
$ cat /proc/[PID]/cgroup
0::/user.slice/user-0.slice/session-34.scopeDengan membuat drop-in override pada user-0.slice, semua proses yang berjalan sebagai root (termasuk seluruh proses AI Agent) akan terkena batasan RAM yang kita tentukan.
Ada dua parameter kunci:
| Parameter | Fungsi | Perilaku jika Terlampaui |
|---|---|---|
MemoryHigh | Soft limit — batas yang diusahakan dijaga | Kernel mulai throttle proses dan agresif reclaim memory, tapi proses tidak di-kill |
MemoryMax | Hard limit — batas absolut yang tidak boleh dilewati | Proses yang melebihi batas di-OOM-kill oleh kernel |
Kombinasi keduanya memberikan proteksi berlapis: MemoryHigh sebagai “peringatan dini” yang membuat AI Agent secara alami mengurangi penggunaan RAM, dan MemoryMax sebagai “tembok terakhir” jika tetap membandel.
Langkah Implementasi Step by Step
Berikut langkah lengkap yang bisa diikuti.
Semua perintah dijalankan sebagai root.
Langkah 1: Cek kondisi VPS dan proses AI Agent
Lihat berapa RAM yang sedang dipakai proses AI Agent:
ps aux | awk 'NR>1 {
if ($0 ~ /windsurf-server/ || $0 ~ /language_server/ || $0 ~ /devin/)
ws += $6
else
other += $6
} END {
print "AI Agent RSS:", ws/1024, "MB"
print "Other processes RSS:", other/1024, "MB"
}'Cek kondisi cgroup user-0.slice saat ini:
systemctl show user-0.slice --property=MemoryMax,MemoryHigh,MemoryCurrentLangkah 2: Buat direktori drop-in
mkdir -p /etc/systemd/system/user-0.slice.dLangkah 3: Buat file konfigurasi
nano /etc/systemd/system/user-0.slice.d/windsurf-memlimit.confIsi file dengan konfigurasi berikut:
[Slice]
MemoryAccounting=yes
MemoryHigh=1G
MemoryMax=1200MSesuaikan nilai MemoryHigh dan MemoryMax dengan spesifikasi VPS kamu:
| Total RAM VPS | MemoryHigh (rekomendasi) | MemoryMax (rekomendasi) |
|---|---|---|
| 2 GB | 512M | 700M |
| 4 GB | 1G | 1200M |
| 8 GB | 2G | 2500M |
| 16 GB | 4G | 5G |
Langkah 4: Reload systemd dan aktifkan
systemctl daemon-reloadTidak perlu restart VPS maupun restart AI Agent.
systemd akan langsung menerapkan limit pada cgroup yang sedang berjalan.
Kernel akan otomatis melakukan memory reclaim pada proses yang sudah melebihi batas.
Langkah 5: Verifikasi
systemctl show user-0.slice --property=MemoryMax,MemoryHigh,MemoryCurrent,MemoryAccountingOutput yang diharapkan:
MemoryAccounting=yes
MemoryHigh=1073741824 ← 1 GB dalam bytes
MemoryMax=1258291200 ← 1.2 GB dalam bytes
MemoryCurrent=XXX ← RAM yang sedang dipakai (harus turun)Before vs After: Perbandingan Nyata
Berikut perbandingan kondisi VPS sebelum dan sesudah penerapan limit:
| Metrik | Sebelum | Sesudah |
|---|---|---|
| RAM dipakai AI Agent | ~1.26 GB (33%) | ~715 MB (19%) |
| RAM Available untuk apps | ~1.26 GB | ~1.8 GB+ |
| Batas maksimal AI Agent | Tidak ada (∞) | Hard limit 1.2 GB |
| Risiko VPS OOM / stuck | Tinggi | Rendah |
| Aplikasi web bisa diakses saat AI aktif | Kadang tidak | Konsisten ya |
| Perlu restart VPS rutin | Sering | Tidak perlu |
| Swap usage | Tinggi, sering thrashing | Lebih stabil |
| Perlu action saat connect Windsurf | Manual monitor | Otomatis, tidak perlu action |
Yang menarik: RAM AI Agent turun drastis dari 1.26 GB ke ~715 MB secara instan begitu daemon-reload dijalankan tanpa perlu restart Windsurf atau disconnect session.
Kernel langsung melakukan pressure dan reclaim memory dari proses-proses yang sudah berjalan.
Tips Tambahan dan Penyesuaian
Jika AI Agent Terasa Lambat
Jika setelah penerapan limit AI Agent terasa lambat atau sering lag, kemungkinan limitnya terlalu ketat.
Naikkan nilainya:
nano /etc/systemd/system/user-0.slice.d/windsurf-memlimit.confUbah ke nilai yang lebih tinggi, misalnya MemoryHigh=1200M dan MemoryMax=1500M, lalu:
systemctl daemon-reloadMonitor RAM secara Real-time
Gunakan perintah ini untuk memantau RAM cgroup secara real-time:
watch -n 2 "systemctl show user-0.slice --property=MemoryCurrent | awk -F= '{printf \"%.0f MB\n\", \$2/1024/1024}'"Tambahkan Limit CPU (Opsional)
Jika ingin juga membatasi CPU, tambahkan baris berikut ke file konfigurasi yang sama:
[Slice]
MemoryAccounting=yes
MemoryHigh=1G
MemoryMax=1200M
CPUAccounting=yes
CPUQuota=80%CPUQuota=80% artinya maksimal 80% dari 1 core CPU.
Sesuaikan dengan jumlah core VPS kamu.
Pastikan Swap Tersedia
Swap berfungsi sebagai safety net ketika RAM hampir penuh.
Pastikan VPS kamu punya swap yang cukup:
swapon --showJika belum ada swap, pertimbangkan untuk membuat swapfile minimal 1–2 GB.
Dengan swap tersedia, proses tidak akan langsung di-kill saat RAM penuh, melainkan akan “spill” ke swap terlebih dahulu.
Konfigurasi Ini Berlaku untuk User Root
Perlu diingat bahwa drop-in pada user-0.slice berlaku untuk semua proses yang berjalan sebagai root.
Jika kamu memiliki service penting lain yang berjalan sebagai root dan membutuhkan RAM besar, pertimbangkan untuk membuat slice terpisah atau menaikkan MemoryMax ke nilai yang lebih aman.
Kesimpulan
AI Agent adalah tools yang luar biasa produktif tapi ia butuh resource yang tidak sedikit, dan jika dibiarkan tanpa batas di VPS production, ia bisa menggerus resource yang seharusnya menjadi milik aplikasi-aplikasi yang melayani user.
Solusinya bukan memilih antara produktivitas atau stabilitas server.
Dengan systemd cgroup melalui drop-in override, keduanya bisa berjalan berdampingan.
AI Agent tetap bisa bekerja dengan baik di dalam batas yang sudah ditentukan, sementara aplikasi-aplikasi di VPS tetap punya jatah resource yang cukup untuk beroperasi normal.
Konfigurasi ini juga memiliki beberapa keunggulan:
- Permanen — aktif otomatis setiap reboot, tidak perlu setup ulang
- Instan — berlaku tanpa perlu restart proses yang sedang berjalan
- Fleksibel — nilai bisa diubah kapan saja dan langsung berlaku
- Native — menggunakan fitur kernel Linux, tidak butuh tools tambahan
- Berlapis — soft limit (MemoryHigh) + hard limit (MemoryMax) memberikan proteksi ganda
Jika kamu menggunakan VPS untuk production dan juga menggunakan AI Agent sebagai coding assistant, teknik ini sangat direkomendasikan.
Sesuaikan nilainya dengan spesifikasi VPS dan kebutuhan kamu , yang jelas tidak ada satu angka yang cocok untuk semua orang.
Semoga bermanfaat. Jika ada pertanyaan atau pengalaman berbeda, silakan diskusi di kolom komentar.
Artikel ini ditulis berdasarkan pengalaman nyata mengelola VPS Linux dengan beberapa aplikasi web dan AI coding assistant. Semua data yang ditampilkan adalah data riil dari pengujian langsung di server.
Anjrah Ari Susanto, S.Psi.






No comment yet, add your voice below!