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
noatimepada file/etc/fstabuntuk 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 perintahsudo sysctl vm.swappiness=10. - Peningkatan Perangkat Keras: Jika metrik
%utildanawaittinggi secara permanen pada beban kerja normal, migrasikan penyimpanan dari HDD mekanis ke SSD NVMe yang memiliki kapasitas IOPS jauh lebih tinggi.