Sé que wa(in top) mide el tiempo de CPU en espera de E / S. Muchos artículos dicen eso.
Pero estoy confundido, basado en 2 puntos de conocimiento:
- Si un proceso utiliza una llamada del sistema para leer el disco, el proceso se bloquea.
- Si un proceso está bloqueado, no se puede programar su ejecución en la CPU.
¿Derecho?
Parece que no hay tiempo para que la CPU espere E / S ... ¿Qué sucede?
Si me recomiendan algunos libros o artículos para leer más, mucho mejor.

Respuestas:
El estado inactivo de la CPU se divide en dos estados "sub" diferentes:
iowaityidle.Si la CPU está inactiva, el núcleo determina si hay al menos una E / S actualmente en progreso en un disco local o un disco montado remotamente (NFS) que se había iniciado desde esa CPU. Si lo hay, entonces la CPU está en estado
iowait. Si no hay E / S en progreso que se inició desde esa CPU, la CPU está enidleestado.Entonces,
iowaites el porcentaje de tiempo que la CPU está inactiva Y hay al menos una E / S en curso iniciada desde esa CPU.El
iowaitcontador indica que el sistema puede manejar más trabajo computacional. El hecho de que una CPU esté eniowaitestado no significa que no pueda ejecutar otros subprocesos o procesos en esa CPU.Entonces,
iowaites simplemente una forma de tiempo inactivo.fuente
dd if=/dev/sda of=/dev/nullpara hacer un altowa. Luego, ejecute un código while-true,waes en lugar deus. Gracias caos.No estoy 100% seguro de entender la pregunta, pero hay algunas ideas.
Hay otra pregunta aquí que pregunta esto y tiene algunas buenas respuestas: ¿Alguien puede explicar con precisión qué es IOWait?
Hay una buena publicación aquí: http://veithen.github.io/2013/11/18/iowait-linux.html
fuente