Forum: PC Hard- und Software Wurum sinkt der Datendurchsatz beim kopieren vieler kleiner Dateien


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Bitte Flotter (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo

gerade mal wieder in Extremis festgestellt:

Beim Übertragen einer etwa 18 GB großen Videodatei von einer schnellen 
64 GB microSDXC Speicherkarte Klasse 10 problemfrei deutlich über 50 
MB/sek (angeblich auch zeitweise 100 MB/sek - dieser Wert liegt wohl 
aber an der seltsamen Geschwindigkeitsmessung von Windows) erreicht, 
aber schon beim einlesen weiterer Videodateien der gleichen 
Speicherkarte, und beim gleichen Auslesevorgang ist die Geschwindigkeit 
recht schnell auf 25 - 30 MB/sek abgefallen, wobei die einzelnen 
Videodateien mit 4GB bis hinunter zu etwa 200MB immer noch recht groß 
sind.
Übertragungsweg war USB3 mit einen "echten" und meiner Meinung guten 
USB3 Kartenleser.

Prinzipiell gleiches Verhalten stelle ich bei jeden Kopiervorgang fest 
unabhängig von den Schnittstellen und der Speicherkomponenten, halt 
jeweils  mit anderen Geschwindigkeitswerten aber die Unterschiede 
bleiben.
Klar ist das beim Kopieren vieler kleiner Dateien der "Overhead" im 
Vergleich zu Nutzdateigröße einen deutlich größeren Anteil hat als bei 
wenigen großen Nutzdateien.
Aber so viele MB "Overhead" werden da wohl doch nicht vorhanden sein, 
und große Dateien sind auch nicht weniger Fragmentiert als kleine.
Also warum sinkt beim Kopieren von vielen kleinen Dateien die 
Datenübertragung teilweise so extrem ab ?
Als besonders anfällig haben sich bei mir USB Sticks erwiesen - manchmal 
klappt es auch mit billigen USB2 Sticks recht schnell, aber viel öfter 
wird es nah zu unerträglich langsam - 15 Minuten für 1GB an Nutzdaten 
wenn viele kleine Dateien vorliegen sind keine absolute Ausnahme - und 
das bei einen Stick der auf den gleichen System und bei gleicher 
Datenfestplatte auch schon 1GB in 2 oder 3 Minuten schafft.
Dabei ist es vom Prinzip her egal der Schreibcache aktiviert ist oder 
nicht - die teilweise extremen Geschwindigkeitsunterschiede bleiben 
bestehen, die Geschwindigkeit ist nur generell dann höher aber die 
Unterschiede bleiben.

mfg

Bitte Flotter

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Bitte Flotter schrieb:
> von einer schnellen 64 GB microSDXC Speicherkarte Klasse 10

Das sagt wenig darüber aus, wie schnell die Speicherkarte tatsächlich 
ist. Was für eine ist das genau?

von Stefan ⛄ F. (stefanus)


Bewertung
3 lesenswert
nicht lesenswert
Windows aktualisiert das Inhaltsverzeichnis für jede einzelne Datei 
einmal vor und einmal nach dem Kopieren der Daten.

Bei internen Festplatten bewirkt dies, dass der Schreib-lese Kopf in 
diesen Momenten andere Positionen anfahren muss, und das kostet 
signifikant Zeit.

Bei externen Speichern führt Windows (mit den Standard-Einstellungen) 
nach jeder Datei einen Flush aus. Dieser erzwingt das Ausschreiben des 
Puffers. Erst wenn eine Datei fertig gespeichert wurde, beginnt Windows 
mit der nächsten Datei.

Du kannst irgendwo in der Systemsteuerung einstellen, dass Windows den 
Zugriff auf externe Medien genau so puffert, wie interne Medien. Dann 
geht das Kopieren von vielen kleinen Dateien bedeutend schneller. Du 
darfst dann allerdings nie vergessen, dein Medium abzumelden 
(auswerfen), bevor du die physikalische Verbindung trennst.

Ein weiterer Knackpunkt ist, dass der Dateimanager mit langen Listen von 
Dateinamen äußerst ineffizient umgeht. Ich habe das Gefühl, das jede 
neuere Windows Version seit 95 in dieser Hinsicht langsamer wurde. In 
Windows 10 stürzt der Dateimanager manchmal sogar ab, während er die zu 
kopierenden Dateinamen sammelt und zählt. Und manchmal kopiert, 
verschiebt oder löscht er einfach nicht alle Dateien (ohne das als 
Fehler zu melden). Versuche mal einen alternativen Dateimanager oder 
kopiere Dateien per Befehl in der Eingabeaufforderung. Das läuft dort 
häufig sehr viel schneller ab.

Ganz extrem langsam ist der Dateimanager beim Auspacken und einpacken 
von ZIP Archiven mit sehr vielen kleinen Dateien.

von Jim M. (turboj)


Bewertung
0 lesenswert
nicht lesenswert
Bitte Flotter schrieb:
> deutlich über 50 MB/sek (angeblich auch zeitweise 100 MB/sek

SD Karten können laut Spec bis 104MB/sek theoretische Datentransferrate. 
Gute Karten können das auch mal erreichen.

Große Speicherkarten bestehen übrigens aus einem Stapel mit vielen (z.B. 
16) Chips - da könnte es auch besser und schlechter lesbare geben. Die 
Karten machen intern Wear-Leveling und Fehlerkorrektur - das kann 
deutlich Performance kosten. Garantiert wird bei Class 10 nur 
10MByte/sec (hauptsächlich schreibend, aber auch lesend) - da biste also 
immer noch Faktor 2-3 drüber.

Beim Kopieren kommt es auch auf die Zielplatte an. Bei der Datenmenge 
bleiben SSDs außen vor; Gute Platten haben >100 MByte/sec auch nur wenn 
niemand sonst zugreift. Was Windows aber gerne mal tut.

von Michael B. (laberkopp)


Bewertung
-1 lesenswert
nicht lesenswert
Bitte Flotter schrieb:
> Also warum sinkt beim Kopieren von vielen kleinen Dateien die
> Datenübertragung teilweise so extrem ab ?

Weil das Betriebssystem schlecht ist. Denn de facto lässt sich aus dem 
Kopiervorgang eine Menge Geschwindigkeit herausholen um so mehr Dateien 
in einem Rutsch kopiert werden.

Es behandelt jede Datei einzeln.

Damals, als noch programmiert wurde statt Scrum-Tänzchen, hat man 
zunächst die Menge der zu kopierenden Daten und deren Plattenbelegung 
ermittelt, dann die optimale Neubeschreibung ausgelotet und alle 
Sektoren egal ob aus einer grossen oder vielen kleinen Dateien in einem 
Rutsch kopiert, zuletzt ein Verzeichnis aufgebaut und ganz zum Schluss 
dieses modifizierte Verzeichnis eingehängt und auf dem anderen 
Datenträger freigegeben.

Da war die Optimerungstrategie möglichst wenig Festplattenkopfbewegung, 
und das heiss, daß nicht erst jede Datei neu angelegt wird, ein 
Verzeichniseintrag gemacht wird, dann ein Sektor belegt wird in der FAT 
bzw. inode, dann ein Sektor kopiert wird, dann der Verzeihcniseintrag 
vergräössert wird, ein weiterer Sektor in der FAT belegt wird, dann der 
nächste Sektor kopiert wird usw. wie das marode Betrübssysteme machen.

Besonders lustig wird es, wenn das Betrübssystem, während ein grosser 
Verzeichnisbaum kopiert wird, den Auftrag bekommt, noch einen grossen 
Verzeichnisbaum zu kopieren, womöglich denselben woandershin aber auf 
dieselbe Platte. An statt dann effizient glücklich zu sein und schneller 
zu werden, bremst es sich bis zur Lahmarschigkeit aus. Daran erkennt man 
die Beschränktheit heutiger Programmierhansel.

Richtig klug wird es erst, wenn die Sektoren gar nicht kopiert werden, 
sondern nur 2 Verzeichniseinträge auf dieselbe Datei zeigen und falls 
später mal jemand eine davon verändern will, erst dann von diesen 
Sektoren Kopieren anzulegen. Aber darauf werden wir noch 1 Jahrhundert 
warten müssen.

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.