A transferência de arquivos grandes para / da unidade USB faz com que o sistema seja interrompido até a transferência ser concluída


3

Eu tenho uma caixa executando o servidor Ubuntu 16.04. Ele possui um disco rígido SATA interno com o sistema operacional e um disco rígido USB 3 conectado que eu uso para armazenamento de arquivos grandes / longos. Muitas vezes, isso significa copiar um arquivo ou pasta grande da unidade interna para a unidade USB. No entanto, sempre que faço isso, o restante do sistema fica incrivelmente lento, se não quase completamente congelado, até que a transferência do arquivo seja concluída.

Eu executei alguns testes para garantir que não se devesse à sobrecarga do programa ou ao tipo de arquivo. Tentei arquivos grandes contíguos e pastas grandes de muitos arquivos pequenos, e tentei usar cp, pv com pipes, tar com pipes e rsync. Em todos os casos, o restante do sistema trava.

Também tentei executar cada um desses comandos com o ionice -c 3 nice -n 20 na frente deles, dando ao processo a menor prioridade para processador e E / S. htop mostra que o processo tem um bom valor de 19. Não sei se esse é o mínimo real ou se não está sendo definido corretamente, mas, independentemente disso, a maioria dos outros processos, incluindo os serviços da Web, tem valores agradáveis ​​inferiores a 19 de qualquer maneira .

A caixa está executando várias páginas da web dinâmicas, algumas com php e outras com python. Eles se tornam basicamente inutilizáveis ​​durante a transferência do arquivo. Presumo que a desaceleração seja causada pela sobrecarga do USB, pois, como eu o entendo, todas as transferências USB precisam passar pela CPU. É isso que realmente está causando a desaceleração? E, mais importante, existe alguma maneira de mitigar isso?


EDIT (resposta a comentários):

As unidades internas e externas estão usando ext4 nativo, portanto não há FUSE. Nada deve indexar os arquivos que eu conheço, exceto o que o Ubuntu possa fazer por padrão (este é o Ubuntu Server decapitado). A CPU não parece estar sob carga da htopperspectiva da empresa, mas os relatórios de uso do tempo de atividade saltam de cerca de 0,5 para 6,0-8,0. O pvuso de limitação de taxa -Lparece ajudar, por isso é uma solução para uma ferramenta. Normalmente, uso apenas pvao copiar arquivos únicos. Existe alguma maneira de limitar a taxa de outros programas? Eu também preferiria alterar a priorização em vez de apenas limitá-la. Otimize com base na carga do sistema.

É uma instalação pura do servidor Ubuntu. Ele tem o xorg instalado, mas acho que não há sequer um gerenciador de janelas instalado, eu só queria o encaminhamento do X11 pelo ssh.

Além disso, enquanto os limitadores de taxa em pv, rsync, etc funcionam bem para salvar o sistema, eu também gostaria de maximizar a taxa de transferência. Existe alguma maneira, além de nice / ionice, que não parece fazer muito, dizer ao sistema para fazer a transferência o mais rápido possível, mas dar mais prioridade ao sistema, se ele quiser? Assim, por exemplo, se eu tiver uma transferência para USB que levará uma hora para ser concluída, meia hora em alguém começar a usar um dos sites python, ela será transferida o mais rápido possível na primeira meia hora, mas então o O sistema começaria a limitá-lo quando o usuário começar a fazer solicitações ao site python. (Estou começando a pensar que esta pergunta deveria ter sido postada em Server Fault, e peço desculpas por isso.)


O que é a carga da CPU durante a transferência? (use, por exemplo, topou htop). Você tentou pv -Llimitar a taxa de transferência em seus testes? Reduziu o problema? De que taxa de transferência estamos falando?
Kamil Maciorowski 27/05

Verifique, também, que você não está indexando arquivos com algo como akonadi ...
Hastur

Além disso: qual é o sistema de arquivos de destino? e a fonte? Algum deles é montado com o FUSE?
Kamil Maciorowski

As unidades internas e externas estão usando ext4 nativo, portanto não há FUSE. Nada deve indexar os arquivos que eu conheço, exceto o que o Ubuntu possa fazer por padrão (este é o Ubuntu Server decapitado). A CPU não parece estar sobrecarregada da perspectiva do htop, mas os relatórios de uso do tempo de atividade saltam de cerca de 0,5 para 6.0-8.0. O PV com limitação de taxa usando -L parece ajudar, então essa é uma solução para uma ferramenta. Normalmente, uso apenas pv ao copiar arquivos únicos. Existe alguma maneira de limitar a taxa de outros programas? O ID também prefere alterar a priorização em vez de apenas limitá-la. Otimizar com base na carga do sistema
lpreams

Tente usar iotopou atopver o acesso ao arquivo ... BTW use rsynccom a -Popção entre outras, em vez de pv, deve envolver menos chamadas do sistema se você copiar muitos arquivos ... Quando você copia sem pv, você tem o mesmo problema?
Hastur 27/05
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.