Difference between revisions of "OS: Kernel Tuning & Performance"
Onnowpurbo (talk | contribs) (Created page with "BAB 9. Kernel Tuning & Performance Pendahuluan: Kernel Tuning sebagai Tahap “Naik Level” Pada tahap ini, mahasiswa tidak lagi sekedar mengamati sistem operasi, tetapi mula...") |
Onnowpurbo (talk | contribs) |
||
| Line 1: | Line 1: | ||
| − | + | ==Kernel Tuning sebagai Tahap “Naik Level”== | |
| − | |||
Pada tahap ini, mahasiswa tidak lagi sekedar mengamati sistem operasi, tetapi mulai mempengaruhi perilaku kernel secara sadar. Kernel tuning adalah proses mengubah parameter runtime kernel untuk menyesuaikan sistem terhadap karakteristik beban kerja (workload) tertentu—misalnya server web, database, router, atau sistem embedded. | Pada tahap ini, mahasiswa tidak lagi sekedar mengamati sistem operasi, tetapi mulai mempengaruhi perilaku kernel secara sadar. Kernel tuning adalah proses mengubah parameter runtime kernel untuk menyesuaikan sistem terhadap karakteristik beban kerja (workload) tertentu—misalnya server web, database, router, atau sistem embedded. | ||
| + | |||
Inti filosofi bab ini: | Inti filosofi bab ini: | ||
| − | Kernel bukan kotak hitam. Ia dapat diatur, diukur, dan dievaluasi secara ilmiah. | + | Kernel bukan kotak hitam. Ia dapat diatur, diukur, dan dievaluasi secara ilmiah. |
| + | |||
Tuning bukan soal “mempercepat tanpa alasan”, melainkan: | Tuning bukan soal “mempercepat tanpa alasan”, melainkan: | ||
| − | memahami bottleneck (CPU, memori, I/O, jaringan), | + | * memahami bottleneck (CPU, memori, I/O, jaringan), |
| − | mengajukan hipotesis, | + | * mengajukan hipotesis, |
| − | melakukan perubahan terkontrol, | + | * melakukan perubahan terkontrol, |
| − | lalu memvalidasi dampaknya. | + | * lalu memvalidasi dampaknya. |
Pendekatan ini konsisten dengan peran mahasiswa sebagai Kernel Tinkerer dan System Builder dalam kerangka OBE. | Pendekatan ini konsisten dengan peran mahasiswa sebagai Kernel Tinkerer dan System Builder dalam kerangka OBE. | ||
| − | sysctl — Mengendalikan Perilaku Kernel Secara Runtime | + | |
| − | Konsep Akademik | + | ==sysctl — Mengendalikan Perilaku Kernel Secara Runtime== |
| + | |||
| + | ===Konsep Akademik=== | ||
sysctl adalah antarmuka user space untuk membaca dan mengubah parameter kernel runtime yang diekspos melalui pseudo filesystem /proc/sys. Perubahan dengan sysctl tidak memerlukan reboot, sehingga ideal untuk eksperimen dan observasi langsung. | sysctl adalah antarmuka user space untuk membaca dan mengubah parameter kernel runtime yang diekspos melalui pseudo filesystem /proc/sys. Perubahan dengan sysctl tidak memerlukan reboot, sehingga ideal untuk eksperimen dan observasi langsung. | ||
| + | |||
Parameter sysctl mencakup: | Parameter sysctl mencakup: | ||
| − | Kernel core behavior | + | * Kernel core behavior |
| − | Memory management | + | * Memory management |
| − | Networking stack | + | * Networking stack |
| − | Security & isolation | + | * Security & isolation |
Secara konseptual, sysctl adalah knob yang mengatur bagaimana kernel mengambil keputusan. | Secara konseptual, sysctl adalah knob yang mengatur bagaimana kernel mengambil keputusan. | ||
| − | Observasi Awal (Wajib sebelum Tuning) | + | ===Observasi Awal (Wajib sebelum Tuning)=== |
| − | + | sysctl -a | less | |
| − | sysctl -a | less | ||
Perintah ini menampilkan seluruh parameter kernel aktif. | Perintah ini menampilkan seluruh parameter kernel aktif. | ||
Latihan mental: jangan mengubah apa pun dulu—baca, amati, dan pahami namanya. | Latihan mental: jangan mengubah apa pun dulu—baca, amati, dan pahami namanya. | ||
| + | |||
Contoh parameter penting: | Contoh parameter penting: | ||
| − | kernel.sched_latency_ns | + | * kernel.sched_latency_ns |
| − | vm.swappiness | + | * vm.swappiness |
| − | net.ipv4.tcp_congestion_control | + | * net.ipv4.tcp_congestion_control |
| − | Contoh Praktek Nyata: Optimasi Network Buffer | + | |
| + | ===Contoh Praktek Nyata: Optimasi Network Buffer=== | ||
| + | sudo sysctl -w net.core.rmem_max=16777216 | ||
| + | sudo sysctl -w net.core.wmem_max=16777216 | ||
| − | |||
| − | |||
Makna OS: | Makna OS: | ||
| − | Kernel diizinkan menggunakan buffer lebih besar untuk socket, | + | * Kernel diizinkan menggunakan buffer lebih besar untuk socket, |
| − | Cocok untuk high-throughput networking (server, router, mesh node). | + | * Cocok untuk high-throughput networking (server, router, mesh node). |
| − | Persistensi Konfigurasi | + | |
| + | ===Persistensi Konfigurasi=== | ||
Agar bertahan setelah reboot: | Agar bertahan setelah reboot: | ||
| − | sudo nano /etc/sysctl.d/99-custom.conf | + | sudo nano /etc/sysctl.d/99-custom.conf |
Isi: | Isi: | ||
| − | net.core.rmem_max=16777216 | + | net.core.rmem_max=16777216 |
| − | net.core.wmem_max=16777216 | + | net.core.wmem_max=16777216 |
Aktifkan: | Aktifkan: | ||
| − | sudo sysctl --system | + | sudo sysctl --system |
| − | Scheduler Tuning — Mengatur Cara CPU Dibagi | + | ==Scheduler Tuning — Mengatur Cara CPU Dibagi== |
| − | Konsep Akademik | + | ===Konsep Akademik=== |
Scheduler Linux bertugas menentukan proses mana mendapat CPU, kapan, dan berapa lama. Ubuntu 24.04 menggunakan CFS (Completely Fair Scheduler), yang menyeimbangkan fairness dan responsiveness. | Scheduler Linux bertugas menentukan proses mana mendapat CPU, kapan, dan berapa lama. Ubuntu 24.04 menggunakan CFS (Completely Fair Scheduler), yang menyeimbangkan fairness dan responsiveness. | ||
| + | |||
Parameter scheduler memengaruhi: | Parameter scheduler memengaruhi: | ||
| − | interaktivitas sistem, | + | * interaktivitas sistem, |
| − | latensi, | + | * latensi, |
| − | throughput. | + | * throughput. |
| − | |||
| − | uptime | + | ===Observasi Dasar Scheduler=== |
| − | top | + | uptime |
| − | htop | + | top |
| + | htop | ||
Perhatikan: | Perhatikan: | ||
| − | load average | + | * load average |
| − | distribusi CPU per core | + | * distribusi CPU per core |
| − | proses dominan | + | * proses dominan |
| − | |||
| − | yes > /dev/null & | + | ===Eksperimen Scheduler: Beban CPU=== |
| − | yes > /dev/null & | + | yes > /dev/null & |
| + | yes > /dev/null & | ||
Amati di htop. | Amati di htop. | ||
| + | |||
Hentikan: | Hentikan: | ||
| − | killall yes | + | killall yes |
Mahasiswa melihat langsung bagaimana scheduler bekerja, bukan hanya membacanya. | Mahasiswa melihat langsung bagaimana scheduler bekerja, bukan hanya membacanya. | ||
| − | |||
| − | sudo sysctl -w kernel.sched_latency_ns=6000000 | + | ===Tuning Contoh: Scheduler Latency=== |
| + | sudo sysctl -w kernel.sched_latency_ns=6000000 | ||
Interpretasi: | Interpretasi: | ||
| − | Nilai lebih kecil → respons lebih cepat (desktop/interaktif), | + | * Nilai lebih kecil → respons lebih cepat (desktop/interaktif), |
| − | Nilai lebih besar → throughput lebih stabil (server batch). | + | * Nilai lebih besar → throughput lebih stabil (server batch). |
Catatan penting: tidak ada nilai “paling benar”. Semua tergantung konteks sistem. | Catatan penting: tidak ada nilai “paling benar”. Semua tergantung konteks sistem. | ||
| − | Memory Tuning — Mengelola RAM & Swap Secara Cerdas | + | |
| − | Konsep Akademik | + | ==Memory Tuning — Mengelola RAM & Swap Secara Cerdas== |
| + | ===Konsep Akademik=== | ||
Linux menggunakan virtual memory, di mana RAM, cache, dan swap bekerja bersama. Kesalahan umum pemula adalah menganggap RAM penuh = RAM habis, padahal Linux agresif menggunakan cache. | Linux menggunakan virtual memory, di mana RAM, cache, dan swap bekerja bersama. Kesalahan umum pemula adalah menganggap RAM penuh = RAM habis, padahal Linux agresif menggunakan cache. | ||
| + | |||
Parameter utama: | Parameter utama: | ||
| − | vm.swappiness | + | * vm.swappiness |
| − | vm.dirty_ratio | + | * vm.dirty_ratio |
| − | vm.dirty_background_ratio | + | * vm.dirty_background_ratio |
| − | Observasi Memory | + | |
| + | ===Observasi Memory=== | ||
| + | free -h | ||
| + | vmstat 2 | ||
| − | |||
| − | |||
Fokus pada: | Fokus pada: | ||
| − | available | + | * available |
| − | si/so (swap in/out) | + | * si/so (swap in/out) |
| − | |||
| − | sudo sysctl -w vm.swappiness=10 | + | ==Contoh Tuning Swappiness== |
| + | sudo sysctl -w vm.swappiness=10 | ||
Makna OS: | Makna OS: | ||
| − | Kernel lebih memilih RAM daripada swap, | + | * Kernel lebih memilih RAM daripada swap, |
| − | Cocok untuk server dengan RAM cukup. | + | * Cocok untuk server dengan RAM cukup. |
Persisten: | Persisten: | ||
| − | vm.swappiness=10 | + | vm.swappiness=10 |
| − | Eksperimen Aman | + | |
| + | ===Eksperimen Aman=== | ||
Jalankan beban memori: | Jalankan beban memori: | ||
| − | stress --vm 2 --vm-bytes 512M --timeout 60s | + | stress --vm 2 --vm-bytes 512M --timeout 60s |
Amati perubahan pada vmstat. | Amati perubahan pada vmstat. | ||
| − | I/O Scheduler — Mengatur Akses Disk | + | ==I/O Scheduler — Mengatur Akses Disk== |
| − | Konsep Akademik | + | ===Konsep Akademik=== |
I/O scheduler menentukan urutan dan prioritas permintaan disk. Linux modern (NVMe/SSD) menggunakan scheduler sederhana karena hardware sudah pintar. | I/O scheduler menentukan urutan dan prioritas permintaan disk. Linux modern (NVMe/SSD) menggunakan scheduler sederhana karena hardware sudah pintar. | ||
| + | |||
Cek scheduler aktif: | Cek scheduler aktif: | ||
| − | cat /sys/block/sda/queue/scheduler | + | cat /sys/block/sda/queue/scheduler |
Contoh output: | Contoh output: | ||
| − | [mq-deadline] none | + | [mq-deadline] none |
| − | |||
| − | echo none | sudo tee /sys/block/sda/queue/scheduler | + | ===Eksperimen Mengganti Scheduler=== |
| + | echo none | sudo tee /sys/block/sda/queue/scheduler | ||
Realtime change, tanpa reboot. | Realtime change, tanpa reboot. | ||
| − | |||
| − | iostat -xz 2 | + | ===Observasi Dampak I/O=== |
| + | iostat -xz 2 | ||
Perhatikan: | Perhatikan: | ||
| − | %util | + | %util |
| − | await | + | await |
Mahasiswa belajar membaca disk bottleneck secara ilmiah. | Mahasiswa belajar membaca disk bottleneck secara ilmiah. | ||
| − | Network Tuning — Mengoptimalkan Networking Stack | + | |
| − | Konsep Akademik | + | ==Network Tuning — Mengoptimalkan Networking Stack== |
| + | ===Konsep Akademik=== | ||
Networking Linux sepenuhnya dikendalikan kernel: | Networking Linux sepenuhnya dikendalikan kernel: | ||
| − | TCP/IP | + | * TCP/IP |
| − | routing | + | * routing |
| − | buffering | + | * buffering |
| − | congestion control | + | * congestion control |
Ini adalah jembatan langsung ke OpenWRT dan mesh networking pada bab selanjutnya. | Ini adalah jembatan langsung ke OpenWRT dan mesh networking pada bab selanjutnya. | ||
| − | TCP Congestion Control | + | ===TCP Congestion Control=== |
Cek algoritma aktif: | Cek algoritma aktif: | ||
| − | sysctl net.ipv4.tcp_congestion_control | + | sysctl net.ipv4.tcp_congestion_control |
Ganti ke BBR: | Ganti ke BBR: | ||
| − | sudo sysctl -w net.ipv4.tcp_congestion_control=bbr | + | sudo sysctl -w net.ipv4.tcp_congestion_control=bbr |
Verifikasi: | Verifikasi: | ||
| − | lsmod | grep bbr | + | lsmod | grep bbr |
| − | |||
| − | sudo sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216" | + | ===Tuning TCP Buffer=== |
| − | sudo sysctl -w net.ipv4.tcp_wmem="4096 65536 16777216" | + | sudo sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216" |
| + | sudo sysctl -w net.ipv4.tcp_wmem="4096 65536 16777216" | ||
Makna OS: | Makna OS: | ||
| − | TCP lebih adaptif pada jaringan latency tinggi, | + | * TCP lebih adaptif pada jaringan latency tinggi, |
| − | Relevan untuk VM, VPN, dan mesh. | + | * Relevan untuk VM, VPN, dan mesh. |
| − | Refleksi Akademik (OBE-Oriented) | + | |
| + | ==Refleksi Akademik (OBE-Oriented)== | ||
Setelah menyelesaikan bab ini, mahasiswa mampu: | Setelah menyelesaikan bab ini, mahasiswa mampu: | ||
| − | menjelaskan hubungan kernel parameter ↔ performa sistem, | + | * menjelaskan hubungan kernel parameter ↔ performa sistem, |
| − | melakukan tuning berbasis observasi, bukan tebakan, | + | * melakukan tuning berbasis observasi, bukan tebakan, |
| − | mengevaluasi dampak tuning secara terukur, | + | * mengevaluasi dampak tuning secara terukur, |
| − | menghubungkan kernel tuning dengan server, embedded OS, dan network OS. | + | * menghubungkan kernel tuning dengan server, embedded OS, dan network OS. |
Ini bukan skill hafalan, melainkan kompetensi engineer. | Ini bukan skill hafalan, melainkan kompetensi engineer. | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | Penutup | + | ==Challenge Mandiri (Fun & Menantang)== |
| + | * Bandingkan vm.swappiness=60 vs 10 pada workload sama | ||
| + | * Uji scheduler disk pada SSD vs HDD (VM berbeda) | ||
| + | * Analisis dampak BBR vs Cubic pada jaringan VM–OpenWRT | ||
| + | * Dokumentasikan tuning dalam bentuk engineering log, bukan cerita | ||
| + | |||
| + | ==Penutup== | ||
Kernel tuning adalah seni yang berbasis sains. | Kernel tuning adalah seni yang berbasis sains. | ||
Mahasiswa yang sampai pada tahap ini tidak lagi takut kernel, tetapi berdialog dengannya. | Mahasiswa yang sampai pada tahap ini tidak lagi takut kernel, tetapi berdialog dengannya. | ||
| − | Jika Anda bisa mengatur kernel dengan percaya diri, | + | |
| − | Anda sudah melangkah dari user menjadi OS engineer. | + | Jika Anda bisa mengatur kernel dengan percaya diri, |
| − | Bab ini menjadi jembatan langsung menuju PRAKTIK | + | Anda sudah melangkah dari user menjadi OS engineer. |
| + | |||
| + | Bab ini menjadi jembatan langsung menuju PRAKTIK — Kernel Tuning Lab dan dunia OpenWRT, routing, dan mesh networking berikutnya. | ||
Latest revision as of 16:43, 14 February 2026
Kernel Tuning sebagai Tahap “Naik Level”
Pada tahap ini, mahasiswa tidak lagi sekedar mengamati sistem operasi, tetapi mulai mempengaruhi perilaku kernel secara sadar. Kernel tuning adalah proses mengubah parameter runtime kernel untuk menyesuaikan sistem terhadap karakteristik beban kerja (workload) tertentu—misalnya server web, database, router, atau sistem embedded.
Inti filosofi bab ini:
Kernel bukan kotak hitam. Ia dapat diatur, diukur, dan dievaluasi secara ilmiah.
Tuning bukan soal “mempercepat tanpa alasan”, melainkan:
- memahami bottleneck (CPU, memori, I/O, jaringan),
- mengajukan hipotesis,
- melakukan perubahan terkontrol,
- lalu memvalidasi dampaknya.
Pendekatan ini konsisten dengan peran mahasiswa sebagai Kernel Tinkerer dan System Builder dalam kerangka OBE.
sysctl — Mengendalikan Perilaku Kernel Secara Runtime
Konsep Akademik
sysctl adalah antarmuka user space untuk membaca dan mengubah parameter kernel runtime yang diekspos melalui pseudo filesystem /proc/sys. Perubahan dengan sysctl tidak memerlukan reboot, sehingga ideal untuk eksperimen dan observasi langsung.
Parameter sysctl mencakup:
- Kernel core behavior
- Memory management
- Networking stack
- Security & isolation
Secara konseptual, sysctl adalah knob yang mengatur bagaimana kernel mengambil keputusan.
Observasi Awal (Wajib sebelum Tuning)
sysctl -a | less
Perintah ini menampilkan seluruh parameter kernel aktif. Latihan mental: jangan mengubah apa pun dulu—baca, amati, dan pahami namanya.
Contoh parameter penting:
- kernel.sched_latency_ns
- vm.swappiness
- net.ipv4.tcp_congestion_control
Contoh Praktek Nyata: Optimasi Network Buffer
sudo sysctl -w net.core.rmem_max=16777216 sudo sysctl -w net.core.wmem_max=16777216
Makna OS:
- Kernel diizinkan menggunakan buffer lebih besar untuk socket,
- Cocok untuk high-throughput networking (server, router, mesh node).
Persistensi Konfigurasi
Agar bertahan setelah reboot:
sudo nano /etc/sysctl.d/99-custom.conf
Isi:
net.core.rmem_max=16777216 net.core.wmem_max=16777216
Aktifkan:
sudo sysctl --system
Scheduler Tuning — Mengatur Cara CPU Dibagi
Konsep Akademik
Scheduler Linux bertugas menentukan proses mana mendapat CPU, kapan, dan berapa lama. Ubuntu 24.04 menggunakan CFS (Completely Fair Scheduler), yang menyeimbangkan fairness dan responsiveness.
Parameter scheduler memengaruhi:
- interaktivitas sistem,
- latensi,
- throughput.
Observasi Dasar Scheduler
uptime top htop
Perhatikan:
- load average
- distribusi CPU per core
- proses dominan
Eksperimen Scheduler: Beban CPU
yes > /dev/null & yes > /dev/null &
Amati di htop.
Hentikan:
killall yes
Mahasiswa melihat langsung bagaimana scheduler bekerja, bukan hanya membacanya.
Tuning Contoh: Scheduler Latency
sudo sysctl -w kernel.sched_latency_ns=6000000
Interpretasi:
- Nilai lebih kecil → respons lebih cepat (desktop/interaktif),
- Nilai lebih besar → throughput lebih stabil (server batch).
Catatan penting: tidak ada nilai “paling benar”. Semua tergantung konteks sistem.
Memory Tuning — Mengelola RAM & Swap Secara Cerdas
Konsep Akademik
Linux menggunakan virtual memory, di mana RAM, cache, dan swap bekerja bersama. Kesalahan umum pemula adalah menganggap RAM penuh = RAM habis, padahal Linux agresif menggunakan cache.
Parameter utama:
- vm.swappiness
- vm.dirty_ratio
- vm.dirty_background_ratio
Observasi Memory
free -h vmstat 2
Fokus pada:
- available
- si/so (swap in/out)
Contoh Tuning Swappiness
sudo sysctl -w vm.swappiness=10
Makna OS:
- Kernel lebih memilih RAM daripada swap,
- Cocok untuk server dengan RAM cukup.
Persisten:
vm.swappiness=10
Eksperimen Aman
Jalankan beban memori:
stress --vm 2 --vm-bytes 512M --timeout 60s
Amati perubahan pada vmstat.
I/O Scheduler — Mengatur Akses Disk
Konsep Akademik
I/O scheduler menentukan urutan dan prioritas permintaan disk. Linux modern (NVMe/SSD) menggunakan scheduler sederhana karena hardware sudah pintar.
Cek scheduler aktif:
cat /sys/block/sda/queue/scheduler
Contoh output:
[mq-deadline] none
Eksperimen Mengganti Scheduler
echo none | sudo tee /sys/block/sda/queue/scheduler Realtime change, tanpa reboot.
Observasi Dampak I/O
iostat -xz 2
Perhatikan:
%util await
Mahasiswa belajar membaca disk bottleneck secara ilmiah.
Network Tuning — Mengoptimalkan Networking Stack
Konsep Akademik
Networking Linux sepenuhnya dikendalikan kernel:
- TCP/IP
- routing
- buffering
- congestion control
Ini adalah jembatan langsung ke OpenWRT dan mesh networking pada bab selanjutnya.
TCP Congestion Control
Cek algoritma aktif:
sysctl net.ipv4.tcp_congestion_control
Ganti ke BBR:
sudo sysctl -w net.ipv4.tcp_congestion_control=bbr
Verifikasi:
lsmod | grep bbr
Tuning TCP Buffer
sudo sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216" sudo sysctl -w net.ipv4.tcp_wmem="4096 65536 16777216"
Makna OS:
- TCP lebih adaptif pada jaringan latency tinggi,
- Relevan untuk VM, VPN, dan mesh.
Refleksi Akademik (OBE-Oriented)
Setelah menyelesaikan bab ini, mahasiswa mampu:
- menjelaskan hubungan kernel parameter ↔ performa sistem,
- melakukan tuning berbasis observasi, bukan tebakan,
- mengevaluasi dampak tuning secara terukur,
- menghubungkan kernel tuning dengan server, embedded OS, dan network OS.
Ini bukan skill hafalan, melainkan kompetensi engineer.
Challenge Mandiri (Fun & Menantang)
- Bandingkan vm.swappiness=60 vs 10 pada workload sama
- Uji scheduler disk pada SSD vs HDD (VM berbeda)
- Analisis dampak BBR vs Cubic pada jaringan VM–OpenWRT
- Dokumentasikan tuning dalam bentuk engineering log, bukan cerita
Penutup
Kernel tuning adalah seni yang berbasis sains. Mahasiswa yang sampai pada tahap ini tidak lagi takut kernel, tetapi berdialog dengannya.
Jika Anda bisa mengatur kernel dengan percaya diri, Anda sudah melangkah dari user menjadi OS engineer.
Bab ini menjadi jembatan langsung menuju PRAKTIK — Kernel Tuning Lab dan dunia OpenWRT, routing, dan mesh networking berikutnya.