Wie überschreite ich die USB 2.0-Geschwindigkeit eines USB 2.0-Ports?

437
Yann

Ich schreibe Dateien auf ein USB 2.0-Laufwerk von einer RAM-Disk, auf der sich eine zufällig aufgefüllte 256-MB-Datei befindet (erstellt aus / dev / urandom, um das Komprimieren der Datei zu stark zu stoppen). Wenn ich mir die Geschwindigkeiten der Datei-Schreibvorgänge ddansehe, von denen ausgegeben wird, liegen diese durchschnittlich bei 75 MB / s. Dies ist besonders interessant, da die theoretische Höchstgeschwindigkeit von USB 2.0 bei 60 MB / s liegt.

Der Befehl, den ich ausführen möchte, lautet:

dd if=/var/mnt/temp_data/urandom of=/mnt/usb/$FILE_NAME bs=10M count=1 

Beachten Sie, dass ich dies mehrmals ausführen und das Laufwerk zu 95% voll fülle. Der Grund für die 10-MB-Dateien besteht darin, sicherzustellen, dass das Laufwerk fast zu 95% voll ist, und ich würde mich nicht mit größeren Dateien füllen, da ich nicht weiß, in welche Größe ein Memory-Stick eingesteckt wird. und mehrere Dateien zu haben, ist Teil des Tests.

Wenn Motive die Schreibgeschwindigkeit beeinflussen, teste ich die Schreibgeschwindigkeit der USB-Anschlüsse eines Systems, um festzustellen, ob sie den USB-Standards entsprechen. Daher ist dies relativ belastend und die Füllung aus / dev / urandom (indirekt).

Warum passiert das und wie kann ich es beheben? Ich gehe davon aus, dass die Messungen, dddie ausgegeben werden, ungenau sind, andernfalls werde ich anfangen, USB-Treiber-Schreiber meine Geheimnisse zu verkaufen.

(Entschuldigung, wenn dies auf unix.se sein sollte, ich war mir nicht sicher)

3
Vor allem mit bs = 10M count = 1 erhalten Sie keine gute Annäherung an die Schreibgeschwindigkeit, da Sie nur 10 MB schreiben. Daten werden möglicherweise irgendwo zwischengespeichert. Ich würde empfehlen, mindestens 1 GB Daten zu schreiben. Versuchen Sie bs = 1M count = 1000 und sehen Sie, ob das Ergebnis anders ist Art Gertner vor 9 Jahren 0
@smc Ich führe das nicht nur einmal aus, sondern fülle das Laufwerk mit 10 MB-Dateien, und die ~ 75 MB werden über den gesamten Test gemittelt Yann vor 9 Jahren 0
Der von Ihnen eingegebene Befehl füllt das Laufwerk nicht mit 10 MB-Dateien, sondern schreibt nur eine. Die von dd während der Ausführung dieses Befehls gemeldete Leistung kann durch das Schreib-Caching beeinträchtigt werden. Probieren Sie die oben vorgeschlagenen Befehlsparameter aus oder ändern Sie sie so, dass dd das gesamte Laufwerk ausfüllt Art Gertner vor 9 Jahren 0
@smc Wenn Sie es oft ausführen. Es ist in einer for-Schleife. Yann vor 9 Jahren 0
Ignorierst du, was ich gerade gesagt habe? Sie können sich nicht auf die in diesem Befehl angegebene Geschwindigkeit verlassen, wenn Sie ihn mehrmals ausführen. Dafür gibt es 'count = x' Art Gertner vor 9 Jahren 0
@smc Ich führe nach jedem `dd` `sync` aus, wenn das beseitigt würde, worauf ich mich einlasse. (Ich mache es jetzt sowieso, es dauert nur eine Weile) Yann vor 9 Jahren 0
Lassen Sie uns [diese Diskussion im Chat fortsetzen] (http://chat.stackexchange.com/rooms/19353/discussion-between-smc-and-yann). Art Gertner vor 9 Jahren 0

1 Antwort auf die Frage

2
Art Gertner

Ok, also nach den Kommentaren und unserer ausführlichen Diskussion im Chat hier die Antwort auf die Frage:

Wenn Sie die Schreibgeschwindigkeit auf dem System testen, egal ob auf USB oder HDD geschrieben, in FilesSystem oder direkt im RAW-Modus auf die Festplatte geschrieben wird, müssen Sie immer genug Daten schreiben, um den Cache zu füllen . Wenn nicht genügend Daten geschrieben werden, messen Sie die Schreibgeschwindigkeit in den Cache (der sich im RAM befindet).

OP hat versucht, 10 MB-Dateien in eine Schleife zu schreiben, die den syncBefehl zwischen Schreibsitzungen ausführt .

Was tatsächlich passiert ist, war, dass der ddBefehl, mit dem die Daten geschrieben wurden, sehr schnell Daten in den Cache schreiben würde. Die gemeldete Geschwindigkeit lag bei etwa 75 MB / s. Nach diesem syncBefehl würde es einige Sekunden dauern, aber dies wurde von OP nicht berücksichtigt.

Nachdem der Test geändert wurde, um größere Dateien zu schreiben, stellte sich heraus, dass die tatsächliche Schreibgeschwindigkeit bei 2,2 MB / s liegt, was durchaus mit den USB 2.0-Standards vereinbar ist