Episode ini masuk ke inti kernel DragonFlyBSD: Lightweight Kernel Threading dan per-process scheduler, penguncian CPU affinity dengan cpuset, tuning sysctl seperti kern.sched dan vfs.hammer2, serta pemantauan kinerja dengan systat, top, dan vmstat.

Di episode 16 sebelumnya kalian sudah mengelola jaringan tingkat lanjut dengan routing dinamis dan tunneling. Sekarang kita menyelam ke bagian paling khas DragonFlyBSD: kernel-nya. Episode 17 membahas LWKT — arsitektur threading yang menjadi alasan sistem ini di-fork — serta cara kalian mengendalikan scheduler dan mengukur kinerja.
Ingat cerita di episode 1? DragonFlyBSD lahir karena Matthew Dillon menganggap model threading kernel FreeBSD kurang scalable untuk mesin multi-core. LWKT adalah jawabannya: setiap CPU menjalankan kernel thread sendiri secara paralel, dan scheduler bekerja per-proses. Episode ini menjelaskan bagaimana itu bekerja dan bagaimana kalian memanfaatkannya.
Di kebanyakan BSD, kernel menggunakan lock global yang membuat hanya satu CPU bisa masuk kernel pada satu waktu — aman tapi lambat di mesin modern. LWKT memecah masalah ini dengan memberi setiap CPU struktur thread sendiri. Kernel thread ringan (LWKT threads) bisa berjalan paralel di banyak CPU, dan migrasi antar CPU dikendalikan dengan aturan yang jelas.
Dampaknya terasa di beban kerja dengan banyak proses dan banyak thread: kernel tidak lagi menjadi satu-satunya bottleneck. Inilah kenapa DragonFlyBSD unggul di mesin dengan banyak core dan beban server yang sibuk.
Selain LWKT untuk kernel, DragonFlyBSD menggunakan per-process scheduler — keputusan penjadwalan dibuat dengan mempertimbangkan proses dan CPU tempatnya berada. Scheduler ini menyeimbangkan beban antar CPU dengan migrasi yang bertahap, menjaga afinitas cache, dan merespons beban I/O dengan baik.
Melihat scheduler yang aktif dan parameter terkait:
sysctl kern.sched.name
sysctl kern.sched.slice
sysctl kern.sched.interactivekern.sched.name menampilkan scheduler aktif; parameter lain mengendalikan perilaku penjadwalan.
cpuset mengikat proses atau thread ke CPU tertentu — sangat berguna untuk aplikasi latency-sensitive yang tidak boleh kena migrasi:
cpuset -g -p 1234
cpuset -l 0,1 -p 1234cpuset -g membaca afinitas proses 1234; cpuset -l 0,1 mengikatnya ke CPU 0 dan 1. Untuk proses yang baru:
cpuset -l 2-3 -- ./heavy-taskPerintah ini menjalankan heavy-task hanya di CPU 2 dan 3 — pola umum untuk database dan aplikasi real-time.
Daftar CPU dan afinitas seluruh sistem:
cpuset -g
sysctl hw.ncpusysctl hw.ncpu memberi tahu berapa core yang tersedia — titik awal sebelum merencanakan distribusi proses.
Beberapa parameter yang paling sering disesuaikan untuk beban kerja tertentu:
sysctl kern.sched.slice
sysctl vfs.hammer2.double_buffer
sysctl vm.swap_idle_enabledvfs.hammer2 menyimpan parameter yang memengaruhi perilaku filesystem HAMMER2 — termasuk penggunaan double buffer yang berdampak besar pada beban kerja I/O. Setiap parameter bisa dilihat dan diuji nilainya secara runtime sebelum dipersistenkan di /etc/sysctl.conf.
Parameter yang harus tersedia sejak awal boot — sebelum kernel sepenuhnya hidup — diatur di /boot/loader.conf:
kern.maxvnodes="100000"
vfs.hammer2.double_buffer="1"
hw.igb.num_queues="4"loader.conf dibaca saat boot, lebih awal daripada sysctl.conf. Aturan praktis: atur di loader.conf jika parameter memengaruhi struktur kernel yang dialokasikan saat boot; atur di sysctl.conf jika aman diubah runtime.
systat adalah dashboard real-time:
systat -vmstat 2
systat -ifstat-vmstat menampilkan CPU, memori, dan I/O setiap 2 detik; -ifstat menampilkan lalu lintas per interface.
top menampilkan proses tersibuk dan penggunaan resource:
top
top -b -n 5-b batch mode untuk skrip — berguna untuk menangkap snapshot beban ke log.
vmstat memberikan ringkasan virtual memory dan aktivitas sistem:
vmstat -w 2Perhatikan kolom cs (context switch), in (interrupt), dan r (run queue) — lonjakan yang tidak wajar di kolom ini adalah tanda awal bottleneck.
Info
Siklus tuning yang benar: ukur dulu (systat, top, vmstat), ubah satu parameter, ukur lagi. Jangan mengubah banyak parameter sekaligus — kalian tidak akan tahu mana yang bekerja. Persistenkan perubahan hanya setelah terbukti membantu.
Di episode 17 ini kalian telah memahami inti kernel DragonFlyBSD: Lightweight Kernel Threading dengan per-CPU thread dan per-process scheduler, penguncian CPU affinity dengan cpuset, tuning parameter seperti kern.sched dan vfs.hammer2 via sysctl dan loader.conf, serta pemantauan dengan systat, top, dan vmstat.
Inti yang harus dibawa pulang:
cpuset -l 0,1 -p PID mengunci proses ke CPU tertentu untuk latency-sensitive workload.kern.sched.* dan vfs.hammer2.* via sysctl; gunakan /boot/loader.conf untuk parameter awal boot.systat -vmstat, top, vmstat sebelum dan sesudah setiap perubahan.Di episode 18 selanjutnya kita menjalankan dunia di dalam dunia: NVMM & virtualization. Kalian akan mengenal hypervisor tipe-2 nvmm(4), integrasinya dengan QEMU lewat package qemu, mengelola VM, mengatur networking dengan tap dan bridge, serta membuat snapshot VM.