Por que copiar para meu pendrive é tão lento no Linux (e mais rápido no Windows)?
Razão 1. O armazenamento em cache de arquivos pode fazer com que as gravações apareçam mais lentas ou mais rápidas
O problema que eu vejo na GUI é que a barra de progresso chega a 90% quase que instantaneamente, completa para 100% um pouco mais devagar e depois fica pendurada por 10 minutos.
Uma coisa que você precisa entender é o armazenamento em cache de arquivos. Linux (e Windows) usarão RAM "vazia" para armazenar operações de leitura / gravação e torná-las mais rápidas em acessos subseqüentes. Armazenar em cache as operações de cópia para diminuir a velocidade dos dispositivos resulta no comportamento que você vê - a "conclusão rápida" está realmente gravando no cache e, em seguida, diminui e pára porque o fluxo real dos dados no cache (sincronização) para o dispositivo lento é demorando muito. Se você interromper nesse ponto, os dados serão corrompidos (como você observou), já que a sincronização nunca foi concluída.
Essa cópia no Windows pode parecer mais rápida (incluindo as velocidades de MB / s relatadas) porque às vezes o Windows não espera pela sincronização, e declara o trabalho concluído assim que como os dados são gravados no cache.
Razão 2. Escrever muitos arquivos, especialmente os pequenos, é lento
Para copiar 1,8 GB
Devido à maneira como a memória flash e os sistemas de arquivos funcionam, a taxa de transferência (velocidade) mais rápida é obtida ao gravar arquivos muito grandes. Escrever muitos arquivos pequenos ou até mesmo misturar dados contendo vários arquivos pequenos pode atrasar muito o processo. Isso também afeta os discos rígidos, mas em menor grau.
Razão 3. As velocidades de gravação de um pendrive e de um SSD não podem ser comparadas
Tenho um SSD USB de 32 GB de super talento na porta vizinha e funciona a velocidades esperadas.
-
Um pen drive USB de jardim geralmente consiste em chips de memória flash gravados em série (sequencialmente) e não possui cache próprio.
-
Um SSD, por outro lado, contém um controlador que grava os chips de memória flash paralelos , aumentando o rendimento por um fator de 2 ou mais sobre o pendrive.
- Se o seu SSD de 32 GB tivesse 4 chips de 8 GB, ainda assim seria 4 vezes mais rápido do que o dispositivo USB em qualquer operação de gravação.
- O SSD também contém o cache de RAM (como discos rígidos), para que ele possa armazenar rapidamente os dados recebidos no cache e informar ao SO que está pronto, enquanto ainda precisa gravar esses dados a memória flash.
-
Portanto, com um arquivo grande, seu GB de 32 GB com a estrutura 4x que assumimos seria 4 vezes mais rápido; com muitos arquivos pequenos, seria 10x ou mais mais rápido, porque poderia armazená-los de forma inteligente em seu cache.
Para resumir , estas são as razões pelas quais a cópia de arquivos para pendrives USB pode parecer mais lenta no Linux. É realmente mais lento por causa de um problema de hardware / driver ou qualquer outra coisa ....
Fazendo uma comparação adequada das velocidades de gravação entre o Linux e o Windows
- Primeiro de tudo, esqueça o SSD por causa da razão 3. É como laranjas e maçãs.
- Para negar os efeitos do motivo 1 (cache) e do motivo 2 (arquivos pequenos), você precisa testar com um único arquivo grande, maior que a quantidade de RAM no sistema de teste.
- No Linux, você pode criá-lo com
dd if=/dev/urandom of=largetest bs=1M count=7500
, que fornece um arquivo de teste de 7500 MB. Supondo que seu sistema tenha menos de 4 GB ou mais de RAM, é bom o suficiente. Copie isso para um stick Sandisk 8GB recém-formatado e tempo. - Reinicie no Windows e copie
largetest
do pendrive para o disco rígido. Reinicie novamente (para removê-lo do cache). Em seguida, formate o pendrive (mesmo vfat / FAT32!) E copielargetest
do disco rígido para o gravador. - Como os tempos são comparados?