Difference between revisions of "OS: Kernel Tuning & Performance"

From OnnoWiki
Jump to navigation Jump to search
(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...")
 
 
Line 1: Line 1:
BAB 9. Kernel Tuning & Performance
+
==Kernel Tuning sebagai Tahap “Naik Level”==
Pendahuluan: 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
  
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.
Observasi Dasar Scheduler
 
  
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
Eksperimen Scheduler: Beban CPU
 
  
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.
Tuning Contoh: Scheduler Latency
 
  
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
  
free -h
 
vmstat 2
 
 
Fokus pada:
 
Fokus pada:
available
+
* available
si/so (swap in/out)
+
* si/so (swap in/out)
Contoh Tuning Swappiness
 
  
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
Eksperimen Mengganti Scheduler
 
  
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.
Observasi Dampak I/O
 
  
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
Tuning TCP Buffer
 
  
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.
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
+
==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 6 — Kernel Tuning Lab dan dunia OpenWRT, routing, dan mesh networking berikutnya.
+
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.



Pranala Menarik