Solución 1:
Puede usar un monitor de E/S como iotop, pero solo le mostrará procesos o subprocesos con operaciones de E/S actuales.
Si necesita buscar procesos en espera de E/S, use el reloj para monitorear procesos con el indicador STAT 'D' como a continuación:
watch -n 1 "(ps aux | awk '\$8 ~ /D/ { print \$0 }')"
Solución 2:
ps axu
y busque procesos que estén en el estado "D". Según la página de manual de ps(1), los procesos que están en el estado D están en suspensión ininterrumpida, lo que casi siempre significa 'esperando IO'. Lamentablemente, normalmente no es posible eliminar estos procesos.
Solución 3:
La respuesta de Zanchey es la mejor que conozco para saber qué le espera a IO.
Cuando dice que su servidor tiene mucha carga, ¿qué quiere decir con eso? ¿Algo en particular tarda en responder?
Si se pregunta si su disco IO es el cuello de botella, usaría el comando iostat (parte del paquete sysstat) para ver si el disco realmente tiene una carga pesada.
Ejemplo:
[[email protected]: ~] iostat -x 1 3
avg-cpu: %user %nice %system %iowait %steal %idle
2.38 34.71 2.64 1.18 0.00 59.21
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.11 17.35 2.21 20.31 46.57 301.40 15.45 2.27 100.66 1.48 3.34
sda1 0.10 17.31 2.21 20.31 46.48 301.10 15.44 2.27 100.66 1.48 3.34
sda2 0.00 0.00 0.00 0.00 0.00 0.00 3.50 0.00 30.00 30.00 0.00
sr0 0.00 0.00 0.00 0.00 0.00 0.00 18.44 0.00 677.67 512.61 0.00
avg-cpu: %user %nice %system %iowait %steal %idle
6.22 0.00 4.31 0.00 0.00 89.47
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00