OS: Kernel Tuning & Performance

From OnnoWiki
Jump to navigation Jump to search

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