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:
iowait
yidle
.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á enidle
estado.Entonces,
iowait
es el porcentaje de tiempo que la CPU está inactiva Y hay al menos una E / S en curso iniciada desde esa CPU.El
iowait
contador indica que el sistema puede manejar más trabajo computacional. El hecho de que una CPU esté eniowait
estado no significa que no pueda ejecutar otros subprocesos o procesos en esa CPU.Entonces,
iowait
es simplemente una forma de tiempo inactivo.fuente
dd if=/dev/sda of=/dev/null
para hacer un altowa
. Luego, ejecute un código while-true,wa
es 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