Kleine Dateien vs. große Dateien / TR-004

Warum sinken die Übertragungsgeschwindigkeiten so drastisch, wenn eine sehr große Anzahl sehr kleiner Dateien verschoben/kopiert wird, im Vergleich dazu, wenn nur eine sehr kleine Anzahl großer Dateien verschoben/kopiert wird?

Dateiübertragungsgeschwindigkeiten sind im Allgemeinen bei größeren Dateien schneller als bei kleineren Dateien, weil es länger dauert, mehr Daten zu übertragen. Das Übertragen vieler kleiner Dateien kann jedoch sogar langsamer sein als das Übertragen weniger großer Dateien mit derselben Gesamtgröße. Dies liegt daran, dass das Betriebssystem (OS) mehr Zeit für Vorgänge mit jeder kleinen Datei aufwendet, wie zum Beispiel das Suchen, Öffnen und Schließen.

Stellen Sie sich vor, Sie müssen eine einzelne große Kiste bewegen.

Sie müssen sich nur einmal bücken, sie aufheben, zu Ihrem Ziel tragen und abstellen – die Aufgabe ist in einer einzigen Bewegung erledigt.

Wenn Sie jedoch mehrere kleinere Kisten bewegen müssen, selbst wenn das Gesamtgewicht dem der großen Kiste entspricht, müssen Sie das Bücken, Aufheben und Abstellen mehrfach wiederholen.

Diese wiederholten Bewegungen kosten zusätzliche Zeit, was den gesamten Prozess verlangsamt und zu einer längeren Gesamtzeit für die Erledigung der Aufgabe führt.

Dies ist ein typisches Verhalten bei allen Betriebssystemen, seit sie erfunden wurden. Es gibt eine beträchtliche Menge an Overhead in jedem Betriebssystem, um die Struktur, Berechtigungen, Attribute usw. von Dateien sowie das Öffnen und Schließen von Datenströmen und anderen Funktionen zu verwalten.

Beim Umgang mit kleinen Dateien sind die „Verwaltungs“-Funktionen oft ressourcenintensiver als das eigentliche Lesen/Schreiben der Daten.

Das ist typisches Verhalten, denn Festplatten benötigen länger für viele nicht-sequenzielle Lese- und Schreibvorgänge. Die Festplatten sind das Problem, nicht die Netzwerkgeschwindigkeit.

Deshalb wurden einige Funktionen wie Tiering erfunden.
Die Dateien werden vorübergehend an einen schnelleren Ort (RAM/SSD) gelegt, damit die Aufgabe schneller abgeschlossen werden kann. Wenn das System dann im Leerlauf ist und keine I/O-Anforderungen bestehen, können die Inhalte aus dem temporären Speicher im Hintergrund auf die Festplatten geschrieben werden.

Allerdings hilft dieser Trick möglicherweise nicht, wenn:

  1. Die Dateien zu groß sind und den verfügbaren Cache-Speicher überschreiten. Dann müssen die Inhalte gezwungenermaßen auf die Festplatte geschrieben werden, um Datenverlust zu verhindern.
  2. Eine Anwendung ständig schreibt (wie Überwachung), sodass keine Gelegenheit für eine „Pause“ bei den Festplatten-I/O besteht.

Es hängt also weiterhin vom Szenario ab. Aber generell ist die Verarbeitung kleinerer Dateien immer noch zeitaufwändiger als die von großen Dateien.