Hallo,

ich bin am WE auf der Suche nach der optimalen Blocksize um via dd ein Raspbian-Image auf SDCard zu bekommen über folgenden Beitrag gestolpert:

http://blogofterje.wordpress.com/2012/01/14/optimizing-fs-on-sd-card/

Nachdem ich heute den Thread hier gelesen habe, musste ich das mal ausprobieren - zum Testen habe ich eine betagtere 2GB µSD-Karte, vorher einmal komplett mit zufälligen Daten beschrieben, verwendet ...

... für "systematisch" müsste man mal jede Mountoption in Zusammenhang mit den Optionen von mkfs.ext4 durchprobieren - ich habe jetzt aus Zeitgründen Tests ausgelassen bzw. aufgrund der Dauer abgebrochen ...

...das Ergebnis ist aber dann doch imo recht interessant ...


... die Option sync von mount hat hier wohl direkt negative Auswirkungen ...


für meine Karte:

mkfs.ext4 -O ^has_journal -E stride=2,stripe-width=512 -b 4096 /dev/mmcblk0p1


Ergebnis mount ohne Optionen für eine große Datei:

time ( mount /dev/mmcblk0p1 /media/flash && cd flash && sync; rm testing; sync; ( dd if=/dev/zero of=testing bs=16k count=10000; sync); cd .. && umount flash )

10000+0 Datensätze ein
10000+0 Datensätze aus
163840000 Bytes (164 MB) kopiert, 0,271188 s, 604 MB/s

real    0m21.280s
user    0m0.016s
sys     0m0.376s



Ergebnis mount -o sync,noatime

time ( mount -o sync,noatime /dev/mmcblk0p1 /media/flash && cd flash && sync; rm testing; sync; ( dd if=/dev/zero of=testing bs=16k count=10000; sync); cd .. && umount flash )

10000+0 Datensätze ein
10000+0 Datensätze aus
163840000 Bytes (164 MB) kopiert, 93,7794 s, 1,7 MB/s

real    1m34.320s
user    0m0.016s
sys     0m3.520s



... etwas mehr dazu (auch zu vielen kleinen Dateien) in dieser PDF, Seite 1-4 (5-7 sind meine 16GB SDCard - damit bin ich noch nicht durch, aber der Effekt scheint da nicht besonders groß zu sein) ...

http://www.file-upload.net/download-6781170/sdcard-bench.pdf.html


Alex


Am 05.11.2012 12:42, schrieb Heiko Schlittermann:
Hallo,

vielen Dank für die vielen Antworten.
Ich habe jetzt mal systematisch gearbeitet.

Erstmal habe ich die Blocksize für das Schreiben auf den Stick
ermittelt. Dafür habe ich „dd oflag=direct bs=<blocksize>“ verwendet und
immer 512MB geschrieben. Ich hoffe, daß ich mit diesem „direct“. (Was
mir gerade auffällt: ich habe das nicht mit Root-Rechten gemacht. Darf
„luser“ auch Direct I/O machen?)

http://www.schlittermann.de/misc/stick-blocksize.png

64k *scheint* eine gute Blockgröße zu sein.

[dd oflag=direct if=/dev/zero of=/dev/sdb bs=64k count=8192]  => 3.8 MB/s
[dd oflag=direct if=/dev/zero of=/dev/sdb bs=256k count=2048] => 3.7 MB/s
[dd oflag=direct if=/dev/zero of=/dev/sdb bs=32k count=16384] => 3.5 MB/s
[dd oflag=direct if=/dev/zero of=/dev/sdb bs=128k count=4096] => 3.5 MB/s
[dd oflag=direct if=/dev/zero of=/dev/sdb bs=16k count=32768] => 2.8 MB/s
[dd oflag=direct if=/dev/zero of=/dev/sdb bs=8k count=65536]  => 2.1 MB/s
[dd oflag=direct if=/dev/zero of=/dev/sdb bs=4k count=131072] => 1.3 MB/s


Für die folgenden Versuche hatte ich trotzdem mit 128k gearbeitet,
weil ... ich hatte mich verguckt.

Nun die Geschwindigkeiten im Einzelnen, einmal über der Zeit, und einmal
über die Menge der geschriebenen Daten.

http://www.schlittermann.de/misc/speed-size.png
http://www.schlittermann.de/misc/speed-time.png

Gearbeitet wurde immer mit „dd bs=128k“, manchmal direkt auf den Stick, manchmal
in ein Filesystem, welches auf dem Stick war. Wenn es in ein Filesystem
ging, dann war es ohne irgendwelche Besonderheiten gemountet.

Die 128k Blockgröße hatte ich vorher als die ermittelt, bei der ein „dd“
auf den Stick am schnellsten war.

Ca. 3MB/s scheint dann immer die „Dauerleistung“ zu sein beim 8GB Stick.
Hätte ich mir besser vorgestellt.

Bei einem baugleichen Stick mit 16 GB (statt 8GB) erreiche ich grob das
doppelte. Das deutet auf interne Parallelisierung. Aber da kenne ich
mich nicht wirklich aus.

Warum das rsync so langsam wird, muß ich noch ermitteln.



_______________________________________________
Lug-dd maillist  -  [email protected]
https://ssl.schlittermann.de/mailman/listinfo/lug-dd



_______________________________________________
Lug-dd maillist  -  [email protected]
https://ssl.schlittermann.de/mailman/listinfo/lug-dd

Antwort per Email an