¿Por qué la mayor parte del disco IO se atribuye a jbd2 y no al proceso que realmente está usando el IO?

16

Cuando se monitorea el disco IO, la mayor parte del IO se atribuye a jbd2, mientras que el proceso original que causó el alto IO se atribuye a un porcentaje de IO mucho más bajo. ¿Por qué?

Aquí está iotopla salida de ejemplo (otros procesos con IO <1% omitido):

ingrese la descripción de la imagen aquí

Bengala
fuente
¿Esto es con data=journal?
Deprimido Daniel
@DepressedDaniel no estoy seguro de lo que quieres decir. Acabo de usar iotop -oP
Sparkler

Respuestas:

16

jbd2 es un hilo del núcleo que actualiza el diario del sistema de archivos.

El seguimiento del sistema de archivos o la actividad del disco con el proceso que lo causó es difícil porque las actividades de muchos procesos se combinan juntas. Por ejemplo, si dos procesos leen del mismo archivo al mismo tiempo, ¿en qué proceso se contabilizará la lectura? Si dos procesos escriben en el mismo directorio y el directorio se actualiza en el disco solo una vez (combinando las dos operaciones), ¿en qué proceso se contabilizaría la escritura?

En su caso, parece que la mayor parte del tráfico consiste en actualizaciones del diario. Esto se remonta al actualizador del diario, pero no hay seguimiento entre las actualizaciones del diario y los procesos que causaron las operaciones de escritura que requirieron esta actualización del diario.

Gilles 'SO- deja de ser malvado'
fuente
2
¿Qué otras categorías de discos io hay además de las actualizaciones de revistas? (es decir, ¿por qué jdb2 no es la única entrada en la salida de iotop?)
Sparkler
@Sparkler También se escriben los datos reales. (A menos que esté utilizando un sistema de archivos con estructura de registro, pero la mayoría no lo está).
Gilles 'SO- deja de ser malvado'
Eso explica lo que pasa. Pero apesta mucho cuando la prioridad de E / S del proceso original se ha establecido en 'inactiva' y jbd2continúa haciendo muchas E / S en su propia prioridad de E / S.
jlh