If your server crashes regularly it could be a buggy kernel, a driver, power supply or any other hardware part. Memory (RAM) is one of the critical server parts. Bad memory can cause various problems such as random Linux server restart or program segfaults.
Generally, I recommend using memtester command. It is an effective userspace tester for stress-testing the memory subsystem. It is very effective at finding intermittent and non deterministic faults under Linux.
Recently Rahul shah email me another interesting method for testing memory. His idea is based upon md5 checksum and dd command.
First find out memory site using free command.
$ free
Output:
total used free shared buffers cached Mem: 768304 555616 212688 0 22012 270996 -/+ buffers/cache: 262608 505696 Swap: 979956 0 979956
In above example my server has 768304K memory. Now use dd command as follows:
$ dd if=/dev/urandom bs=768304 of=/tmp/memtest count=1050
$ md5sum /tmp/memtest; md5sum /tmp/memtest; md5sum /tmp/memtest
According to him if the checksums do not match, you have faulty memory guaranteed. Read dd command man page to understand all options. dd will create /tmp/memtest file. It will cache data in memory by filling up all memory during read operation. Using md5sum command you are reading same data from memory (as it was cached).
Look like a good hack to me. However I still recommend using memtester userland program. Another option is to use memtest86 program ISO. Download ISO, burn the same on a CD, reboot your system with it test it (it may take more time). From project home page:
Memtest86 is thorough, stand alone memory test for x86 architecture computers. BIOS based memory tests are a quick, cursory check and often miss many of the failures that are detected by Memtest86.
You should follow me on twitter here or grab rss feed to keep track of new changes.
Featured Articles:
- 30 Handy Bash Shell Aliases For Linux / Unix / Mac OS X
- Top 30 Nmap Command Examples For Sys/Network Admins
- 25 PHP Security Best Practices For Sys Admins
- 20 Linux System Monitoring Tools Every SysAdmin Should Know
- 20 Linux Server Hardening Security Tips
- Linux: 20 Iptables Examples For New SysAdmins
- Top 20 OpenSSH Server Best Security Practices
- Top 20 Nginx WebServer Best Security Practices
- 20 Examples: Make Sure Unix / Linux Configuration Files Are Free From Syntax Errors
- 15 Greatest Open Source Terminal Applications Of 2012

- My 10 UNIX Command Line Mistakes
- Top 10 Open Source Web-Based Project Management Software
- Top 5 Email Client For Linux, Mac OS X, and Windows Users
- The Novice Guide To Buying A Linux Laptop












{ 4 comments… read them below or add one }
md5sum does *not* keep its entire target in memory. The md5 algorithm, as I understand it, uses the hash value of the previous block of data to compute the hash value of the next block. So only the previous hash value and the current block of data need to be in memory at a given time. So the above test is useless. It will *not* exercise all of your machine’s memory.
You can observe md5sum’s memory usage by looking at the output of ps or top.
‘Free’ command is not in Solaris. Nor does ‘Vmstat’ on Linux give equivalent info for ‘swap memory’ as ‘vmstat’ gives on Solaris. Do you know of any command common to both systems that would give me info on swap memory in fairly similar format?
Darren,
md5check actually uses shutil.copyfileobj to copy the file (which reads and writes 16KB chunks at a time), and then seeks back to the start of the source file, reads the whole thing into memory in one go, and computes its MD5. So it is not useless.
And you use it in single user mode.
cheers
There’s another way to test the memory using a shell script:
http://people.redhat.com/~dledford/memtest.shtml
Alex M. – Tech Support – Unihost Brasil