Bei einer Gigabit-Verbindung erreicht Teracopy 31 MB / s, bei Windows 8 jedoch ~ 109 MB / s?
Was genau verursacht das? Und kann ich solche Geschwindigkeiten über Teracopy aktivieren? Ich werde die zusätzlichen Funktionen, die Teracopy bietet, jetzt sicherlich vermissen: D
Zwei Wörter: Verifikation und Cache
Technische Erklärung
Dies ist die allgemeine Vorgehensweise zum Kopieren einer Datei mit Windows Explorer:
- Liest einen Datenblock vom Quelllaufwerk in den Speicher
- Senden Sie den Block durch die Systeme
- Schreiben Sie den Block auf das Ziellaufwerk
- Wenn noch nicht geschehen, kehren Sie zu Schritt 1 zurück
Dies scheint einfach und kurz genug zu sein. Bei diesem Übertragungsalgorithmus wird jedes Byte der Datei nur zweimal verarbeitet: einmal lesen, einmal schreiben.
Darüber hinaus verwendet Windows (wie auch das Laufwerk selbst) Speicher, um einige Daten zwischenzuspeichern. Anstatt zu warten, bis der vorherige Block fertig geschrieben ist, und dann den nächsten Block zu lesen, kann währenddessen ein neuer Block gelesen werden der vorherige noch geschrieben wird. Dies kann natürlich nicht ewig dauern, aber Windows kann den gesamten verbleibenden freien Speicher als temporären Puffer zum Speichern der meisten, wenn nicht der gesamten im Speicher gelesenen Datei verwenden.
Sie können das Zwischenspeichern in Aktion sehen, indem Sie eine große Datei oder einen Ordner mit vielen Dateien von einem Laufwerk auf ein anderes kopieren und die beiden sofort vergleichen. Der Vergleich wird viel sein diesem Zeitpunkt schneller als zu einem späteren Zeitpunkt, da sich die Datei (en) noch im Speicher befinden und daher nicht wirklich von den Laufwerken gelesen werden.
Da der Speicher sehr schnell ist und die Lesegeschwindigkeiten tendenziell etwas höher sind als die Schreibgeschwindigkeiten, wird die endgültige Übertragungsrate letztendlich nur durch die Schreibgeschwindigkeit des Ziellaufwerks begrenzt.
Teracopy kann zwei Dinge tun, die eine Dateiübertragung verlangsamen können, die der Explorer nicht tut:
Verzichten Sie auf den Cache und lesen Sie direkt vom Laufwerk
Stellen Sie sicher, dass das Ziel richtig geschrieben wurde
Im Gegensatz zu Explorer, der während der Übertragung nur auf grundlegende Fehler überprüft, kann Teracopy tatsächlich überprüfen, ob die Daten korrekt auf das Ziellaufwerk geschrieben wurden, um eine Datenbeschädigung zu vermeiden, die aufgrund von Problemen mit dem Übertragungsmedium (Netzwerk / Laufwerkskabel usw.) auftreten kann. ) oder das Laufwerk selbst (fehlerhafter Sektor usw.) Wenn Sie dies tun, muss die Datei vom Ziel gelesen werden , um sie mit dem Original zu vergleichen.
Abhängig vom verwendeten Algorithmus und der Größe der Datei kann die Überprüfung auf mindestens drei optimiert werden für jede Datei / jeden Datei-Chunk auf Laufwerksoperationen Gegensatz zu den beiden in Explorer: Lesen Sie die Datei aus der Quelle, schreiben Sie die Datei an das Ziel und lesen Sie die Datei vom Ziel.
Sehen Sie sich an, was passiert, wenn Sie eine Datei mit Teracopy (mit einem HDD-optimierten Algorithmus) kopieren:
- Lesen Sie einen Block vom Quelllaufwerk
- Hash der Block, der vom Quelllaufwerk gelesen wurde
- Senden Sie den Block durch die Systeme
- Schreiben Sie es auf das Ziellaufwerk
- Löschen Sie die Caches
- Lesen Sie den Block vom Ziellaufwerk zurück
- Hash den Chunk vom Ziellaufwerk
- Vergleiche Hashes
- Bestimmen Sie den nächsten Schritt
- Wenn die Hashes nicht übereinstimmen, geben Sie einen Fehler an und fordern Sie den Benutzer zum Handeln auf
- Wenn die Hashes übereinstimmen und nicht abgeschlossen sind, fahren Sie mit Schritt 1 fort
Das Problem ist, dass, wenn Sie die Dateien während der Übertragung zwischenspeichern, der Vergleich unbrauchbar wird, da Sie nicht die tatsächlichen Daten auf dem Ziellaufwerk lesen, sondern die im Speicher zwischengespeicherte Kopie von der Quelle lesen. Zur ordnungsgemäßen Überprüfung müssen Sie daher den Cache leeren. Dies kann nach jedem Lese- und Schreibvorgang erfolgen (ein zusätzlicher Vorgang, der unzählige Male für Dateien mit einer signifikanten Größe ausgeführt werden würde) oder nur einmal danach die gesamte Datei übertragen wurde.
Gemäß dem folgenden Screenshot führt TeraCopy die Überprüfung nach dem Übertragen der Dateien durch, nicht während. Dies bedeutet, dass stattdessen dieser CPU / RAM-optimierte Übertragungsalgorithmus verwendet wird:
- Lesen Sie einen Block vom Quelllaufwerk
- Senden Sie den Block durch die Systeme
- Schreiben Sie es auf das Ziellaufwerk
- Wenn noch nicht geschehen, kehren Sie zu Schritt 1 zurück
- Kopieren fertig, also Cache leeren und Verifizieren
- Lesen Sie einen Block vom Quelllaufwerk
- Hash den Chunk vom Ziellaufwerk
- Lesen Sie einen Block vom Ziellaufwerk
- Hash den Chunk vom Ziellaufwerk
- Vergleiche Hashes
- Bestimmen Sie den nächsten Schritt
- Wenn die Hashes nicht übereinstimmen, geben Sie einen Fehler an und fordern Sie den Benutzer zum Handeln auf
- Wenn die Hashes übereinstimmen und nicht abgeschlossen sind, fahren Sie mit Schritt 6 fort
Während dieses Algorithmus legt etwas weniger Belastung für die CPU und RAM, auch es viel mehr Belastung für die Festplatte (n) legt , weil jetzt jede Datei verarbeitet wird , hat vier Mal: die gesamte Datei aus der Quelle lesen, schreibt es zum Ziel Lesen Sie es dann erneut von der Quelle und erneut vom Ziel.
(Wenn TeraCopy für Netzwerkübertragungen optimiert wäre, könnte vermieden werden, dass die gesamte Datei ein zweites Mal zur Überprüfung gesendet wird und nur die Hashes gesendet werden, die viel kleiner sind, aber dies scheint derzeit nicht der Fall zu sein, und Netzwerktreiber werden gleich behandelt als lokales Laufwerk, so dass es tatsächlich die Quelle neu liest.)
Standardmäßig überprüft oder verwendet TeraCopy den Cache nicht. Eine Nichtverifizierung würde die Übertragung beschleunigen (oder genauer gesagt nicht verlangsamen ), während eine Nichtverwendung des Cache die Übertragung verlangsamen würde .
Anwendung
Um Ihre spezifischen Geschwindigkeitsergebnisse zu ermitteln, müssen Sie Ihre Einstellungen überprüfen, um festzustellen, ob Sie sie geändert haben. Dann können Sie versuchen, zu schätzen, welche Geschwindigkeiten Sie mit den verschiedenen Einstellungen erhalten würden (beachten Sie, dass diese wahrscheinlich interagieren werden, sodass es nicht einfach ist, sie zu addieren oder zu subtrahieren).
Das heißt, lassen Sie uns eine flüchtige Berechnung mit Ihren Zahlen machen:
- Lokale Dateiübertragung: 875 Mbit / s (dh Laufwerksgeschwindigkeit)
- Netzwerkgeschwindigkeit: 1 Gbit / s = 119,21 MBit / s
- Kopieren Sie über den Windows Explorer: 109 MBit / s
- Kopieren über TeraCopy: 34 MBit / s
Auf Anhieb stellen wir fest, dass der Dateitransfer des Explorers Ihren Netzwerkdurchsatz nahezu maximiert. Eine 1-Gbit / s-Verbindung entspricht 1.000.000.000 Bits pro Sekunde, was in binären Einheiten von Bytes 119 MBit / s entspricht. Explorer taktet 109MBps, und der restliche 10MBps (was komisch genug , um Ihr vorheriger war max :^Þ
) kann leicht durch Overhead, Hintergrundbelastung und Fragmentierung berücksichtigt werden.
(Da die Übertragungsrate fast der Netzwerkgeschwindigkeit entspricht, können wir davon ausgehen, dass die Dateiübertragung in eine Richtung erfolgt und nur eine einzige Kopie jeder Datei gesendet wird.) Explorer erhält 110 MBit / s für zwei Dateizugriffe pro Datei.
Nun zu TeraCopy. Es scheint, dass TeraCopy fast genau ein Drittel der Geschwindigkeit des Explorers erreicht.
Abhängig davon, ob das Dialogfeld "Einstellungen" den verwendeten Algorithmus genau angibt oder nicht, sendet TeraCopy möglicherweise die gesamte Quelldatei zweimal, damit die Kopie überprüft werden kann. Dies halbiert sofort den Durchsatz. Wenn der Cache eingeschaltet ist, verringert dies ebenfalls die Geschwindigkeit, da auf das Ende jedes Schreibvorgangs gewartet werden muss, bevor ein neuer Block gesendet werden kann. In Kombination mit der Verifizierung kann es das System sogar noch mehr beeinträchtigen.
Ihre Übertragungsrate von 34 MBit / s erscheint angemessen, wenn Sie die Überprüfung aktiviert und die Zwischenspeicherung deaktiviert haben. Wenn Sie die Überprüfung deaktivieren und die Zwischenspeicherung aktivieren, sollten Sie ungefähr das Gleiche wie im Explorer erhalten (je nachdem, wie unterschiedlich der von TeraCopy verwendete Dateiübertragungscode von dem im Explorer verwendeten Code ist, erhalten Sie möglicherweise immer noch etwas weniger oder sogar etwas mehr).
Wenn Sie fast 10 GB übertragen möchten, können Sie auch versuchen, die Einstellungen zu ändern und die Übertragung für jede der vier Permutationen zu wiederholen. Notieren Sie sich die erzielten Geschwindigkeiten Aus zwischen den Läufen:) V+C+, V+C-, V-C+, V-C-
.