Wie kann ich die Schreibgeschwindigkeit von SD-Karten (mit / dev / disk *) auf einem MacBook Pro erhöhen?


17

Ich habe einige Linux-Distributionen von meinem MacBook auf eine SD-Karte installiert, obwohl die Übertragung einiger hundert MB (mithilfe von ddund /dev/disk1) über eine Stunde dauert .

dd ausgang

Wenn Sie sich die obige Ausgabe ansehen, arbeitet sie mit ungefähr 0,31 MB / s! Bei der SD-Karte handelt es sich um eine Klasse 10, und bei meinem MacBook Pro handelt es sich um Intel Core 2 Duo mit 2,66 GHz, 4 GB 1067 MHz DDR3 und OS X Lion 10.7.4. Hier ist der Hardware-Bericht für den Kartenleser:

Eingebauter SD-Kartenleser:

Vendor ID: 0x05ac
Product ID: 0x8403
Revision: 1.00 Seriennummer: 9833

SDHC-Karte:

Kapazität: 7,97 GB (7.969.177.600 Byte)
Wechseldatenträger: Ja BSD-Name: disk1
Partitionszuordnungstyp: MBR (Master Boot Record)
SMART-Status: Nicht unterstützt
Volumes:

PI:
Kapazität: 7,96 GB (7.964.983.296 Byte)
Dateisystem: MS-DOS
BSD-Name: disk1s1
Inhalt: DOS_FAT_32

Irgendwelche Ideen, warum der Transfer zu /dev/disk1so langsam ist und wie ich ihn beschleunigen könnte?


Klingt für mich nach einem Hardwareproblem. Ich habe 2011 gehört, dass MBPs einen schlechten SD-Reader haben, aber es könnte auch ein Problem mit früheren geben. Versuchen Sie es mit einer anderen SD-Karte, aber möglicherweise liegt ein Problem mit dem Kartenleser vor, der in den meisten MBPs leider an der Hauptplatine angeschlossen ist.
Robmathers

Ich habe den Laptop 2009 gekauft, Fedora kopiert jetzt seit 2 Stunden und ich habe aufgegeben. Neue Kartenleserzeit finde ich.
StuR

Interessanterweise ist die sequentielle Datenrate viel höher, wenn Sie Finder oder Disk-Utility verwenden, da die Ursache in der Pufferung von / dev / disk * zu liegen scheint, wie in der Antwort von @pci
iolsmit

Antworten:


38

Bin gerade auf dasselbe Problem gestoßen und es scheint, dass /dev/disk*es langsam ist, weil es gepuffert ist. Wenn Sie das entsprechende Festplattengerät (z. B. /dev/rdisk1s1) verwenden, sollten Sie die erwartete Geschwindigkeit erreichen. Dies ist anscheinend eine BSD-Sache.

Beispiel:

% sudo dd if=pi.bin of=/dev/disk1 bs=1m count=4095
^C408+0 records in
407+0 records out
426770432 bytes transferred in 1393.452305 secs (306268 bytes/sec)

% sudo dd if=pi.bin of=/dev/rdisk1 bs=1m count=4095
4095+0 records in
4095+0 records out
4293918720 bytes transferred in 378.669512 secs (11339489 bytes/sec)

Ref:


1
Dies ist die beste Antwort, die ich auf diese Frage gefunden habe, da ich die Ergebnisse bestätigen konnte. Ging von ~ 1.35 MB / s bis 20 MB / s :)
nessence

1
Das ist natürlich eine Schande (für Apple / BSD) - obwohl die Verwendung von dd die bestmögliche Leistung bietet, da Sie einen langen Schreib- (oder Lesezugriff) haben. Auf Dateiebene und mit wahlfreiem Zugriff variiert Ihre Leistung stark, abhängig von der SD-Karte. Und: Ausgezeichnetes Finden von @pci!
iolsmit

2
Es ist eine lange Geschichte, aber Sie haben mir gerade Lachs im Wert von 90 USD gespart, der schlecht werden würde, wenn ich meinen Raucher nicht rechtzeitig reparieren könnte.
Deweydb

3
Irgendwie lächerlich, wie man eine Datei mit mehr als 20 Mbit / s über tausende Kilometer herunterladen kann, und auf den letzten Metern ist es kabellos. Die Übertragung von Daten über eine feste Verbindung über einige Zentimeter ist jedoch sehr viel langsamer.
Jonathan.

Vielen Dank. Ich habe versucht, 7 GB Daten über ~ 10 Stunden zu kopieren, als ich feststellte, dass dies nicht akzeptabel ist, und fand diese Antwort - sehr hilfreich.
Barak,

3

Es kann durchaus sein, dass die SD-Karte so langsam ist.

Schauen Sie sich diesen Benchmark an (Random Write, 4 KB (QD = 1) [MB / s]) und Sie werden feststellen, dass die meisten SD-Karten eine miese Schreibleistung (unter 100 kB / s) für kleine Dateien haben - und a Eine typische Linux-Installation besteht aus vielen kleinen Dateien, die auf die Festplatte geschrieben wurden.

Der interne Kartenleser sollte in der Lage sein, mindestens 20 MB / s zu lesen / schreiben - es ist sehr unwahrscheinlich, dass ein anderer Kartenleser Ihre Erfahrung mit dieser SD-Karte verbessert.

Sobald alle Dateien geschrieben sind, dh das System installiert ist, können Sie Linux möglicherweise tatsächlich mit einer akzeptablen Geschwindigkeit von der SD-Karte ausführen, da es sich hauptsächlich um Lesezugriff handelt.


1
Für die
Abwähler

Es wäre ein gutes Experiment zu sein , obwohl zu testen , um die Karte in einem anderen Leser bekannt , gut zu sein, und eine Karte testen , gut zu sein im Verdacht Leser bekannt. Beachten Sie auch, dass der gesamte "Papierkram" zum Erstellen neuer Dateien (im Gegensatz zum Schreiben ihres Inhalts) in den Dateisystemdatenstrukturen für viele kleine Dateien sehr groß ist.
Thorbjørn Ravn Andersen

Obwohl SD-Karten nicht sehr schnell sind, ist die Geschwindigkeit (328198 Bytes / Sek. Und später 288881 Bytes / Sek.) Für heutige SD-Karten nicht unvorstellbar (fühlt sich eher wie Diskettenlaufwerke an). Da dies "dd" ist, bedeutet es eine einzelne Datei - nicht mehrere kleine Dateien.
Barak,

1

Wenn die Karte mit der Synchronisierungsoption geladen ist, bedeutet dies, dass bei jedem Schließen der Datei der Schreibvorgang auf die Festplatte geschrieben wird und Ihre Leistung bei kleinen Dateien im Vergleich zu großen Dateien schrecklich ist. Wenn Sie die Synchronisierung aus den Bereitstellungsoptionen entfernen, gibt es keine Garantie dafür, dass das Schreiben einer Datei dazu führt, dass sie auf die Festplatte verschoben wird. Sie müssen die Synchronisierung manuell über die Befehlszeile aufrufen oder die Bereitstellung des Geräts aufheben, bevor Sie es entfernen oder das Gerät ausschalten. Ohne Synchronisierung sollten Sie jedoch feststellen, dass sich die Schreibleistung kleiner Dateien drastisch verbessert.


1
Laut man mountist Async bereits die Standardeinstellung.
Nohillside

1

Nein, dies ist eindeutig ein Problem mit Mac OS. Ich erhalte eine erheblich schnellere Leistung, wenn ich denselben Vorgang unter Linux auf einer virtuellen Maschine auf demselben Macintosh durchführe. Dh die VM ist ca. 5x schneller als das native Betriebssystem.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.