Tengo un servidor que tiene una carga realmente alta. Nada me llama la atención en términos de uso de CPU, y no se intercambia.
Creo que es porque algunos procesos están esperando el disco IO, y quiero ver qué está esperando.
¿Hay algún programa que me muestre qué procesos están esperando IO? Lo sé, iotop
pero eso muestra lo que está haciendo actualmente IO.
¿O es una pregunta tonta? (Si es así, explique cómo :))
iowait
información requerida ,iotop
requiere privilegios elevados.watch
,ps
yawk
brinde solo la información necesaria, y no requiere privilegios elevados.ps
los indicadores POSIX y losawk
hubiera editado de manera diferente:watch "(ps -eo stat,pid,comm|awk '(NR==1)||(\$1~/D/){print}')"
- de esta manera obtienes los encabezados de columna, y el stat, pid y command.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 se encuentran en el estado D están en suspensión ininterrumpida, lo que casi siempre significa 'esperando IO'. Desafortunadamente, matar estos procesos generalmente no es posible.fuente
La respuesta de Zanchey es la mejor que sé para averiguar qué está esperando a IO.
Cuando dice que su servidor está bajo una carga alta, ¿qué quiere decir con eso? ¿Algo en particular tarda en responder?
Si se pregunta si su Disk IO es el cuello de botella, usaría el comando iostat (parte del paquete sysstat) para ver si el disco está realmente bajo una gran carga.
Ejemplo:
fuente
Habilite el registro block_dump de los procesos que realizan operaciones de lectura / escritura en bloque:
cuando termine, desactive el rastreo para no enviar spam a sus archivos de registro:
fuente