Come possono le attività "rifiutare di congelare" in caso di sospensione?


17

Ieri, quando ho chiuso il mio laptop, non è entrato immediatamente in modalità standby. Secondo i registri, ci stava provando, ma un'attività si è rifiutata di congelare:

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

Questo è andato avanti per alcune ore fino a quando il sistema non è stato effettivamente sospeso. L' syslogera piena di messaggi come in questa domanda , perché systemdstava cercando ancora e ancora.

Come può succedere? Perché lo scheduler non può semplicemente interrompere la pianificazione di quell'applicazione? e poi è effettivamente congelato? Ho letto che ci sono più STOPcomandi, uno dei quali chiede bene e uno di loro che forza il congelamento. Perché non systemdha usato questo o perché non ha funzionato qui?

Risposte:


25

Il blocco delle attività è documentato in dettaglio nella documentazione del kernel .

I processi dello spazio utente non possono rifiutare di congelare; vengono congelati, ma la segnalazione tra kernel e processi viene gestita automaticamente dal codice di gestione del segnale (il congelamento utilizza un segnale falso).

Se vedi messaggi di "attività che si rifiutano di congelare", ciò significa che un thread del kernel si rifiuta di congelare, di solito perché sta facendo qualcosa che non può essere controllato. Tuttavia, dover attendere diverse ore affinché il kernel si sospenda non è normale; le tracce dello stack nei messaggi di registro aiuterebbero a farsi un'idea di cosa non va.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.