Jika server Anda terasa lambat atau tidak responsif, salah satu penyebab umum adalah penggunaan input/output (I/O) disk yang tinggi atau beban server (load) yang membludak. Mendiagnosis masalah ini bisa jadi rumit karena banyak proses yang mungkin aktif. Untungnya, ada alat bantu yang sangat efektif bernama iotop yang dapat membantu Anda mengidentifikasi proses mana yang paling banyak menggunakan sumber daya disk.
iotop adalah utilitas baris perintah mirip dengan top, namun fokus pada pemantauan penggunaan disk I/O secara real-time. Ini memungkinkan Anda melihat dengan jelas proses mana saja yang sedang membaca atau menulis data ke disk, dan seberapa besar dampaknya terhadap performa I/O sistem. Dengan informasi ini, Anda dapat dengan cepat pinpoint proses yang bertanggung jawab atas beban I/O tinggi.
Cara Install iotop
Sebelum menggunakan iotop, pastikan utilitas ini sudah terpasang di server Anda. Proses instalasinya cukup mudah tergantung pada distribusi Linux yang Anda gunakan:
- Untuk sistem berbasis Red Hat/CentOS/AlmaLinux/Rocky Linux (menggunakan yum/dnf):
1 | yum install iotop |
atau jika menggunakan dnf:
1 | dnf install iotop |
- Untuk sistem berbasis Debian/Ubuntu (menggunakan apt):
1 | sudo apt update && sudo apt install iotop |
Menggunakan iotop
Setelah terinstal, Anda dapat menjalankan iotop langsung dari terminal dengan hak akses superuser (sudo
):
1 | sudo iotop |
Secara default, iotop akan menampilkan daftar proses yang sedang melakukan I/O disk dan memperbarui tampilannya secara berkala.
Berikut adalah contoh ouput dari command iotop:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | Total DISK READ : 0.00 B/s | Total DISK WRITE : 0.00 B/s Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 0.00 B/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % systemd --switched-root --system --deserialize 17 2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd] 3 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_gp] 4 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_par_gp] 5 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [slub_flushwq] 7 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/0:0H-events_highpri] 10 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [mm_percpu_wq] 11 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_tasks_rude_] 12 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_tasks_trace] 13 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0] 14 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_sched] 15 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0] 16 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0] 17 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [cpuhp/0] 18 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [cpuhp/1] 19 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/1] 20 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/1] 21 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/1] 23 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/1:0H-events_highpri] 26 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kdevtmpfs] 27 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [netns] 28 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kauditd] |
Memahami Output iotop
Saat iotop berjalan, Anda akan melihat tampilan interaktif yang memperbarui diri secara berkala. Ini adalah kolom-kolom utama yang perlu Anda perhatikan untuk mendiagnosis masalah I/O tinggi:
- TID: Thread ID. Nomor identifikasi unik untuk setiap thread atau proses.
- PRIO: Priority. Prioritas penjadwalan I/O proses.
- USER: Pengguna yang menjalankan proses tersebut.
- DISK READ: Kecepatan baca disk oleh proses ini saat ini (dalam KB/s, MB/s, atau GB/s). Ini menunjukkan seberapa cepat proses tersebut membaca data dari disk.
- DISK WRITE: Kecepatan tulis disk oleh proses ini saat ini. Ini menunjukkan seberapa cepat proses tersebut menulis data ke disk.
- SWAPIN: Persentase waktu proses ini bertukar data ke swap space. Nilai tinggi di sini bisa menunjukkan bahwa sistem kekurangan RAM dan sering memindahkan data dari RAM ke disk (swapping), yang dapat menyebabkan I/O tinggi.
- IO%: Persentase waktu proses ini menunggu I/O disk selesai. Ini adalah indikator kunci seberapa besar dampak proses terhadap antrean I/O disk secara keseluruhan. Nilai tinggi (mendekati 100%) menandakan proses tersebut sangat aktif dalam I/O dan mungkin menjadi penyebab utama beban disk tinggi atau server loading.
- COMMAND: Perintah atau nama program yang dijalankan oleh proses tersebut. Ini adalah identitas proses yang perlu Anda selidiki.
Mendiagnosis Masalah I/O Tinggi
Untuk mengidentifikasi proses yang menyebabkan I/O atau beban tinggi, fokuslah pada kolom DISK READ, DISK WRITE, dan terutama IO%.
- Perhatikan IO%: Cari proses dengan nilai IO% yang konsisten tinggi, terutama yang mendekati atau mencapai 100%. Proses inilah yang paling banyak menghabiskan waktu menunggu operasi I/O disk.
- DISK READ/WRITE: Untuk proses dengan IO% tinggi, periksa apakah masalahnya ada pada aktivitas baca (DISK READ) atau tulis (DISK WRITE) yang intensif.
- COMMAND dan USER: Setelah menemukan proses dengan I/O tinggi, lihat kolom COMMAND untuk mengetahui program atau skrip apa yang sedang berjalan, dan kolom USER untuk mengetahui siapa yang menjalankan proses tersebut.
Dengan mengidentifikasi perintah (COMMAND
) dan pengguna (USER
) dari proses yang memiliki IO% tinggi, Anda dapat mulai memahami akar masalahnya.
Langkah Selanjutnya Setelah Identifikasi
Setelah Anda berhasil mengidentifikasi proses yang bertanggung jawab, langkah selanjutnya tergantung pada sifat proses tersebut:
- Investigasi Lebih Lanjut: Cari tahu mengapa proses tersebut membutuhkan begitu banyak I/O. Apakah itu aktivitas normal (misalnya, backup, indeks database, pemindaian antivirus) yang hanya perlu dijadwalkan ulang atau dioptimalkan? Ataukah itu aktivitas yang tidak diinginkan, proses yang macet, atau serangan?
- Hentikan Proses (Opsional dan Hati-hati): Jika Anda yakin proses tersebut tidak diinginkan atau macet dan menyebabkan masalah signifikan, Anda dapat mempertimbangkan untuk menghentikannya. Gunakan perintah
kill
dengan hati-hati, misalnyakill [TID]
ataukillall [nama_perintah]
. Pastikan Anda tahu persis apa yang Anda hentikan agar tidak merusak sistem.
Dengan menggunakan iotop, Anda mendapatkan visibilitas yang jelas ke dalam aktivitas I/O disk server Anda secara real-time, menjadikannya alat yang sangat berharga untuk mendiagnosis dan mengatasi masalah performa yang disebabkan oleh I/O tinggi atau beban server. Ini adalah langkah pertama yang penting dalam menjaga server Anda berjalan lancar dan responsif.