Please note that User Registration has been temporarily disabled due to a recent increase in automated registrations. If anyone needs an account, please request one here: RequestAccount. Thanks for your patience!--Wmat (talk)
Please email User:Wmat if you experience any issues with the Request Account form.

Difference between revisions of "Talk:RPi SD cards"

From eLinux.org
Jump to: navigation, search
(Benchmarks are unreliable: new section)
(Calculation: new section)
 
Line 22: Line 22:
  
 
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?
 
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?
 +
 +
== Calculation ==
 +
 +
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.:
 +
<pre>
 +
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
 +
</pre>
 +
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? [[User:Ghewson|Ghewson]] ([[User talk:Ghewson|talk]]) 16:03, 12 September 2013 (UTC)

Latest revision as of 16:03, 12 September 2013

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?

Calculation

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)