Analisis Disk Bottleneck Linux: Tools & Solusi I/O

Analisis disk bottleneck pada sistem operasi Linux dilakukan dengan memantau metrik kunci seperti utilitas disk (%util), waktu tunggu I/O (await), dan panjang antrean (avgqu-sz). Ketika parameter ini melewati ambang batas wajar akibat latensi penyimpanan yang tinggi atau saturasi bandwidth, proses sistem akan mengalami perlambatan signifikan meskipun penggunaan CPU dan memori berada dalam kondisi normal.

Identifikasi masalah I/O (Input/Output) secara presisi membutuhkan pemanfaatan utilitas bawaan kernel Linux untuk memisahkan apakah masalah bersumber dari operasi baca (read), tulis (write), atau keterbatasan perangkat keras seperti IOPS (Input/Output Operations Per Second) pada disk fisik.

Daftar Tools Utama Analisis Disk I/O di Linux

Gunakan tabel berikut untuk memilih utilitas yang tepat sesuai kebutuhan diagnostik:

Nama Tool Paket Bawaan Metrik Utama yang Dipantau Kasus Penggunaan Terbaik
iostat sysstat %util, await, r/s, w/s, svctm Analisis performa tingkat sistem dan disk secara keseluruhan
iotop iotop DISK READ, DISK WRITE, SWAPIN, IO> Menemukan proses spesifik atau PID yang memonopoli I/O
vmstat procps-ng bi (blocks in), bo (blocks out), wa (wait IO) Melihat korelasi antara memori, swap, dan antrean I/O
pidstat sysstat kB_rd/s, kB_wr/s, cgroup Memantau statistik I/O per proses atau thread secara historis

Langkah-Langkah Teknis Diagnostik

1. Identifikasi Awal dengan iostat

Jalankan perintah berikut untuk melihat aktivitas disk secara real-time dengan interval 2 detik:

sudo iostat -xz 2 5

Perhatikan kolom-kolom krusial berikut pada output:

  • r/s & w/s: Jumlah operasi baca dan tulis per detik.
  • await: Waktu rata-rata (dalam milidetik) yang dibutuhkan untuk melayani permintaan I/O ke disk, termasuk waktu antrean. Jika nilai ini jauh lebih tinggi dari svctm, terjadi antrean panjang.
  • %util: Persentase waktu di mana bandwidth perangkat terpakai untuk memproses permintaan. Angka mendekati 100% menunjukkan disk jenuh (bottleneck).

2. Menemukan Pelaku Proses dengan iotop

Jika iostat menunjukkan disk jenuh, jalankan iotop dalam mode batch atau interaktif untuk mengidentifikasi proses yang bertanggung jawab:

sudo iotop -o

Parameter -o hanya menampilkan proses yang sedang aktif melakukan aktivitas I/O atau swap.

3. Analisis Beban Sistem Global dengan vmstat

Periksa kolom wa (waiting for input/output) pada perintah berikut:

vmstat 1 10

Jika nilai wa konsisten berada di atas 20% hingga 30%, CPU menghabiskan banyak waktu hanya untuk menunggu operasi disk selesai, yang mengindikasikan bottleneck I/O yang parah.

Troubleshooting dan Solusi Lapangan

  • Optimasi Mount Options: Tambahkan opsi noatime pada file /etc/fstab untuk mengurangi operasi tulis yang tidak perlu pada metadata file.
  • Penyetelan Swappiness: Kurangi kecenderungan kernel menggunakan swap disk dengan menurunkan nilai vm.swappiness (misalnya ke 10) melalui perintah sudo sysctl vm.swappiness=10.
  • Peningkatan Perangkat Keras: Jika metrik %util dan await tinggi secara permanen pada beban kerja normal, migrasikan penyimpanan dari HDD mekanis ke SSD NVMe yang memiliki kapasitas IOPS jauh lebih tinggi.