web-dev-qa-db-fra.com

Pourquoi la vitesse de ma clé USB ralentit-elle lors de la copie?

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 finit avec, il est @ 10 Mo/s.

Divers fichiers, gros, petits, etc.

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

25
LanceBaynes

Ce comportement n'est pas spécifique à votre lecteur flash, vous pouvez également le voir avec les disques durs. Il s'agit du mécanisme de mise en cache utilisé par la plupart des systèmes d'exploitation et des disques pour accélérer les écritures de petite taille.

Les 20 Mo/s que vous voyez correspondent aux données en cours d’écriture dans le cache disque (mémoire généralement rapide mais petite). Une fois que ce cache est plein, il doit être vidé sur le disque - et maintenant, le disque le plus lent vous gêne.

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

Exemple 2: Vous pouvez voir le cache en jeu si vous extrayez 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. Ainsi, la copie est "terminée" en ce qui concerne le système d'exploitation, mais le contrôleur de disque doit encore écrire ce qui reste dans le cache sur le disque. Si vous remettez le lecteur flash et inspectez le fichier, vous verrez qu'il n'est pas tout.

Clause de non-responsabilité: Ces exemples ne fonctionneront pas si la mise en cache en écriture n'est pas activée dans votre système d'exploitation/sur le disque.

En outre, si la mise en cache du disque au travail n'est pas au travail, il est probable que ce que vous voyez est un effet de fragmentation. À mesure que le disque se remplit de plus en plus, l'espace libre disponible est moins contigu et le système de fichiers doit travailler plus fort pour trouver des emplacements pour stocker vos fichiers.

24
ta.speot.is

Bien que la mise en cache en soit la cause, ce n’est pas le seul facteur. Si la mise en cache était le seul facteur à prendre en compte, 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 et y reste pendant le reste de l'écriture. Cependant, ce n’est pas ce que j’ai observé lors de transferts importants vers et depuis le disque (par exemple, la gravure d’images de démarrage). Ce que j’observe au contraire, c’est que la vitesse diminue progressivement tout au long de l’opération.

Ce ralentissement est dû à la rémanence des données sur la (les) puce (s) flash utilisée (s) pour stocker les données, ce qui nécessite que certains blocs soient écrits plus d’une fois.

À l'intérieur d'une puce flash, il y a un bloc de données sur lequel on peut écrire. Lors de l'écriture, l'ordinateur ne peut faire que deux choses: il peut effacer un bloc entier ou changer tout ou partie des bits d'un bloc de 0 à 1.

Cependant, certains de ces blocs sont meilleurs que d’autres, en particulier dans les disques flash de qualité inférieure. En conséquence, lors de l’écriture de nouvelles données, certains bits peuvent parfois revenir à 0 par eux-mêmes juste après avoir été écrits. 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. Sinon, il doit refaire le bloc en écrivant les mêmes données deux ou trois fois dans le même bloc. 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 tout à fait précise, mais suffisante) pour expliquer comment il le fait:

  1. Prenez le premier groupe de blocs à écrire et écrivez-les tous.
  2. Relisez tous les blocs que nous venons d'écrire et dressez une liste de ceux qui ne correspondent pas
  3. Ecrivez la prochaine série de blocs, ainsi que ceux qui n'ont pas été écrits correctement la dernière fois.
  4. Répétez les étapes 2 et 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 à effectuer augmente également. Ainsi, la vitesse d'écriture apparente diminue avec le temps.

1
AJMansfield

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 (contrôle de redondance cyclique) et si une erreur se produit, elle est renvoyée à l'application à partir du matériel qui a détecté une erreur. Le blocage qui se produit et ralentit (même jusqu'à une pause) est provoqué par l'écriture plus rapide du CPU que le périphérique ne peut le gérer. Cela ne se produira pas pour les disques durs internes. Vous ne verrez jamais ce qui se passe réellement sur un système d'exploitation Windows, mais sous Linux, vous pouvez réellement constater que le processeur s'interrompt jusqu'à ce que le matériel USB indique qu'il est prêt à continuer.

0
stevedonato