Active Topics

 


Reply
Thread Tools
Posts: 6 | Thanked: 0 times | Joined on Jan 2007
#1
Hi,

I am about to purchase SD card(s) for my N800 and I was wondering about what is the maximum speed the device is capable of.

Sandisk Ultra II supports at least 10MB/s read and 9MB/s write where as Sandisk Extreme III seems to promise at least 20MB/s read/write.

In normal use the 10MB/s is most likely more than enough but I was thinking that when used as swap I would like the card to be as fast as possible but then again of the device cannot effectively use the 20MB/s it is waste of money.

So my question: have people benchmarked their SD cards in N800?

- J
 
thoughtfix's Avatar
Posts: 832 | Thanked: 75 times | Joined on Dec 2005 @ Phoenix, AZ
#2
Riff-Raff: No, but I can try. I don't have any Ultra cards handy, but will use a shell script when I get home.
 
thoughtfix's Avatar
Posts: 832 | Thanked: 75 times | Joined on Dec 2005 @ Phoenix, AZ
#3
Benchmarks posted.
Others: Please help?

http://thoughtfix.blogspot.com/2007/...enchmarks.html
 
Posts: 6 | Thanked: 0 times | Joined on Jan 2007
#4
Thanks for testing.

It doesn't look too good. At best only about 3MB/s write speed.

Couple points:
You can use the "time" utility for getting accurate duration measurements. Use: "time cp X Y"

When using 64M file most (or at least some) of it are probably still in cache when copy finishes. I wonder if there is any good way to bypass caching for testing purposes.

Creating file in internal memory
time dd if=/dev/zero of=64 bs=1k count=64k
1. try: real 0m 53.52s
2. try: real 0m 53.48s

time dd if=/dev/zero of=64 bs=4k count=16k
1. try: real 0m 14.98s
2. try: real 0m 15.02s

time dd if=/dev/zero of=64 bs=8k count=8k
1. try: real 0m 14.83s
2. try: real 0m 14.77s

time dd if=/dev/zero of=64 bs=16k count=4k
1. try: real 0m 15.58s
2. try: real 0m 15.72s

time dd if=/dev/zero of=64 bs=32k count=2k
1. try: real 0m 14.94s
2. try: real 0m 14.80s

It seems quite clear from this that SD's block size is 4k.

Testing with Transcend 150x card in external slot:

time dd if=/dev/zero of=64 bs=4k count=16k
1. try: real 0m 9.86s
2. try: real 0m 11.06s

time dd if=/dev/zero of=64 bs=8k count=8k
1. try: real 0m 9.88s
2. try: real 0m 10.13s

So write speed is about 6.4MB/s.

With bigger block sizes the speed about same withing error margin.

Lets try with bigger file size to try to see if cache effects this simple test:

time dd if=/dev/zero of=256 bs=64k count=4k
1. try: real 0m 42.93s
2. try: real 0m 42.58s

About same speed.

How about read speed:

On Transcend 150x

time cp 256 /dev/null
1st try: 0m 35.13s
2nd try: 0m 34.05s

Not much faster: 7.3MB/s

Bottom line using very simple DD-write and copy test:

Transcend 150x
Write speed: 6.4MB/s
Read speed: 7.3MB/s

- J
 
Posts: 6 | Thanked: 0 times | Joined on Jan 2007
#5
Found this: http://www.hjreggel.net/cardspeed/

Apparently the best PC readers get about 22MB/s read and 12MB/s write speed from and to Transcend SD 150x 4GB. So if we assume 2GB is no different the n800 seems to be the bottleneck.

In any case it would be very interesting to see benchmarks with the Sandisk Extreme III.

- J
 
Posts: 209 | Thanked: 31 times | Joined on Oct 2006
#6
Originally Posted by Riff-Raff View Post
Thanks for testing.
When using 64M file most (or at least some) of it are probably still in cache when copy finishes. I wonder if there is any good way to bypass caching for testing purposes.
You could use the following command before you start your time measurement and after copy!
Code:
sync
sync will write the cache to your mmc (in this case).
So you could try something like this (untested! probably you will need bash):
Code:
sync; time ( dd if=/dev/zero of=/media/mmc1/64m bs=1024 count=65536; sync )
or you use this command with the build in shell (also untested):
Code:
sync; time dd if=/dev/zero of=/media/mmc1/64m bs=1024 count=65536; time sync
Then you will have to sum up the two time results!

Last edited by N770-Freak; 2007-01-18 at 09:10.
 
Posts: 6 | Thanked: 0 times | Joined on Jan 2007
#7
Again replying to myself:

Got results from Sandisk Extreme III:

time dd if=/dev/zero of=256 bs=64k count=4k
real 0m 34.28s

time cp 256 /dev/null
real 0m 33.48s

Bottom line:
Write 7.5MB/s
Read 7.6MB/s

- J
 
Posts: 2,152 | Thanked: 1,490 times | Joined on Jan 2006 @ Czech Republic
#8
or try
Code:
date ; ...... ; sync ; date
As far as I know from examining the kernel (I may be wrong) it looks like SD cards currently run at 24Mhz maximum - http://maemo.org/pipermail/maemo-dev...ry/007214.html
Cards marked 150x definitely need high speed mode (50Mhz, normal is 25Mhz). There is no support in kernel for this now but it may be aded in future (probably not in official kernel but custom one).

Also please time read speed by first removing an reinserting the card (just to be sure, to flush buffer cache, n880 actually has some spare ram for caching, n770 not) and then

time dd if=/dev/mmcblk0p1 of=/dev/null bs=4096 count=10000

this reads 40MB, or bs=8192 reads 80MB
 
Posts: 90 | Thanked: 32 times | Joined on Sep 2006 @ Bucuresti, Romania
#9
It would be a good idea to not use files with content all 0'es. Linux and a lot of UNIX filesystem implementations "caches" content of multiple 0 bytes (at least to a "sector" length) and does not truly copy the 0 bytes from one device to another - but just mark their existence.

Could you please use either /dev/random or generate the file on another machine from /dev/random and use that file ?
 

The Following User Says Thank You to ddalex For This Useful Post:
Posts: 71 | Thanked: 12 times | Joined on Jan 2007 @ Dubai, UAE
#10
Hi, could you check CPU utilization while reading/writing in full speed?
 
Reply


 
Forum Jump


All times are GMT. The time now is 12:06.