¿Qué crea la espera de E / S de la CPU pero no hay operaciones de disco?

12

Tengo una E / S de CPU que espera alrededor del 50%, pero cuando la ejecuto iostat 1muestra poca o ninguna actividad de disco.

¿Qué causa esperar sin iops?

NOTA: No hay sistemas de archivos NFS o FUSE aquí, pero está utilizando la virtualización Xen.

ingrese la descripción de la imagen aquí

Jason Cohen
fuente
¿Qué distribución? Que versión
ZaMoose
2
Además: ¿se trata de una máquina hipervisora ​​Xen o una máquina virtual con iowaits?
ZaMoose
¿ iotopTe muestra algo?
Janne Pikkarainen

Respuestas:

7

NFS puede hacer esto, y no me sorprendería si otros sistemas de archivos de red (e incluso dispositivos basados ​​en FUSE) tuvieran efectos similares.

womble
fuente
Gracias, pero en este caso no hay NFS ni FUSE. Agregaré eso a la pregunta también.
Jason Cohen
6

¿Hay alguna posibilidad de que otras máquinas virtuales en el servidor estén agitando el disco?

Sé con la virtualización que puede obtener algunos resultados extraños si el nodo host está sobrecargado.

lbft
fuente
Es cierto, pero eso debería estar en robar% en lugar de io% ¿verdad? ¿O puede cruzar por allí también?
Jason Cohen
3
El robo ocurre cuando hay menos capacidad de CPU disponible que la solicitada por las máquinas virtuales. Si el disco físico está sobrecargado, sus procesos pasarán mucho tiempo en espera esperando su turno en el disco, incluso si no lo golpean demasiado.
lbft
Si esto. Vea otra pregunta con la misma respuesta en serverfault.com/a/209031/57468
mattdm
3

Si este es el entorno de Amazon EC2 Xen que utiliza almacenamiento basado en instancias, solicite a Amazon que verifique el estado del host que contiene esta imagen.

Si este es un entorno Xen en el que puede obtener acceso al hipervisor, compruebe IOwait desde afuera para ver la imagen del disco (archivo, red, LVM-slice, lo que sea) que se utiliza para los dispositivos xvda y xvdb. También querrá verificar el sistema de E / S, en general, para el hipervisor ya que otros dispositivos de disco podrían estar monopolizando los recursos del sistema.

iostat -txk 5

Suele ser una buena herramienta de diagnóstico inicial. Toma resúmenes de 5 segundos de E / S para TODOS los dispositivos disponibles y, por lo tanto, es útil tanto dentro como fuera de la imagen de VM.

Andy Finkenstadt
fuente
2

Verifique sus descriptores de archivo / inodes disponibles. Cuando alcanzas el límite, intercambian e imitan iowait

Editar

Vi que estás usando xen, mira tus interrupciones actuales, podrías encontrar que blkif es más alto de lo normal.

Un poco tarde ahora, pero instale munin y realmente ayudará a la futura depuración.

Sonassi
fuente
1
sudo sysctl vm.block_dump=1

Luego verifique dmesg para ver qué está realizando la lectura / escritura de bloque o inodos sucios.

Compruebe también nofile limit en limits.conf, un proceso podría estar solicitando más archivos de los que tiene permitido abrir.

neal
fuente
1

ADVERTENCIA: HDPARM ES PELIGROSO, ¡SIEMPRE LEE SOBRE EL MANDO QUE USTED VA A USAR!

Si ninguna otra máquina virtual está estresando los discos duros, haga

hdparm -f

en los discos físicos subyacentes. Posiblemente el caché del disco no funcione con precisión. Esto vaciará los datos almacenados en el caché, y puede monitorear constantemente la E / S, ya sea que esté a punto de aumentar nuevamente después del vaciado. En caso afirmativo, será un problema de caché.

vakufo
fuente
0

Con el promedio de carga, he visto aumentar las operaciones de red bloqueadas (es decir, llamadas largas a un servidor de base de datos externo). No estoy seguro, pero supongo que la red IO puede hacer que la CPU espere a subir. ¿Alguien puede confirmar?

Ryan Allen
fuente
1
En la mayoría de las máquinas modernas, no. La mayoría, si no todos los sistemas recientes tienen NIC con capacidad DMA para evitar precisamente este tipo de situación.
ZaMoose
0

Podrían ser dispositivos de bucle invertido, que están montados en la red.

Egdares Futch
fuente
0

En mis máquinas, NFS es el mayor "productor" de IO-WAIT. Tengo un SSD en mi computadora portátil que es rápido como el infierno, por lo que el "verdadero IO" no es el problema. Sin embargo, a veces tengo muchas E / S de espera debido a mis recursos compartidos nfs.

SCP a veces también parece conducir a IO Wait, pero en menor medida.

Patrick Cornelissen
fuente
0

Esto puede ser cualquier cosa. Simplemente significa que algo está esperando el final de la operación de E / S. Puede averiguar qué proceso es a través de ps, luego adjuntarle gdb y verificar la traza inversa para determinar qué llamada está bloqueada (generalmente esto es algo relacionado con la red o un disco desconectado repentinamente). Para obtener información de fd, consulte / proc.

eSyr
fuente
0

También experimenté un problema similar justo antes de que fallara un disco en un RAID y algunos cables SATA con curvas cerradas comenzaron a fallar.

El uso de la CPU estaba cerca del 0%, pero 1 o más CPU en un sistema de 4 núcleos estaban gastando el 100% de su tiempo en IOwait durante largos períodos de tiempo (encontrado a través topde la pantalla de la CPU de varias líneas) con muy bajas IOps y ancho de banda (encontrado vía iostat), pero con actividad de interrupción de ráfaga alta. El uso interactivo de la línea de comandos fue doloroso durante cualquier acceso al disco (es decir, guardar automáticamente desde la emacssesión de alguien ), pero de otra manera tolerable una vez que pasaron los períodos de IOwait (y presumiblemente las operaciones tuvieron éxito después de muchos reintentos).

Mormegil
fuente