Belajar RAID - Performance Tuning
Series/Belajar RAID/Episode 18
Episode 18 of 23

Belajar RAID - Performance Tuning

Episode ini membahas pengoptimalan performa array: menyesuaikan chunk size dan stripe cache, memilih algoritma parity dan scheduler I/O, serta mengukur hasilnya dengan fio dan dd untuk throughput serta IOPS.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Array yang "berfungsi" belum tentu array yang "cepat". Episode 18 ini membahas pengoptimalan performa — bagaimana memilih parameter yang tepat untuk workload kalian, dan yang lebih penting, bagaimana mengukur dampaknya secara objektif.

Performa storage penuh dengan mitos dan tebakan. Satu-satunya cara mengetahui pengaturan yang tepat adalah mengukur sebelum dan sesudah perubahan memakai alat benchmark seperti fio. Episode ini mengajarkan parameter yang bisa diubah dan cara mengukurnya tanpa menebak-nebak. Mari mulai dari chunk size.

Chunk Size

Apa yang Dilakukan Chunk Size

Chunk size adalah ukuran potongan data yang ditulis ke satu disk sebelum berpindah ke disk berikutnya pada array parity. Ini memengaruhi dua hal: ukuran stripe dan pola I/O tiap disk.

Lihat chunk size array
sudo mdadm --detail /dev/md0 | grep -i chunk

Output mdadm --detail menampilkan Chunk Size : 512K atau nilai lain. Chunk besar membuat tulis sequential menjadi efisien; chunk kecil menyebar beban lebih merata untuk I/O acak.

Menyesuaikan Chunk

Chunk bisa diubah dengan reshape (dibahas di episode 7):

Ubah chunk size
sudo mdadm --grow /dev/md0 --chunk=64

Aturan praktisnya:

  • Sequential besar (media server, arsip): chunk 512K hingga 1M.
  • Random dan tulis kecil (database, VM): chunk 64K hingga 256K.
  • Stripe cache menampung stripe aktif; pastikan tidak terlalu kecil.

Uji beberapa nilai dengan benchmark sebelum menetapkan pilihan.

Stripe Cache dan Algoritma Parity

Stripe Cache

Stripe cache adalah buffer kernel untuk stripe yang sedang dibangun pada array parity. Ukuran dan jumlahnya bisa disesuaikan lewat sysfs:

Cek dan atur stripe cache
cat /sys/block/md0/md/stripe_cache_size
echo 8192 | sudo tee /sys/block/md0/md/stripe_cache_size

Output cat /sys/block/md0/md/stripe_cache_size menampilkan jumlah halaman cache. Memperbesar cache bisa meningkatkan throughput tulis parity, tapi memakai lebih banyak RAM — atur sesuai sisa memory sistem.

Algoritma Parity RAID 5 dan 6

Kernel punya beberapa algoritma untuk menghitung parity RAID 5/6, di antaranya raid6_algos yang memilih implementasi terbaik untuk CPU:

Lihat algoritma RAID 6 tersedia
cat /sys/module/raid6/parameters/raid6_algos

Output menampilkan daftar algoritma seperti neon gen2 gen1 sse2 sse1.... Kernel otomatis memilih yang tercepat untuk CPU kalian. Di sistem dengan parity-heavy workload, pilihan ini menentukan; pada umumnya default sudah baik.

Scheduler I/O

Memilih Scheduler

I/O scheduler menentukan bagaimana permintaan baca-tulis diatur menuju disk. Untuk array RAID, pilihan umum:

  • mq-deadline: menyeimbangkan latency dan throughput — pilihan aman untuk HDD.
  • none: langsung ke perangkat tanpa penjadwalan — terbaik untuk SSD dan NVMe.
  • bfq: prioritas per proses — berguna untuk desktop interaktif.
Cek dan ubah scheduler
cat /sys/block/md0/queue/scheduler
echo mq-deadline | sudo tee /sys/block/md0/queue/scheduler

Output cat /sys/block/md0/queue/scheduler menampilkan scheduler aktif. Ubah via echo untuk pengaturan sementara; untuk permanen, atur lewat udev rule atau sysfs.conf.

Queue Depth dan Read-ahead

Dua parameter lain yang sering diubah:

Atur read-ahead dan nr_requests
sudo blockdev --setra 65536 /dev/md0
echo 128 | sudo tee /sys/block/md0/queue/nr_requests

Perintah blockdev --setra mengatur read-ahead dalam sector, dan nr_requests membatasi jumlah request antrean. Nilai yang terlalu kecil membatasi throughput sequential; terlalu besar meningkatkan latency.

Benchmark dengan fio dan dd

fio: Benchmark yang Komprehensif

fio adalah alat benchmark paling andal untuk storage. Contoh mengukur IOPS acak tulis:

Benchmark random write dengan fio
fio --name=randwrite --ioengine=libaio --rw=randwrite --bs=4k \
    --size=1G --numjobs=4 --iodepth=32 --direct=1 --filename=/mnt/raid/tes

Perintah fio di atas menjalankan tulis acak 4K dengan kedalaman 32. Output menampilkan IOPS dan lat — angka inilah yang dibandingkan antar konfigurasi.

dd: Pengukuran Cepat

Untuk pengukuran throughput sequential cepat:

Ukur write throughput dengan dd
dd if=/dev/zero of=/mnt/raid/tes bs=1M count=2048 oflag=direct status=progress

Perintah dd di atas menulis 2GB data dengan oflag=direct agar tidak memakai page cache, lalu menampilkan kecepatan di akhir.

Warning

Benchmark mengubah performa secara nyata: tulis acak menguras endurance SSD dan tulis penuh memberi tekanan pada disk. Selalu pakai area benchmark khusus (bukan data produksi), jalankan di luar jam sibuk, dan beri jeda antar pengujian agar hasil tidak saling mencemari.

Alur Tuning yang Disiplin

Ikuti alur berikut agar tuning tidak berubah menjadi tebakan:

  1. Ukur baseline dengan fio pada konfigurasi awal.
  2. Ubah satu parameter pada satu waktu.
  3. Ukur lagi dengan benchmark yang sama persis.
  4. Catat hasilnya — hanya perubahan yang berdampak signifikan yang dipertahankan.
  5. Uji pada workload nyata sebelum mengunci konfigurasi.

Penutup

Episode 18 memberi kalian kendali atas performa array: chunk size, stripe cache, algoritma parity, scheduler I/O, dan read-ahead — semuanya diukur dengan fio dan dd. Kalian kini bisa membuat array yang cepat untuk workload kalian, bukan sekadar array yang berfungsi.

Inti yang harus dibawa pulang:

  • Chunk besar untuk sequential, chunk kecil untuk random I/O.
  • Stripe cache dan algoritma parity memengaruhi throughput tulis parity.
  • Scheduler mq-deadline untuk HDD, none untuk SSD dan NVMe.
  • fio adalah standar benchmark untuk IOPS dan latency.
  • Ubah satu parameter dan ukur ulang — jangan mengganti banyak sekaligus.
  • Selalu ukur baseline sebelum melakukan tuning apa pun.

Di episode 19 selanjutnya kita akan membahas ZFS RAID advanced (BRT, Tiering) — Block Reference Table untuk dedup cepat, RAIDZ expansion yang stabil, dRAID yang matang, serta tiering dengan special vdev dan hybrid flash plus HDD. Kalian akan menjelajahi kemampuan ZFS terkini untuk storage modern.