Como as tarefas podem se “recusar a congelar” na suspensão?

13

Ontem, ao fechar meu laptop, ele não entrou no modo de espera imediatamente. De acordo com os logs, ele estava tentando, mas as tarefas se recusaram a congelar:

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

Isso durou algumas horas até que o sistema fosse suspenso. O syslog estava cheio de mensagens, como em esta pergunta porque systemd estava tentando de novo e de novo.

Como isso pode acontecer? Por que o agendador não pode simplesmente parar de agendar esse aplicativo? e então está efetivamente congelado? Eu li que existem vários comandos STOP , um deles perguntando bem e um deles forçando o congelamento. Por que systemd não usou isso ou por que isso não funcionou aqui?

    
por piegames 21.02.2018 / 13:03

1 resposta

21

O congelamento de tarefas está documentado em detalhes na documentação do kernel .

Processos de espaço do usuário não podem se recusar a congelar; eles ficam congelados, mas a sinalização entre o kernel e os processos é tratada automaticamente pelo código de tratamento de sinal (o congelamento usa um sinal falso).

Se você está vendo mensagens que "recusam-se a congelar", isso significa que um thread do kernel está se recusando a congelar, geralmente porque está fazendo algo que não pode ser verificado. No entanto ter que esperar várias horas para o kernel suspender não é normal; os rastreamentos de pilha nas mensagens de log ajudam a ter uma ideia do que está errado.

    
por 21.02.2018 / 14:07