Kinerja filesystem ditentukan oleh konfigurasi yang bisa disetel, bukan hanya oleh hardware. Episode ini membahas mount options, recordsize, scheduler I/O, tuning page cache, lalu cara mengukur dengan fio dan dd serta membaca iostat dan vmstat.

Dua server dengan hardware yang sama bisa menunjukkan performa storage yang sangat berbeda — semuanya karena konfigurasi filesystem dan kernel. Episode 16 ini membahas lapisan-lapisan yang bisa disetel: mount options, ukuran alokasi, scheduler I/O, dan page cache.
Tapi tuning tanpa pengukuran hanyalah menebak. Karena itu, separuh episode ini membahas benchmarking: fio sebagai standar industri, dd untuk pengukuran cepat, serta iostat dan vmstat untuk membaca perilaku sistem saat workload berjalan.
Aturan emas: ubah satu variabel, ukur, catat, baru ubah berikutnya. Tuning sekaligus banyak hal membuat kalian tidak tahu perubahan mana yang berhasil.
Tiga option yang paling sering berdampak:
sudo mount -o noatime,discard /dev/loop0 /mnt/labdiscard punya dua mode: discard (berjalan saat file dihapus, sedikit overhead) dan nodiscard + trim terjadwal (lebih prediktif). Pada SSD, pilih salah satu — jangan dua-duanya.
Ukuran alokasi menentukan cara file dipetakan ke blok:
-b (4096 default).Cocokkan dengan pola I/O: 8K untuk database, 1M untuk media besar. Mengukur lebih dulu jauh lebih baik daripada menebak:
stat -f -c '%s' /mnt/lab
zfs get recordsize labpool/dataKernel Linux memakai scheduler I/O yang mengatur urutan permintaan ke perangkat. Pilihan umum:
noop): melempar semua ke perangkat — optimal untuk NVMe yang sudah punya antrian sendiri.Lihat dan ganti scheduler per perangkat:
cat /sys/block/sda/queue/scheduler
echo mq-deadline | sudo tee /sys/block/sda/queue/schedulerUbah default agar persisten dengan parameter kernel elevator=mq-deadline di /etc/default/grub atau file udev rule.
Tiga knob tambahan yang jarang dilihat:
queue/nr_requests: jumlah permintaan yang diantrekan — besarkan untuk HDD.queue/max_sectors_kb: ukuran maksimum I/O per permintaan.queue/rotational: 1 untuk HDD, 0 untuk SSD.Periksa nilainya:
cat /sys/block/sda/queue/nr_requests
cat /sys/block/sda/queue/max_sectors_kbKernel menahan tulis di page cache sebelum dikirim ke disk. Dua parameter utama:
vm.dirty_background_ratio: persentase memori yang memicu writeback di background (default 10).vm.dirty_ratio: persentase yang memaksa proses tulis menunggu (default 20).sysctl vm.dirty_background_ratio vm.dirty_ratioPertimbangan: nilai yang besar menumpuk tulis (baik untuk throughput), tapi membuat data tidak aman saat listrik mati. Untuk workload yang mengandalkan fsync (database), biarkan default.
vm.vfs_cache_pressure mengendalikan kecenderungan kernel membuang cache inode/dentry (nilai 100 default). Nilai lebih rendah membuat metadata cache bertahan lebih lama:
sudo sysctl -w vm.vfs_cache_pressure=50Tuning ini membantu server dengan banyak file kecil yang sering diakses.
Sebelum mengukur, tentukan profil workload yang ingin diuji:
Jalankan benchmark fio untuk masing-masing profil:
fio --name=randread --ioengine=libaio --rw=randread \
--bs=4k --size=1G --numjobs=4 --iodepth=32 \
--direct=1 --group_reporting--direct=1 melewati page cache sehingga mengukur perangkat nyata. Ganti --rw dengan randwrite, read, atau write untuk profil lain.
Output fio menampilkan IOPS, BW (bandwidth), dan clat (latency per operasi). Bandingkan hasil antar konfigurasi dengan hati-hati:
Untuk pengukuran cepat, dd masih berguna:
dd if=/dev/zero of=/mnt/lab/test bs=1M count=1024 oflag=directiostat menampilkan utilisasi dan throughput per perangkat:
iostat -x -m 2Kolom penting: %util (persentase waktu sibuk), await (rata-rata waktu layanan), r/s dan w/s (IOPS baca/tulis), dan rrqm/s (request yang digabung).
vmstat menampilkan aktivitas memori dan I/O sistem:
vmstat 2Perhatikan kolom bi dan bo (blok masuk/keluar per detik), si/so (swap), dan wa (persentase CPU menunggu I/O). wa yang tinggi adalah tanda bottleneck storage.
Tip
Profil workload menentukan metrik yang diukur: server database fokus pada latency dan fsync, file server fokus pada throughput, dan platform VPS fokus pada IOPS yang konsisten. Sesuaikan benchmark dengan tujuan sebenarnya.
Performance tuning adalah siklus ukur-ubah-ukur yang tidak pernah selesai. Dengan menguasai mount options, recordsize, scheduler I/O, dan page cache, kalian bisa mengarahkan performa ke arah yang diinginkan. Dengan fio, iostat, dan vmstat, kalian bisa membuktikan bahwa tuning benar-benar bekerja.
Inti yang harus dibawa pulang:
--direct=1 mengukur perangkat nyata tanpa page cache.Di episode 17 selanjutnya kita membahas monitoring dan integrity — df, du, iostat, btrfs device stats, zpool status/iostat, SMART dengan smartctl, integrasi Prometheus, serta jadwal scrub dan alerting. Kalian akan membangun pengawasan filesystem yang menyeluruh.