O sistema trava quando a E / S do disco está saturada

8

Quando faço uma grande transferência de arquivos do meu disco rígido USB3 externo para o meu disco rígido interno (ou vice-versa), seja pelo Nautilus ou pelo terminal, o Ubuntu (Unity) quase travará completamente. Coisas como alt-tab levam 20 segundos ou mais para serem concluídas enquanto a transferência de arquivos está em execução. Este não é o caso quando há muitas leituras / gravações aleatórias no disco, como na instalação de pacotes.

Quando eu estava executando o Windows, eu podia executar uma transferência de arquivos em segundo plano e ainda conseguir fazer as coisas, embora mais devagar quando algo é necessário para acessar o disco. Eu ainda podia alt-tab muito bem.

Parece que o Ubuntu prioriza a transferência de arquivos acima de todas as outras E / S de disco, e é por isso que ele bloqueia. No Windows, parece que as transferências de arquivos têm uma prioridade mais baixa, o que significa que o sistema pode permanecer responsivo enquanto o disco estiver saturado.

Como posso consertar isso? É um pouco chato, pois o computador se torna completamente inutilizável ao copiar arquivos. Esse problema ocorre nas versões 14.04 e 15.10. Sou obrigado a conectar meu disco rígido a uma porta USB2 para evitar esse problema e isso resulta em tempos de transferência muito mais longos.

Degru
fonte
Não deveria, mas verifique se unix.stackexchange.com/questions/107703/… ajuda
Rmano

Respostas:

10

Eu tive o mesmo problema no meu laptop, que tem um sistema de disco bastante lento em comparação com o restante do computador.

Consegui melhorar muito isso, alterando o algoritmo de agendamento usado para transferências de disco. Por padrão, o Ubuntu usa Deadline, mas acho que meu sistema responde mais rapidamente quando uso o cfq.

Para ver qual planejador você está usando, emita o comando

cat /sys/class/block/sda/queue/scheduler    

Para fazer uma alteração única (até a reinicialização), emita o comando

echo cfq | sudo tee /sys/class/block/sda/queue/scheduler

Observe que é importante que você faça as alterações necessárias para o seu disco rígido externo; O meu geralmente carrega como sdb. então eu iria emitir o comandoecho cfq | sudo tee /sys/class/block/sdb/queue/scheduler

Eu faço minha alteração permanente para todas as unidades conectadas ao meu computador, adicionando o parâmetro kernel elevator=cfqno meu arquivo grub, que se parece com o seguinte:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash noautogroup elevator=cfq"
Charles Green
fonte
Uau, isso funcionou. Obrigado! Meu sistema agora é muito mais responsivo durante a transferência e, na verdade, é mais rápido no carregamento das coisas em geral.
Degru
Fico feliz em ouvir isso ajudou.
Charles Green
1
> Por padrão, o Ubuntu usa Prazo, mas acho que meu sistema responde mais rapidamente quando uso prazo. Eu suspeito que você queria que essa frase terminasse em '... quando eu uso o cfq'.
markus_b
Eu nunca procurei uma solução para isso por uma razão ou outra. Votei positivamente nesta resposta quando foi publicada há alguns dias, agora tive a chance de testá-la (tive que migrar muitos torrents do Deluge de volta para a Transmission, o que exigia a verificação de cada torrent) e a alteração do agendador foi realmente uma melhoria. O sistema ainda gagueja, especialmente ao alternar áreas de trabalho, mas com certeza não fica quase completamente travado como costumava fazer. Obrigado! Esta resposta é tão útil que a IMO merece uma recompensa (e estou definindo uma).
kos
@kos Não é uma solução completa, ou eu certamente ficaria muito mais feliz - ainda gaguejo ocasionalmente também, e acho isso muito frustrante.
Charles Green