Jak zadania mogą „odmówić zamrożenia” przy zawieszeniu?

17

Wczoraj, kiedy zamknąłem laptopa, nie przeszedł natychmiast w tryb gotowości. Według dzienników próbowano to zrobić, ale zadania odmówiły zawieszenia:

Freezing of tasks failed after 20.005 seconds (1 tasks refusing to freeze, wq_busy=0):

Trwało to kilka godzin, aż system faktycznie zawiesił się. syslogBył pełen takich wiadomości w tej kwestii , ponieważ systemdzostała ponownie i ponownie spróbować.

Jak to się może stać? Dlaczego program planujący nie może po prostu przestać planować tej aplikacji? a potem jest skutecznie zamrożony? Czytam, że istnieje wiele STOPpoleceń, jedno z nich ładnie pyta, a jedno z nich wymusza zamrożenie. Dlaczego tego systemdnie użyłem lub dlaczego tutaj nie działało?

piegry
źródło

Odpowiedzi:

25

Blokowanie zadań jest szczegółowo opisane w dokumentacji jądra .

Procesy przestrzeni użytkownika nie mogą odmówić zamrożenia; ulegają zamrożeniu, ale sygnalizacja między jądrem a procesami jest obsługiwana automatycznie przez kod obsługi sygnału (zamrażanie używa fałszywego sygnału).

Jeśli widzisz komunikaty „zadania odmawiające zamrożenia”, oznacza to, że wątek jądra odmawia zamrożenia, zwykle dlatego, że robi coś, czego nie można sprawdzić. Jednak czekanie kilku godzin na zawieszenie jądra nie jest normalne; ślady stosu w komunikatach dziennika pomogłyby zrozumieć, co się dzieje.

Stephen Kitt
źródło