Talk:RPi SD cards

Jump to: navigation, search

This is a consolidation of the SD card information in one place; the SD card is an essential part of the Raspberry Pi and a card cannot be used elsewhere unless it is reformatted. Hopefully, this will provide a greater focus on the SD card.

The working / non-working verification data has been rebuilt from the history records of pages RPi_VerifiedPeripherals#SD_cards and the previous RaspberryPiBoardVerifiedPeripherals. The verification table is based on an initial work from User:83a/SD_Cards. Those pages had become extraordinarily long. I believe that I have checked the accuracy of the table, but have removed links to vendors, as there are often several vendors for each card. SimonSmall (talk) 00:24, 2 January 2013 (UTC)

Added the data from RPi_Performance#SD_card. I have not reformatted the table. SimonSmall (talk) 23:39, 3 January 2013 (UTC)

Benchmarks are unreliable

The current read and write speeds are unreliable, the method for determining them are not accurate. The commands that have been used for most benchmarks is:

dd if=/dev/zero of=~/test.tmp bs=500K count=1024
dd if=~/test.tmp of=/dev/null bs=500K count=1024

There is a fundamental flaw in this, its results are always higher than the actual read/write speeds because the filesystem cache is involved. This makes write performance pretty unpredictable because buffers are not flushed. I tried to improve these benchmarks by adding timing information and sync, but these are still imperfect.

What about testing read performance using:

dd if=/dev/mmcblk0 of=/dev/null bs=4M count=128

Write performance is still tricky as the file system must be unmounted first when performing direct I/O (to avoid filesystem corruption). The best we can do is relying on fsync:

dd if=/dev/zero of=~/test.tmp bs=4M count=128

In my measurements on a brand-new SanDisk Ultra class 10 SDHC 8GB, block sizes of 1M and 4M performed similar (13.1 MB/s and 13.2 MB/s respectively), this possibly results from the intermediate file system layer. Note: numbers with a k and M suffix are base-2, therefore when 1M equals 1024K.

Question: should we move all old data to a new page and ask editors to re-do experiments and include new experiments on this page?


However the benchmark is done, I think that for consistency, there needs to be a section showing how to calculate the results. dd shows the output size in MB, which dd(1) says is 1000*1000, e.g.:

sync; time dd if=/dev/zero of=~/test.tmp bs=500K count=1024; time sync
1024+0 records in
1024+0 records out
524288000 bytes (524 MB) copied, 97.0954 s, 5.4 MB/s

Note this is despite the fact that the command line specifies K, which is 1024, according to dd(1).

Do people assume MB/s means base-2 or base-10? Has everyone allowed for the sync time? Ghewson (talk) 16:03, 12 September 2013 (UTC)

You cannot post new threads to this discussion page because it has been protected from new threads, or you do not currently have permission to edit.


Thread titleRepliesLast modified
USB-based booting?015:06, 27 September 2019

USB-based booting?

Although the SD card is certainly the most common boot device for an RPi, it is not the only option. For example, it is possible (on some models) to boot from a USB-based storage device, such as a flash drive, hard disk, or SSD. The initial paragraphs in the "SD cards" section do not take this into account and thus might mislead the unwary reader.

Because I'm not sure how this issue should be handled, I didn't edit the page. Meanwhile, I've made a start on a page about USB-based booting: RPi USB booting.

12:05, 27 September 2019