¿Qué significa "INFO: tarea XXX bloqueada durante más de 120 segundos" exactamente en Linux?

14

Tenía este mensaje en mi registro del núcleo: INFO: task XXX blocked for more than 120 seconds. Me gustaría saber qué significa técnicamente: ¿bajo qué condiciones muestra el núcleo este mensaje sobre una tarea?

Para el registro, mi tarea bloqueada fue multipathd, pero también estoy interesado en el significado general de este error.

Totor
fuente

Respuestas:

13

Si una tarea está bloqueada, espera a que los recursos vuelvan a estar disponibles.

En su caso, probablemente hubo un problema de E / S o una disputa en el área del disco. O la carga de su sistema era tan alta que no había suficiente potencia de CPU disponible para terminar el trabajo a tiempo.

He visto este error de cron, si intenta iniciar un trabajo en un momento muy ocupado.

Nils
fuente
¿Puedes ser mas específico? ¿"Bloqueado" significa "continuamente en un estado ininterrumpido"?
Totor
@Totor En este contexto, está esperando recursos. Entonces otro io no es interrumpible.
Nils
7

Básicamente, este registro se desencadena si el programador de la CPU no ha cambiado al proceso en la cantidad de tiempo dada, y el proceso no califica para una excepción.

Las excepciones son casos especiales en los que no se ha cambiado un proceso pero no se debe iniciar sesión. No entiendo claramente las condiciones de las excepciones; FWIW los comentarios sobre los casos en el código son:

Also, skip vfork and any other user process that freezer should skip.

Also, when a freshly created task is scheduled once, changes
its state to TASK_UNINTERRUPTIBLE without having ever been
switched out once, it musn't be checked.

http://lxr.free-electrons.com/source/kernel/hung_task.c#L75

En cuanto a por qué una tarea podría no estar programada durante un largo período de tiempo, estar continuamente en TASK_UNINTERRUPTABLE (estado 'D') sería una posibilidad, pero no sé qué otras podrían existir.

rakslice
fuente
Quizás un error relevante: Linux 3.14-3.17 en procesadores Haswell - los procesos pueden colgarse en futex_wait - groups.google.com/d/msg/mechanical-sympathy/QbmpZxp6C64/…
rakslice