A taxa de cópia de um arquivo grande em uma unidade USB diminui à medida que o tamanho do arquivo aumenta

2

Estou usando uma unidade USB Seagate de 1,5 TB, formatada com NTFS, conectada a um computador Linux.

Estou copiando um arquivo de 70 GB para a unidade.

Eu notei que o tamanho do arquivo da cópia começou a aumentar em uma taxa menor.

No começo, o arquivo estava crescendo a aproximadamente 19MB / s

Agora, com o tamanho do arquivo de destino de 60 GB, a taxa de crescimento é de aproximadamente 5 MB / s

Quais são os fatores que podem contribuir para isso?

    
por Alan 10.03.2011 / 20:05

4 respostas

4

Meu palpite é que é o cache (ou buffer, se você preferir).

O primeiro bloco de dados é gravado muito rapidamente no cache (para ser gravado no disco no momento certo). O cache é preenchido e, assim, a taxa de transferência cai para a taxa de transferência real para o disco (conforme os dados são gravados no disco a partir do espaço em cache fica disponível no cache)

A diminuição gradual na velocidade que você vê pode ser a velocidade média em toda a transferência. Quanto maior a transferência, maior a porcentagem da transferência na velocidade real mais baixa e, portanto, menor a taxa média de transferência.

Dizem que uma imagem pinta 1.000 palavras, então aqui está uma.

A linha azul é a taxa de transferência real, a vermelha a média desde o início. (Estas são apenas figuras de exemplo que eu inventei da minha cabeça).

    
por 10.03.2011 / 20:25
0

Hum, difícil de dizer.

Outra operação na origem e / ou destino, espaço em disco fragmentado em um ou outro. Ela se comporta exatamente da mesma maneira para cada cópia?

    
por 10.03.2011 / 20:15
0

Esta é uma questão que eu já vi com o modo como todos os novos drives verdes e de baixa potência gostam de estacionar suas cabeças de vez em quando.

    
por 10.03.2011 / 20:30
0

Além do aspecto de cache óbvio mencionado nas respostas acima, o Linux lida com dispositivos de armazenamento USB de maneira diferente dos locais.

Quando você transfere dados para um disco "clássico" (conectado internamente via SATA ou externamente via eSATA), o kernel Linux usa o modo DMA, o que significa que toda a transferência é feita diretamente da RAM para o controlador de disco, não envolvendo CPU. p>

É por isso que as transferências SATA / eSATA são rápidas.

No entanto, quando você conecta o mesmo disco via USB, cada kilobyte de dados é dividido em pacotes de 64 bytes trocados entre o computador e o controlador USB no disco USB. Isso tem que ser feito usando CPU, então não no modo DMA.

É por isso que o USB é mais lento.

O que você também deve perceber é que o Linux está armazenando dados em cache em muitos aspectos (não apenas relacionados a discos / sistemas de arquivos) e em muitas camadas. Existem mais de 100 caches diferentes.

Assim, quanto maior o arquivo que você tenta enviar para o disco USB, mais caches são preenchidos durante o processo. Esta é exatamente a causa da desaceleração não linear das transferências.

    
por 11.06.2015 / 14:03

Tags