Pregunta ¿Qué significa si iostat muestra 100% de espera ocupada pero la CPU está completamente inactiva?


¿Qué significa si iostat muestra 100% de espera ocupada pero la CPU está completamente inactiva? Mi aplicación se ejecuta durante un tiempo, luego entra en este estado periódicamente durante unos 10-20 segundos.

Es la aplicación C ++ de procesamiento de transacciones en solaris 10.

IO stat output:
                  extended device statistics                       cpu
device      r/s    w/s   kr/s   kw/s wait actv  svc_t  %w  %b  us sy wt id
c0          0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0   0  0  0 100
sd1         0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd2         0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd3         0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd4         0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
c1          0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd0         0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
c6          0.0    0.0    0.0    0.0  0.0  1.0    0.0   0 100 
sd19        0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd19.fp2    0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd19.fp4    0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd20        0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd21        0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd22        0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd23        0.0    0.0    0.0    0.0  0.0  1.0    0.0   0 100 
sd24        0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd25        0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd26        0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
sd27        0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 
nfs1        0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0 

salida vmstat:

kthr      memory            page            disk          faults      cpu 
r b w   swap  free  re  mf pi po fr de sr s0 s1 s2 s3   in   sy   cs us sy id 
0 0 0 10842364 33093436 30 188 0 0 0 0 65 -0  2  3 -0 1327  843  709  0  1 99 
0 0 0 3406728 28181464 71 3601 0 0 0 0  0  0  0  0  0 1372 23009 1584 4  0 96 
0 0 0 2702996 28030080 0 740 0 0  0  0  0  0  0  0  0 1414 15002 2065 6  0 93 
0 0 0 2699448 28016628 0 3  0  0  0  0  0  0  0  0  0 1747 3012 2193  9  1 90 
0 0 0 2691728 28009844 0 1  0  0  0  0  0  0 10 10  0 2315 1300 2877  2  0 97 
0 1 0 2679788 27957836 0 5033 0 0 0  0  0  0  1  1  0 1895 1945 2658 10  0 90 
0 2 0 2654188 27907196 0 0  0  0  0  0  0  0  1  1  0 3566 3788 5495  2  0 98 

6
2018-06-16 01:08


origen


¿Puede por favor publicar algunas líneas de vmstat 5 - Dave Cheney
Lo gracioso que preguntaste sobre esto, ya que estoy experimentando el mismo problema en un invitado de Linux en un entorno vmware. Resultó que era ext3 que no estaba muy contento de escribir pequeñas cantidades de datos rápidamente en una matriz raid5 en una SAN. Reformado a XFS y todos mis problemas desaparecieron. - pauska


Respuestas:


Esto significa que la carga se debe a la espera de IO, no a la contención de la CPU. Entonces, acceder a un disco duro, acceder a un recurso compartido NFS, acceder a espacio de intercambio (y, por lo tanto, (generalmente) un disco duro local ... No estoy seguro de si el acceso a la red contribuye a esto, pero mi instinto dice que no. NFS solo agrega porque usa la capa FS. "top" generalmente tiene un porcentaje de "espera" o "iowait" que usualmente muestra esto.


9
2018-06-16 01:13



no hay unidad NFS en la máquina ... aunque hay una SAN ... - sean riley


IO Stat no debe ser del 100%. Si tiene una gran cantidad de E / S de disco, puede ser alta, superior al 50%, pero exactamente el 100% generalmente significa que algo está mal en su subsistema IO. Esto me sucedió cuando tuve un disco duro en las primeras etapas de la falla, cuando el disco tarda más y más tiempo en responder a las solicitudes, pero aún así responde.

O simplemente podría ser una muy Solicitud mal escrita. Un simple script de DTrace debería decirte cuál es.


1
2018-06-16 01:27



Cada vez que vmstat muestra una gran actividad de Page In (pi), su memoria libre está disminuyendo. Su intercambio no se está liberando tanto como lo está usando la memoria libre. ¿Estás por casualidad mmap () ing archivos grandes? Me estoy arriesgando mucho, pero supongo que estás mmap () ing y munmap () con frecuencia. Trate de hacer mmap () una vez, y manténgalos así todo el tiempo que pueda. - Craig Lewis


Una cosa que puede conducir una carga IO muy alta es la paginación. ¿Está su aplicación consumiendo toda la memoria física y causando que la máquina tenga dificultades?

vmstat 5

Si el si y so las columnas muestran algo más que 0 entonces su máquina está paginando (posiblemente mucho).


0
2018-06-16 04:34