Que signifie exactement «INFO: tâche XXX bloquée pendant plus de 120 secondes» sous Linux?

14

J'ai eu ce message dans mon journal du noyau: INFO: task XXX blocked for more than 120 seconds. Je voudrais savoir ce que cela signifie techniquement: dans quelles conditions le noyau affiche-t-il ce message sur une tâche?

Pour mémoire, ma tâche bloquée était multipathd, mais je suis également intéressé par la signification générale de cette erreur.

Totor
la source

Réponses:

13

Si une tâche est bloquée, elle attend que les ressources redeviennent disponibles.

Dans votre cas, il y avait probablement un problème d'E / S ou un conflit dans la zone du disque. Ou votre charge système était si élevée qu'il n'y avait pas assez de puissance CPU disponible pour terminer le travail à temps.

J'ai vu cette erreur de cron, s'il essaie de démarrer un travail dans une période très occupée.

Nils
la source
Peux-tu être plus précis? Est-ce que «bloqué» signifie «en continu dans un état ininterrompu»?
Totor
@Totor Dans ce contexte, il attend des ressources. Les autres io ne sont donc pas interruptibles.
Nils
7

Fondamentalement, cette journalisation est déclenchée si le planificateur de CPU n'a pas basculé vers le processus dans le temps imparti et que le processus ne peut pas bénéficier d'une exception.

Les exceptions sont des cas spéciaux où un processus n'a pas été basculé mais ne doit pas être connecté. Je ne comprends pas clairement les conditions des exceptions; FWIW les commentaires sur les cas dans le code sont:

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

Quant à savoir pourquoi une tâche pourrait ne pas être planifiée pendant une longue période de temps, être continuellement dans TASK_UNINTERRUPTABLE (état 'D') serait une possibilité, mais je ne sais pas quelles autres pourraient exister.

rakslice
la source
Peut-être un bogue pertinent: Linux 3.14-3.17 sur les processeurs Haswell - les processus peuvent se bloquer sur futex_wait - groups.google.com/d/msg/mechanical-sympathy/QbmpZxp6C64/…
rakslice