Há mais de um ano, tenho um problema com o desligamento. Aqui estão as condições que precisam ser atendidas:
Nestes casos, quando desligo o PC, vejo o seguinte:
Claro, neste ponto eu uso Alt + SysRq para sincronizar, montar somente leitura e forçar o desligamento.
Com o swap desativado, eu não tenho esse problema, mas posso ficar sem memória (o que trava o Linux por um minuto antes do OOM decidir matar alguém, o que é outro problema).
Alguém sabe qual poderia ser o problema? Ou como posso depurar isso?
Eu tentei fazer o rastreamento de pilha com Alt + SysRq , mas durante o desligamento a resolução é baixa e com quatro núcleos, a maior parte do traço está fora da tela, então não consigo descobrir onde ele está travando.
P.S. Não tenho certeza se fui afetado por isso em 14.04, mas tenho certeza de que aconteceu antes do systemd e depois dele.
Editar:
Bobo, posso rolar para trás e ver os registros de desligamento. Se eu imprimir um rastreamento de pilha quando o desligamento ficar travado, três núcleos estarão em cupidle_enter_state()
ou algo assim, e o encadeamento que imprime o rastreamento de pilha tem esse traço:
Editar:
Eupenseiemfazerumswapoff
antesdodesligamento,paraquetalvezoproblemadesapareça.Issomostrouqueatrocaestádesativadaaumataxasuperlentade8MB/s.Podeserporissoqueodesligamentofoitãolento,talvezestivessefazendoumswapoff
.swapoff
sendo lento parece afetar muitas pessoas . Vou investigar mais e escrever uma resposta se conseguir algo conclusivo.