Episode ini membahas performa dan skala: memilih backend ZFS/btrfs untuk snapshot efisien, menyetel cgroup agar densitas tinggi, resource planning per container, dan menangani ratusan container per host beserta benchmark boot dan overhead.

Lima episode ke belakang kalian membangun satu host dengan beberapa container. Sekarang saatnya berpikir lebih besar: bagaimana membuat satu host melayani puluhan hingga ratusan container dengan performa tetap sehat? Di episode 18 kita menyetel storage, cgroups, dan perencanaan resource — lalu mengukur overhead-nya. Inilah episode yang memisahkan homelab santai dari infrastruktur yang terukur.
Kembali ke episode 8: backend menentukan efisiensi snapshot dan clone. Di skala besar, ini bukan lagi kenyamanan, melainkan kelangsungan hidup. Bayangkan 100 container dan tiap snapshot penuh = ratusan GB disk. Dengan backend copy-on-write, snapshot nyaris gratis.
ZFS adalah pilihan populer untuk host LXC besar:
lxc-snapshot dan lxc-copy -s memakai mekanisme ZFS yang instan.compression=on menghemat disk signifikan untuk rootfs yang sebagian besar file teks.zfs create -o compression=on -o atime=off tank/containers
zfs set mountpoint=/var/lib/lxc tank/containersbtrfs punya kekuatan serupa (snapshot native, copy-on-write) dengan manajemen yang lebih sederhana. Untuk host tanpa kebutuhan fitur ZFS yang dalam, btrfs adalah pilihan ringan yang solid.
Tip
Aturan pemilihan: dibutuhkan snapshot + clone masif → ZFS atau btrfs. Storage sudah standar LVM → manfaatkan LVM snapshot. Semua container statis jarang di-snapshot → dir pun cukup. Konsistensi backend dari awal lebih penting daripada "backend terbaik" secara abstrak.
Episode 7 menekankan limit. Di skala besar, kalian harus menghitung total limit ≤ kapasitas host:
Host: 16 core, 64 GB RAM
100 container web ringan: 0.1 core + 256 MB masing-masing
→ CPU: 10 core (< 16) OK
→ Memory: 25.6 GB (< 64) OK, sisanya untuk host & bufferRumus sederhananya: jumlahkan limit semua container, pastikan menyisakan ruang untuk host sendiri (kernel, service, I/O cache).
Untuk workload bursty, gunakan lxc.cgroup2.cpu.weight (relatif) daripada kuota kaku:
lxc.cgroup2.cpu.weight = 100cpu.weight (1-10000) mengatur proporsi saat contention, tanpa membuang CPU saat idle — ideal untuk densitas tinggi dengan beban yang datang bergelombang. Kombinasikan dengan cpu.max hanya untuk container yang benar-benar butuh jaminan.
Host Linux memakai memory untuk page cache I/O. Jika limit container menyedot hampir semua RAM, cache mengecil dan performa disk anjlok. Sisakan ~10-20% RAM host untuk kernel dan cache.
Standar pengukuran sebelum menentukan limit:
dd, loop CPU) — buktikan limit berlaku.Contoh profil untuk container jenis tertentu:
Nginx/apache ringan : 256 MB , 0.2 core
Database kecil : 1 GB , 1 core
Build CI : 4 GB , 4 core (bursty)Ukur sendiri untuk basis keputusan:
time lxc-start -n c1ps -o rss= -p $(pgrep -f "lxc-init" | head -1) 2>/dev/null || trueWarning
Pada skala ratusan container, satu kesalahan konfigurasi global (misal default.conf yang salah, atau satu backend lambat) dikalikan seratus. Uji pola konfigurasi pada 2-3 container dulu, verifikasi, baru propagate. Jangan menjadi beta tester untuk konfigurasi yang di-scale-out.
ulimit, fs.file-max).lxc-autostart dengan lxc.start.delay (episode 10) mencegah thunder herd saat host reboot.lxc.cgroup2.io.weight (episode 7).Inti yang harus dibawa pulang:
cpu.weight untuk beban bursty; cpu.max untuk jaminan.Di episode 19 selanjutnya kita akan membahas ekosistem: LXD, Incus & Proxmox — LXD sebagai manager LXC Canonical dengan API/REST, clustering, dan VM; Incus sebagai fork komunitas (2023); serta perbandingan LXC low-level vs LXD/Incus high-level vs Docker application container.