Estou usando um sistema Ubuntu 16.04.3 LTS (4.10.0-40-generic) com dois HDDs e várias partições em cada disco. Quando copio dados (< 5GB) entre os dois discos, obtenho uma taxa de transferência de cerca de 70 MB / s. No entanto, quando tento copiar uma grande quantidade de dados (> 30 GB) de um disco para outro, percebo vários problemas de desempenho.
Minha pergunta é se esse comportamento é normal ou esperado nos sistemas Linux?
Alguém pode me explicar isso e me aconselhar como evitar essa queda no desempenho?
Abaixo, descreverei minhas observações. No exemplo, copiei um arquivo de imagem de disco de 54 GB de sda8 (partição de 325 GB) para sdb8 (partição de 1,6 TB)
1) A taxa de transferência diminui e o iowait aumenta
Quando tento copiar mais de 50 GB, percebo que gradualmente a taxa de transferência diminui. Eu estou monitorando o desempenho usando olhares, no topo, iotop e iostat. Com um progresso de 30 GB, a taxa de transferência caiu para 58 MB / s, de 46 GB para 36 MB / s, de 52 GB para 12 MB / s. Depois disso, a taxa de transferência realmente começa a flutuar e cai abaixo de 1MB / s.
Ao mesmo tempo, vejo que o iowait está aumentando de 0% até 62% no final.
Durante a cópia, o disco sd8 tem uma porcentagem 'ocupada' entre 40% e 60%. O sdb do disco está 100% ocupado o tempo todo.
Não apenas a taxa de transferência cai, mas também meu sistema fica menos responsivo. Eu espero que o iowait seja a causa disso.
Isso é um comportamento normal? Como a diminuição no desempenho pode ser evitada?
2) IOwait permanece alto depois de copiar
Quando a cópia terminou, percebo que o iowait ainda está alto e gradualmente começa a reduzir para valores normais. Isso leva alguns minutos. Eu acho que durante esse tempo os dados ainda são gravados em sdb a uma taxa em torno de 1 ou 2 MB / s. Usando o iotop, parece que o processo "jdb2 / sdb4-8" está causando essa gravação em disco. Durante o tempo em que o IOwait está diminuindo, meu sistema ainda sofre de falta de resposta. Também é ver que o disco sda não está mais ocupado, mas o disco sdb ainda está operando em 100% ocupado.
O que está causando a má resposta do meu sistema por alguns minutos após a ação de cópia?
Isso pode ser evitado?
3) A cópia da unidade de rede aumenta os efeitos
Quando tento copiar do meu Synology NAS para o meu disco local (sdb8), os efeitos são ainda piores. Primeiro, a unidade de rede é montada no meu sistema e, em seguida, a cópia é iniciada. Inicialmente, também é obtida uma taxa de transferência de 70MB / s, mas a taxa de transferência deve ser mais rápida. Após alguns GB, a taxa de transferência caiu muito abaixo de 1 MB / s.
A cópia foi tentada usando arrastar e soltar do Nautilus, comando "cp", comando rsync, aplicativo FreeFileSync, mas todos mostraram desempenho ruim.
Qual poderia ser a causa que os efeitos de diminuição de desempenho são piores usando unidades de rede?
Informações adicionais
Durante a cópia, "iostat -dx 5" foi usado para monitorar o desempenho do disco. Cerca de 5 GB de monitoramento de progresso de cópia mostram:
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0,00 0,00 530,40 0,00 68064,80 0,00 256,65 1,62 3,06 3,06 0,00 1,63 86,72
sdb 0,00 18767,20 0,20 112,40 23,20 73169,60 1300,05 144,32 1345,39 308,00 1347,23 8,88 100,00
Quando a cópia progrediu para cerca de 52 GB, mostra:
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0,00 0,00 64,60 0,00 8268,80 0,00 256,00 0,22 3,41 3,41 0,00 1,76 11,36
sdb 0,00 1054,40 0,20 10,60 6,40 6681,60 1238,52 148,56 9458,00 0,00 9636,45 92,59 100,00
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0,00 0,00 50,20 0,00 6425,60 0,00 256,00 0,16 3,09 3,09 0,00 1,64 8,24
sdb 0,00 2905,80 0,40 17,00 8,80 10289,60 1183,72 141,86 10199,77 652,00 10424,42 57,47 100,00
Eu percebo que estas são múltiplas perguntas, mas eu suspeito que todas estão relacionadas à mesma causa e espero que alguém possa esclarecer isso para mim.