Mengoptimalkan performa FreeBSD: tuning kernel dengan sysctl dan loader.conf, monitoring dengan top, systat, vmstat, dan iostat, serta tuning storage ZFS dengan ARC cache dan recordsize. Kalian akan tahu parameter mana yang diubah dan kapan waktu yang tepat untuk mengubahnya.

Di episode 17 sebelumnya kalian sudah memahami FreeBSD 15 dan strategi upgrade. Sekarang kita masuk ke seni performance tuning — mengoptimalkan sistem agar memakai sumber daya yang ada seefisien mungkin.
Tuning bukan tentang mengubah semua parameter secara membabi buta. Tuning yang baik dimulai dari pengukuran — memahami di mana bottleneck berada — lalu mengubah parameter yang tepat, dan mengukur lagi. Episode ini memetakan alat ukur dan parameter yang paling sering disentuh, termasuk tuning storage ZFS.
Sebelum menyentuh parameter, ingat tiga prinsip:
sysctl.conf.sysctl -a | wc -l
sysctl kern.maxfilesFreeBSD mengekspos ratusan parameter runtime. Memahami mana yang relevan adalah bagian dari keahlian.
Beberapa parameter yang sering diubah di kategori kern dan vm:
sysctl kern.maxfiles=100000
sysctl kern.maxfilesperproc=50000
sysctl vm.swap_idle_enabled=1kern.maxfiles menaikkan batas file descriptor — penting untuk server dengan banyak koneksi. vm.swap_idle_enabled memperlambat pemindahan proses idle ke swap.
Stack TCP bisa disesuaikan untuk workload jaringan:
sysctl net.inet.tcp.sendbuf_max=16777216
sysctl net.inet.tcp.recvbuf_max=16777216
sysctl net.inet.tcp.mssdflt=1460Parameter buffer menentukan seberapa banyak data yang bisa transit sebelum acknowledgement — bottleneck umum untuk transfer file besar dan banyak koneksi.
Info
Ubah parameter TCP hanya jika pengukuran menunjukkan masalah (misalnya throughput yang rendah pada koneksi berlatensi tinggi). Mengubah buffer tanpa data justru bisa memboroskan memori kernel.
Parameter yang sudah teruji ditulis ke /etc/sysctl.conf agar bertahan saat reboot:
sysrc -f /etc/sysctl.conf kern.maxfiles=100000
sysrc -f /etc/sysctl.conf net.inet.tcp.sendbuf_max=16777216Parameter kernel yang perlu disetel sebelum boot (misalnya yang dipakai saat kernel memulai) dikonfigurasi di /boot/loader.conf:
kern.maxfiles="100000"
kern.ipc.shmall="131072"Warning
Parameter di loader.conf dipakai saat kernel boot — untuk menerapkannya, reboot diperlukan. Bedakan dengan sysctl yang bisa diubah saat runtime. Kebiasaan yang baik: uji dengan sysctl dulu, lalu pindahkan ke loader.conf atau sysctl.conf setelah terbukti.
top menampilkan proses dan penggunaan sumber daya secara real-time, sementara systat memberi statistik dengan tampilan berlayar penuh:
top -o cpu
systat -vmstat
systat -ifstattop -o cpu mengurutkan berdasarkan penggunaan CPU, systat -vmstat menampilkan virtual memory, dan systat -ifstat menampilkan throughput interface.
Tool klasik untuk mengukur memori dan I/O:
vmstat 1
iostat -w 1vmstat menampilkan statistik memori, swap, dan CPU. iostat menampilkan throughput dan utilisasi disk per perangkat — penting untuk mendeteksi bottleneck storage.
Success
Rutinitas baseline: vmstat 1 untuk memori dan CPU, iostat -w 1 untuk disk, systat -ifstat untuk jaringan. Kumpulkan baseline sebelum tuning — tanpa baseline, kalian tidak bisa menilai apakah perubahan benar-benar membantu.
ARC adalah cache ZFS di RAM. Secara default ARC memakai hingga setengah memori sistem. Untuk mesin dengan memori terbatas atau kebutuhan aplikasi besar, batasi:
sysctl vfs.zfs.arc_max=2147483648Nilai di atas membatasi ARC ke 2 GB. Tulis ke sysctl.conf agar persisten.
Warning
Mengurangi ARC terlalu drastis akan melukai performa baca berulang. Mulai dari batas konservatif dan pantau dengan zpool iostat dan arcstat untuk menemukan keseimbangan antara cache ZFS dan memori aplikasi.
recordsize mengontrol ukuran blok logis ZFS — memengaruhi performa sesuai pola I/O:
zfs set recordsize=16k tank/data/db
zfs set recordsize=1M tank/data/mediaDatabase dengan akses kecil acak (misalnya PostgreSQL) cocok dengan 16k atau 8k. Data media streaming besar cocok dengan blok besar seperti 1M — verifikasi dengan zfs get recordsize.
Compression lz4 dan zstd (episode 8-9) mengurangi I/O aktual. Pastikan tetap aktif untuk workload yang bisa dikompres.
FreeBSD memakai scheduler I/O berbasis kernel. Untuk SSD, pastikan trim berjalan agar performa jangka panjang terjaga:
zpool get autotrimIkuti siklus pengukuran yang disiplin:
vmstat, iostat, systat.iostat -w 1
sysctl vfs.zfs.arc_max=2147483648
iostat -w 1
sysrc -f /etc/sysctl.conf vfs.zfs.arc_max=2147483648Di episode 18 ini kalian sudah mempelajari performance tuning FreeBSD: tuning kernel dengan sysctl dan loader.conf, parameter TCP dan memori, monitoring dengan top, systat, vmstat, dan iostat, serta tuning storage ZFS dengan ARC dan recordsize.
Inti yang harus dibawa pulang:
kern.maxfiles dan buffer TCP adalah titik tuning yang umum.vfs.zfs.arc_max.recordsize mengikuti pola I/O: kecil untuk database, besar untuk media streaming.Di episode 19 selanjutnya kita akan membahas FreeBSD sebagai router, firewall & network appliance — use case OPNsense dan NAS, menjalankan stack Nginx, MySQL, PostgreSQL, dan Redis, serta deployment web server produksi yang andal di atas FreeBSD.