Was bedeutet "INFO: Task XXX für mehr als 120 Sekunden blockiert" genau unter Linux?

14

Ich hatte diese Nachricht in meinem Kernel - Log: INFO: task XXX blocked for more than 120 seconds. Ich möchte wissen, was es technisch bedeutet: Unter welchen Bedingungen zeigt der Kernel diese Meldung zu einer Aufgabe an?

Fürs Protokoll war meine blockierte Aufgabe multipathd, aber ich interessiere mich auch für die allgemeine Bedeutung dieses Fehlers.

Totor
quelle

Antworten:

13

Wenn eine Aufgabe blockiert ist, wartet sie darauf, dass die Ressourcen wieder verfügbar sind.

In Ihrem Fall gab es wahrscheinlich entweder ein E / A-Problem oder einen Konflikt im Festplattenbereich. Oder Ihre Systemlast war so hoch, dass nicht genügend CPU-Leistung zur Verfügung stand, um den Auftrag rechtzeitig abzuschließen.

Ich habe diesen Fehler von cron gesehen, wenn es versucht, einen Job in einer sehr geschäftigen Zeit zu starten.

Nils
quelle
Kannst du genauer sein? Bedeutet "gesperrt" "ununterbrochen in einem unterbrechungsfreien Zustand"?
Totor
@Totor In diesem Zusammenhang wartet es auf Ressourcen. Also andere io ist nicht unterbrechbar.
Nils
7

Grundsätzlich wird diese Protokollierung ausgelöst, wenn der CPU-Scheduler in der angegebenen Zeit nicht auf den Prozess umgeschaltet hat und der Prozess nicht für eine Ausnahme qualifiziert ist.

Ausnahmen sind Sonderfälle, in denen ein Prozess nicht umgeschaltet wurde, aber nicht protokolliert werden sollte. Ich verstehe die Bedingungen für die Ausnahmen nicht klar; FWIW die Kommentare zu den Fällen im Code sind:

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

Was den Grund angeht, warum eine Aufgabe möglicherweise nicht für einen längeren Zeitraum geplant ist, wäre es eine Möglichkeit, wenn sie ständig im Status TASK_UNINTERRUPTABLE ('D') ist, aber ich weiß nicht, welche anderen Aufgaben es möglicherweise gibt.

Rakslice
quelle
Möglicherweise ein relevanter Fehler: Linux 3.14-3.17 auf Haswell-Prozessoren - Prozesse können auf futex_wait - groups.google.com/d/msg/mechanical-sympathy/QbmpZxp6C64/…
rakslice