Por que a velocidade da minha unidade flash diminui quando copiando?

24

Após alguns minutos de cópia, fica mais lento e mais lento. Por quê?

por exemplo. Começa com 20 MByte / seg, e quando termina com ele, é @ 10 MByte / s.

Vários arquivos, grandes, pequenos, etc.

ATUALIZAÇÃO: pergunta é sobre vários sistemas operacionais, por isso é uma "questão geral"

    
por LanceBaynes 26.07.2011 / 08:30

3 respostas

22

Esse comportamento não é específico da sua unidade flash, você pode ver isso também com discos rígidos. Tem a ver com o mecanismo de cache usado pela maioria dos sistemas operacionais e discos para acelerar pequenas gravações.

Os 20mb / s que você vê são os dados sendo gravados no cache de disco (geralmente memória rápida, mas pequena). Quando esse cache estiver cheio, ele deve ser liberado para o disco - e agora você está sendo afunilado pelo disco mais lento.

Exemplo 1: O efeito é realmente pronunciado quando você tem um controlador com um cache grande (como um bom controlador RAID5), onde ~ 500mb de dados podem ser armazenados em cache rapidamente antes de serem liberados para o disco.

Exemplo 2: Você pode ver o cache em jogo se você puxar a unidade flash para fora ao mesmo tempo em que a cópia de arquivo "terminou". Neste momento, o arquivo é dividido entre o disco e o cache - portanto, a cópia é "finalizada" no que diz respeito ao sistema operacional, mas o controlador de disco ainda precisa gravar o que resta no cache no disco. Se você colocar a unidade flash de volta e inspecionar o arquivo, verá que não está tudo lá.

Aviso: Esses exemplos não funcionarão se você não tiver o cache de gravação ativado em seu sistema operacional / no disco.

Além disso, se não houver cache de disco no trabalho, é provável que o que você está vendo seja um efeito de fragmentação. À medida que o disco fica mais cheio e mais cheio, menos espaço livre contíguo está disponível e o sistema de arquivos tem que trabalhar mais para encontrar locais onde colocar seus arquivos.

    
por 26.07.2011 / 09:15
1

Embora o cache cause alguns desses problemas, não é o único fator. Se o cache fosse o único fator, esperaríamos que a velocidade de gravação caísse rapidamente de várias centenas de MB / s para a velocidade real de gravação do disco, e permanecesse lá pelo resto da gravação. No entanto, isso não é o que observei ao realizar grandes transferências de e para o disco (por exemplo, imagens de inicialização em gravação). Em vez disso, o que eu observo é que a velocidade diminui gradualmente ao longo de toda a operação.

Essa lentidão é causada pela remanência de dados no (s) chip (s) flash usados para armazenar os dados, exigindo que alguns dos blocos sejam gravados em mais de uma vez.

Dentro de um chip flash, há um bloco de dados que pode ser gravado. Ao escrever, existem apenas duas coisas que o computador pode fazer: ele pode apagar um bloco inteiro ou alterar alguns (ou todos) os bits em um bloco de 0 a 1.

No entanto, alguns desses blocos são melhores que outros, especialmente em unidades flash de baixa qualidade e, como resultado, ao escrever novos dados, alguns dos bits podem, por vezes, voltar a ser 0 após serem gravados. e não mude. Assim, ao gravar em um bloco, o sistema operacional precisa verificar se todos os dados foram gravados corretamente e, se não foi, deve refazer o bloco escrevendo os mesmos dados no mesmo bloco duas ou três vezes. até que os dados fiquem.

Então, quando seu computador está gravando um monte de dados para a unidade flash, aqui está uma explicação (não completamente precisa, mas boa o suficiente) de como isso é feito:

  1. Pegue o primeiro conjunto de blocos a ser escrito e escreva todos eles.
  2. Leia todos os blocos que acabamos de escrever e faça uma lista dos que não correspondem
  3. Escreva o próximo conjunto de blocos, juntamente com os que não foram escritos corretamente da última vez.
  4. Repita 2-3 até que todos os blocos tenham sido escritos corretamente.

Quando o computador está gravando na unidade, ele está relatando a taxa na qual está gravando blocos na unidade pela primeira vez. Como ele também terá que reescrever os blocos anteriores ao mesmo tempo, a taxa de transferência total que pode ser usada para blocos virgens diminui à medida que o número de reescritas que também precisam acontecer aumenta. Assim, a velocidade de gravação aparente diminui com o tempo.

    
por 11.12.2015 / 21:26
0

Quando o arquivo é gravado em uma unidade, seja uma unidade flash USB ou um disco rígido, os dados NÃO são / NUNCA são lidos novamente para ver se correspondem. Isso levaria para sempre. verificação da gravação é feita pelo hardware (verificação de redundância cíclica) e se ocorrer um erro, ele é postado de volta para o aplicativo do hardware detectou um erro. O travamento que ocorre e desacelera (mesmo para uma pausa) é causado pela CPU escrevendo mais rápido do que o dispositivo pode lidar com isso. Você não encontrará isso acontecendo em discos rígidos internos. Você nunca verá o que realmente está acontecendo em um sistema operacional Windows, mas no Linux você pode realmente ver que a CPU faz uma pausa até que o hardware USB diga OK para continuar

    
por 31.05.2016 / 22:43