Warum wird die Geschwindigkeit meines Flash-Laufwerks beim Kopieren langsamer?

Warum wird die Geschwindigkeit meines Flash-Laufwerks beim Kopieren langsamer?

Nach ein paar Minuten wird das Kopieren immer langsamer. Warum?

zB beginnt es mit 20 MByte/s und wenn es damit endet, sind es @10 MByte/s.

Verschiedene Dateien, groß, klein usw.

UPDATE: Die Frage betrifft verschiedene Betriebssysteme, es handelt sich also um eine „allgemeine Frage“

Antwort1

Dieses Verhalten ist nicht nur auf Ihren Flash-Speicher beschränkt, Sie können es auch bei Festplatten beobachten. Es hängt mit dem Caching-Mechanismus zusammen, den die meisten Betriebssysteme und Festplatten verwenden, um kleine Schreibvorgänge zu beschleunigen.

Die angezeigten 20 MB/s sind die Daten, die in den Festplattencache geschrieben werden (normalerweise schneller, aber kleiner Speicher). Sobald dieser Cache voll ist, müssen die Daten auf die Festplatte geschrieben werden – und jetzt wird die langsamere Festplatte zum Engpass.

Beispiel 1: Der Effekt ist besonders ausgeprägt, wenn Sie einen Controller mit großem Cache haben (wie einen guten RAID5-Controller), wo etwa 500 MB Daten schnell zwischengespeichert werden können, bevor sie auf die Festplatte geschrieben werden müssen.

Beispiel 2: Sie können den Cache in Aktion sehen, wenn Sie den USB-Stick herausziehen, während das Kopieren der Datei „fertig“ ist. Zu diesem Zeitpunkt ist Ihre Datei zwischen der Festplatte und dem Cache aufgeteilt – das Kopieren ist also für das Betriebssystem „fertig“, aber der Festplattencontroller muss noch den Rest des Caches auf die Festplatte schreiben. Wenn Sie den USB-Stick wieder einstecken und die Datei überprüfen, werden Sie sehen, dass nicht alles da ist.

Haftungsausschluss: Diese Beispiele funktionieren nicht, wenn in Ihrem Betriebssystem/auf der Festplatte der Schreibcache nicht aktiviert ist.

Wenn es außerdemnichtWenn Sie den Festplatten-Cache verwenden, ist es wahrscheinlich, dass Sie einen Fragmentierungseffekt sehen. Wenn die Festplatte immer voller wird, ist weniger zusammenhängender freier Speicherplatz verfügbar und das Dateisystem muss härter arbeiten, um Speicherorte für Ihre Dateien zu finden.

Antwort2

Obwohl das Caching einen Teil davon verursacht, ist es nicht der einzige Faktor. Wenn das Caching der einzige Faktor wäre, würden wir erwarten, dass die Schreibgeschwindigkeit sehr schnell von mehreren hundert MB/s auf die tatsächliche Schreibgeschwindigkeit des Laufwerks abfällt und dort für den Rest des Schreibvorgangs bleibt. Dies ist jedoch nicht das, was ich bei der Durchführung großer Übertragungen von und zur Festplatte (z. B. beim Brennen von Boot-Images) beobachtet habe. Stattdessen beobachte ich, dass die Geschwindigkeit im Laufe des gesamten Vorgangs allmählich abnimmt.

Diese Verlangsamung wird durch die Datenremanenz auf den zum Speichern der Daten verwendeten Flash-Chips verursacht, was erfordert, dass einige Blöcke mehr als einmal beschrieben werden müssen.

In einem Flash-Chip befinden sich Datenblöcke, die beschrieben werden können. Beim Schreiben kann der Computer nur zwei Dinge tun: Er kann einen ganzen Block löschen oder einige (oder alle) Bits in einem Block von 0 auf 1 ändern.

Allerdings sind einige dieser Blöcke besser als andere, insbesondere bei Flash-Laufwerken von geringerer Qualität. Daher können beim Schreiben neuer Daten einige der Bits direkt nach dem Schreiben von selbst auf 0 zurückwechseln und ändern sich nicht. Daher muss das Betriebssystem beim Schreiben in einen Block überprüfen, ob alle Daten korrekt geschrieben wurden. Wenn dies nicht der Fall ist, muss es den Block neu erstellen, indem es dieselben Daten zwei- oder dreimal in denselben Block schreibt, bis die Daten erhalten bleiben.

Wenn Ihr Computer also eine Menge Daten auf den Flash-Speicher schreibt, finden Sie hier eine (nicht ganz genaue, aber ausreichend gute) Erklärung, wie das funktioniert:

  1. Nehmen Sie den ersten Satz zu schreibender Blöcke und schreiben Sie sie alle.
  2. Lesen Sie alle Blöcke, die wir gerade geschrieben haben, noch einmal durch und erstellen Sie eine Liste der Blöcke, die nicht übereinstimmen
  3. Schreiben Sie den nächsten Satz Blöcke zusammen mit denen, die beim letzten Mal nicht richtig geschrieben wurden.
  4. Wiederholen Sie 2–3, bis alle Blöcke richtig geschrieben wurden.

Wenn der Computer auf das Laufwerk schreibt, meldet er die Rate, mit der er Blöcke zum ersten Mal auf das Laufwerk schreibt. Da er gleichzeitig auch frühere Blöcke neu schreiben muss, sinkt der Gesamtdurchsatz, der für jungfräuliche Blöcke verwendet werden kann, wenn die Anzahl der erforderlichen Neuschreibungen zunimmt. Daher nimmt die scheinbare Schreibgeschwindigkeit mit der Zeit ab.

Antwort3

Ich hatte unter OSX Probleme damit und konnte die Dinge deutlich verbessern. Zuerst habe ich den Spotlight-Index daran gehindert, das Ziellaufwerk zu indizieren. Dann habe ich die Miniaturbildgenerierung auf dem Ziellaufwerk gestoppt (55.000 Bilder wurden kopiert).

Und schließlich habe ich die Verwendung der GUI aufgegeben und bin zur Kommandozeile gewechselt und habe rsync -a source target verwendet.

Wahrscheinlich können Sie in dieser Richtung auch für andere Betriebssysteme ähnliche Dinge tun.

Antwort4

Wenn eine Datei auf ein Laufwerk geschrieben wird, sei es ein USB-Flash-Laufwerk oder eine Festplatte, werden die Daten NICHT/NIEMALS zurückgelesen, um zu sehen, ob sie übereinstimmen. Das würde ewig dauern. Die Überprüfung des Schreibvorgangs wird von der Hardware durchgeführt (zyklische Redundanzprüfung) und wenn ein Fehler auftritt, wird er von der Hardware, die einen Fehler erkannt hat, an die Anwendung zurückgemeldet. Die auftretenden Verzögerungen und Verlangsamungen (sogar eine Pause) werden dadurch verursacht, dass die CPU schneller schreibt, als das Gerät es verarbeiten kann. Bei internen Festplatten passiert dies nicht. Sie werden nie sehen, was auf einem Windows-Betriebssystem wirklich passiert, aber unter Linux können Sie tatsächlich sehen, dass die CPU pausiert, bis die USB-Hardware OK zum Fortfahren sagt.

verwandte Informationen