Pourquoi la vitesse de mon lecteur flash ralentit-elle lors de la copie?

27

Après quelques minutes de copie, cela devient de plus en plus lent. Pourquoi?

Par exemple, il commence avec 20 Mo / s, et quand il se termine avec, c'est @ 10 Mo / s.

Divers fichiers, grands, petits, etc.

MISE À JOUR: la question concerne différents systèmes d'exploitation, c'est donc une "question générale"

LanceBaynes
la source
Combien copiez-vous par rapport à la quantité de mémoire libre dont vous disposez sur votre ordinateur?
KCotreau
PC -> Lecteur USB-FLASH: plusieurs centaines de Go gratuits -> quelques Go gratuits
LanceBaynes
1
Je soupçonne que vous avez des fichiers mis en mémoire cache dans un premier temps afin qu'ils transfèrent rapidement, puis une fois qu'ils commencent à être déplacés du disque dur, cela ralentit. Je ne peux cependant pas être sûr dans votre cas.
KCotreau
vous me conseillez donc d'utiliser la commande "sync" plus souvent?
LanceBaynes
Je ne comprends pas ce que vous entendez par la commande de synchronisation. Vous n'avez donné aucun contexte à la question. Je ne sais même pas quel OS.
KCotreau

Réponses:

25

Ce comportement n'est pas spécifique à votre lecteur flash, vous pouvez également le voir avec les disques durs. Cela a à voir avec le mécanisme de mise en cache que la plupart des systèmes d'exploitation et des disques utilisent pour accélérer les petites écritures.

Les 20 Mo / s que vous voyez sont les données en cours d'écriture dans le cache disque (généralement une mémoire rapide mais petite). Une fois que ce cache est plein, il doit être vidé sur le disque - et maintenant vous êtes goulot d'étranglement par le disque plus lent.

Exemple 1: L'effet est vraiment prononcé lorsque vous avez un contrôleur avec un grand cache (comme un bon contrôleur RAID5) où ~ 500 Mo de données peuvent être mises en cache rapidement avant de les vider sur le disque.

Exemple 2: Vous pouvez voir le cache en cours de lecture si vous retirez le lecteur flash en même temps que la copie du fichier est "terminée". À ce stade, votre fichier est divisé entre le disque et le cache - la copie est donc "terminée" en ce qui concerne le système d'exploitation, mais le contrôleur de disque doit toujours écrire ce qui reste dans le cache sur le disque. Si vous remettez la clé USB en place et inspectez le fichier, vous verrez que tout n'est pas là.

Avertissement: Ces exemples ne fonctionneront pas si vous n'avez pas activé la mise en cache d'écriture dans votre système d'exploitation / sur le disque.

De plus, si ce n'est pas la mise en cache du disque au travail, il est probable que ce que vous voyez est un effet de la fragmentation. Au fur et à mesure que le disque devient de plus en plus plein, moins d'espace libre contigu est disponible et le système de fichiers doit travailler plus dur pour trouver des emplacements pour stocker vos fichiers.

ta.speot.is
la source
Gardez également à l'esprit qu'il s'agit d'un lecteur flash. Son matériel n'a jamais été optimisé pour la vitesse, mais plutôt pour un prix abordable.
surfasb
Je ne pense pas que cela expliquerait pourquoi les performances diminueraient lors de longues copies de fichiers. Les performances diminueraient plutôt au cours de la durée de vie du disque, non?
ta.speot.is
C'est parfaitement logique. Ils sont optimisés pour des vitesses de rafale et non pour des opérations soutenues. Pensez à la taille moyenne des fichiers chargés sur les lecteurs flash. Souhaitez-vous optimiser pour un transfert de fichiers de 30 secondes ou optimiser pour un transfert de 2 secondes? Ajoutez cela à vos deux exemples, et cela en explique beaucoup.
surfasb
C'est comme lorsque vous essayez de faire entrer deux personnes à la fois dans une porte moyenne. Au début, vous pouvez calculer. Wow, je suis passé de zéro personne à cette porte à deux à la fois. Ma vitesse est super. Ensuite, la ligne s'allonge et votre échantillonnage s'améliore et vous réalisez enfin que petit échantillon = mauvais calcul. . .
surfasb le
@ ta.speot.is Je suppose que ce cache disque que vous avez mentionné est géré par le système d'exploitation sur le disque dur et est différent du cache matériel que les disques durs ont en interne, non?
sepehr
1

Bien que la mise en cache provoque une partie de cela, ce n'est pas le seul facteur. Si la mise en cache était le seul facteur, alors nous nous attendrions à ce que la vitesse d'écriture passe rapidement de plusieurs centaines de Mo / s à la vitesse d'écriture réelle du lecteur très rapidement, et y reste pour le reste de l'écriture. Cependant, ce n'est pas ce que j'ai observé lors de l'exécution de gros transferts vers et depuis le disque (par exemple, la gravure d'images de démarrage). Au lieu de cela, ce que j'observe, c'est que la vitesse diminue progressivement au cours de toute l'opération.

Ce ralentissement est dû à la rémanence des données sur la ou les puces flash utilisées pour stocker les données, nécessitant que certains des blocs soient écrits sur plusieurs fois.

À l'intérieur d'une puce flash, il y a un bloc de données qui peut être écrit. Lors de l'écriture, l'ordinateur ne peut faire que deux choses: il peut effacer un bloc entier, ou changer une partie (ou la totalité) des bits d'un bloc de 0 à 1.

Cependant, certains de ces blocs sont meilleurs que d'autres, en particulier dans les lecteurs flash de qualité inférieure, et en conséquence, lorsque vous y écrivez de nouvelles données, certains bits peuvent parfois revenir à 0 par eux-mêmes juste après avoir été écrits, et don ne change pas. Ainsi, lors de l'écriture dans un bloc, le système d'exploitation doit vérifier que toutes les données ont été écrites correctement, et si ce n'est pas le cas, il doit refaire le bloc en écrivant les mêmes données dans le même bloc deux ou trois fois. jusqu'à ce que les données collent.

Ainsi, lorsque votre ordinateur écrit un tas de données sur le lecteur flash, voici une explication (pas complètement précise, mais assez bonne) de la façon dont il le fait:

  1. Prenez le premier ensemble de blocs à écrire et écrivez-les tous.
  2. Relisez tous les blocs que nous venons d'écrire et faites une liste de ceux qui ne correspondent pas
  3. Écrivez le prochain ensemble de blocs, ainsi que ceux qui n'ont pas été écrits correctement la dernière fois.
  4. Répétez 2-3 jusqu'à ce que tous les blocs aient été écrits correctement.

Lorsque l'ordinateur écrit sur le lecteur, il signale la vitesse à laquelle il écrit des blocs sur le lecteur pour la première fois. Comme il devra également réécrire les blocs précédents en même temps, le débit total pouvant être utilisé pour les blocs vierges diminue à mesure que le nombre de réécritures qui doivent également se produire augmente. Ainsi, la vitesse d'écriture apparente diminue avec le temps.

AJMansfield
la source
J'écris un fichier 12 Gig 7zip sur un tout nouveau lecteur flash USB 3.0 formaté en NTFS. Il allait environ 100 Mo / s pendant la première minute, puis est tombé à 25 Mo / s pendant environ une minute, puis est tombé à environ 11 pendant environ 10 minutes. Ce n'était pas une pente descendante progressive, c'était 3 plateaux distincts.
Eric
Je copiais l'archive de mon ancien ordinateur portable i7 avec 16 Go de RAM. Copier cette même archive 7zip à partir de la même clé USB sur mon nouvel ordinateur portable Xeon avec 32 Go de RAM a pris 2 minutes et il n'y a pas eu de baisse de vitesse.
Eric
0

Lorsque le fichier est écrit sur un lecteur, qu'il s'agisse d'un lecteur flash USB ou d'un disque dur, les données ne sont PAS / JAMAIS relues pour voir si elles correspondent. Cela prendrait pour toujours. la vérification de l'écriture est effectuée par le matériel (vérification de redondance cyclique) et si une erreur se produit, elle est renvoyée à l'application depuis le matériel détecté une erreur. Le blocage qui se produit et ralentit (même jusqu'à une pause) est provoqué par l'écriture du processeur plus rapidement que l'appareil ne peut le gérer. Vous ne constaterez pas que cela se produit sur les disques durs internes. Vous ne verrez jamais ce qui se passe réellement sur un système d'exploitation Windows, mais sur Linux, vous pouvez réellement voir que le processeur s'arrête jusqu'à ce que le matériel USB dise OK pour continuer

stevedonato
la source
La différence de vitesse d'écriture de différents périphériques de stockage peut être extrême, par exemple comparer la vitesse d'écriture d'une ancienne carte SD à la vitesse d'écriture d'un SSD SATA III.
karel
3
Veuillez vous abstenir d'insultes personnelles. Bien que votre message soit correct, vous devez le modifier pour respecter nos normes communautaires.
Ben N