Co dokładnie oznacza „INFO: zadanie XXX zablokowane na ponad 120 sekund” w systemie Linux?

14

Miałem ten post w moim dzienniku jądra: INFO: task XXX blocked for more than 120 seconds. Chciałbym wiedzieć, co to znaczy technicznie: w jakich warunkach jądro wyświetla ten komunikat o zadaniu?

Dla przypomnienia, moim zablokowanym zadaniem było multipathd, ale interesuje mnie również ogólne znaczenie tego błędu.

Totor
źródło

Odpowiedzi:

13

Jeśli zadanie jest zablokowane, czeka na ponowne udostępnienie zasobów.

W twoim przypadku prawdopodobnie wystąpił problem IO lub rywalizacja w obszarze dysku. Lub obciążenie systemu było tak duże, że nie było wystarczającej mocy procesora, aby ukończyć zadanie na czas.

Widziałem ten błąd z crona, jeśli próbuje rozpocząć pracę w bardzo pracowitym czasie.

Nils
źródło
Czy mógłbyś to sprecyzować? Czy „zablokowany” oznacza „nieprzerwanie w nieprzerwanym stanie”?
Totor
@Totor W tym kontekście czeka na zasoby. Więc inne io nie jest przerywane.
Nils,
7

Zasadniczo rejestrowanie jest uruchamiane, jeśli program planujący procesor nie przełączył się na proces w danym czasie, a proces nie kwalifikuje się do wyjątku.

Wyjątkami są specjalne przypadki, w których proces nie został przełączony, ale nie powinien się zalogować. Nie rozumiem jasno warunków wyjątków; FWIW komentarze do spraw w kodzie są następujące:

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

Co do tego, dlaczego zadanie może nie zostać zaplanowane na długi okres czasu, byłoby to ciągle możliwe w TASK_UNINTERRUPTABLE (stan „D”), ale nie wiem, jakie mogą być inne zadania.

Rakslice
źródło
Być może istotny błąd: Linux 3.14-3.17 na procesorach Haswell - procesy mogą się zawiesić na futex_wait - groups.google.com/d/msg/mechanical-sympathy/QbmpZxp6C64/…
rakslice