What are the best possible ways to benchmark RAM (no-ECC) under linux / arm?

I want to test integrity and global performances of no-ECC memory chips on a custom board

Are there some tools that run under linux so I can monitor system and global temperature in the same time ?

Are there some no-ECC specific tests to do in general ?

EDIT 1:

I already know how to monitor temperature (I use a special platform feature /sys/devices/platform/......../temp1_input).

For now :

  • wazoox : it works but I've to code my own tests
  • Jason Huntley :
    • ramspeed : does not work on arm
    • stream benchmark : it works and is very fast, so I'll look if it's accurate and complete
    • memtest : I'll try later, since it does not run directly from linux
    • stress for fedora : I'll try later too, it's too problematic for me to install fedora now

I found this distribution : http://www.stresslinux.org/sl/

I'll continue to check tools that run directly under linux without too big dependencies, after I'll maybe give a try to solutions like stresslinux, memtest, stress for fedora.

Thanks for you answers, I'll continue to investigate


Here's the way I sometimes test ram: first mount two tmpfs (by default tmpfs is half the ram):

# mount -t tmpfs /mnt/test1 /mnt/test1
# mount -t tmpfs /mnt/test2 /mnt/test2

Check free memory and free space:

# free
             total       used       free     shared    buffers     cached
Mem:        252076     234760      17316          0      75856      62328
-/+ buffers/cache:      96576     155500
Swap:      1048820        332    1048488

# df -h -t tmpfs
Sys. de fich.         Tail. Occ. Disp. %Occ. Monté sur
tmpfs                 124M     0  124M   0% /lib/init/rw
udev                   10M  104K  9,9M   2% /dev
tmpfs                 124M     0  124M   0% /dev/shm
/mnt/test1            124M     0  124M   0% /mnt/test1
/mnt/test2            124M     0  124M   0% /mnt/test2

Now fill the tmpfs with dd:

# dd if=/dev/zero of=/mnt/test1/test bs=1M 
dd: écriture de `/mnt/test1/test': Aucun espace disponible sur le périphérique
123+0 enregistrements lus
122+0 enregistrements écrits
128802816 octets (129 MB) copiés, 1,81943 seconde, 70,8 MB/s

# dd if=/dev/zero of=/mnt/test2/test bs=1M 
dd: écriture de `/mnt/test2/test': Aucun espace disponible sur le périphérique
123+0 enregistrements lus
122+0 enregistrements écrits
128802816 octets (129 MB) copiés, 5,78563 seconde, 22,3 MB/s

You can check that your memory is actually quite full:

# free
             total       used       free     shared    buffers     cached
Mem:        252076     248824       3252          0       1156     226380
-/+ buffers/cache:      21288     230788
Swap:      1048820      50020     998800

Now you may run various tests, for instance check that both temp files are identical, directly or running md5sum, sha1sum, etc:

# time cmp /mnt/test1/test /mnt/test2/test 

real    0m4.328s
user    0m0.041s
sys     0m1.117s

About temperature monitoring, I know only of lm-sensors. I don't know if it manages your particular hardware, but you probably could give it a try anyway.


What are the best possible ways to benchmark RAM (no-ECC) under linux / arm?

RamSpeed is the only multiplatform memory benchmark tool I'm aware of. You might be able to compile it for arm, if supported:

https://github.com/cruvolo/ramspeed-smp

If it's not supported, you might be able to benchmark using stream:

https://web.archive.org/web/20211104122453/http://www.cs.virginia.edu/stream/

want to test integrity and global performances of no-ECC memory chips on a custom board

Here, I've used memtest on many occasions for integrity checking and it works great:

http://www.memtest.org/

*Note, I've only read this supports Arm. However, I haven't tested on an Arm.

Are there some tools that run under linux so I can monitor system and global temperature in the same time ?

If the distribution you're using supports yum, you can easily install lm_sensors:

yum install lm_sensors

You can also download and compile from: here http://www.lm-sensors.org/

However, I'm not certain it will provide temperature data regarding your memory. Your motherboard also has to have sensors for reading mem temperature.

Are there some no-ECC specific tests to do in general ?

memtest does include tests for both ECC and non-ECC

I just remembered one last thing you could try. Get fedora for arm architecture or the rpm. You can run the stress package which will stress test your cpu and memory:

stress-1.0.4-4.fc13.armv5tel.rpm

If busybox has an rpm installer packaged with it, you might be able to deploy one of the arm rpms from the fedora distribution.