Encontre a causa de uma E / S permanentemente bloqueada (processo em suspensão ininterrupta)

1

No Linux, tenho um processo bloqueado em modo ininterrupto de suspensão (estado D). Como posso investigar o que está causando isso?

Estou executando um kernel "comum" (uma compilação Debian), sem nenhum recurso especial de depuração.

Não há entrada de registro relevante - na verdade, nada foi registrado entre a hora em que o processo foi iniciado e a hora em que o notei.

strace não pode anexar ao processo, pois está em modo ininterrupto de suspensão. E mesmo que eu soubesse qual chamada de sistema era chamada, isso não necessariamente me ajudaria. Eu preciso saber o que está acontecendo dentro do kernel.

Especificamente, o comando sync entra em modo ininterrupto de suspensão :( Portanto, devo ter um problema de E / S em algum lugar, mas todos os meus sistemas de arquivos parecem funcionar normalmente. Pode haver uma entrada de log antiga sobre um erro de E / S Não consigo encontrá-lo (esta máquina não foi reinicializada há muito tempo, isso é um monte de entradas de log.) Posso pelo menos saber qual subsistema está bloqueando sync ? Por exemplo, obter um kernel backtrace para o encadeamento do kernel correspondente a um PID / TID específico?

(Tenho certeza de que a reinicialização corrige isso ou revela o erro, mas estou perguntando como investigar isso, não como pressionar cegamente um botão.)

    
por Gilles 16.08.2016 / 04:05

0 respostas