Programster's Blog

Tutorials focusing on Linux, programming, and open-source

How to Check For ECC RAM Functionality

ECC

Error-correcting code memory (ECC memory) is memory often found in servers to prevent issues caused by radiation from the sun occasionally flipping bits in your memory. This is not too much of an issue if you are just a gamer or someone using using the Microsoft office suite to do work. However, it may be an issue for a server for business-critical logic. I like to have ECC in my home-servers and for my ZFS NAS storage devices.

After having made the investment into a build that should have ECC compatibility, it would be nice to check it works, which is what we will show you how to do in this post.

Enable In BIOS

The first thing you need to do is check if ECC is enabled in the BIOS. Many consumer grade motherboards will not have an option for ECC or toggling it on or off, but if it does, you need to make sure it is set to ON. Having ECC enabled in the BIOS does not ensure that ECC is working, only that the system will try to make use of it (e.g. you need to have an ECC compatible CPU and memory).

Memtest

The free version of Memtest (which we will use in this tutorial) will tell us if ECC is apparently supported. You can buy the pro version which apparently can test that it is working.

  1. Download Memtest86 which at the time of writing this is version 7.3, and burn it to a CD or use unetbootin on a USB key.

  2. Choose to boot from it in your motherboards boot menu:


3. Choose Config from the first screen.


4. Use your mouse or the arrow keys to select View detailed RAM


5. Use your arrow keys to highlight one of your RAM sticks and press enter.


6. You will now see detailed information about your memory. You should see if it is ECC capable or not.

Ubuntu Live CD - dmidecode

Dmidecode is a utility built into Ubuntu that reports information on various aspects of the hardware in a system. The nice thing is that it is even built into the LiveCD version of Ubuntu which does not require you to actually install Ubuntu onto your system. You can simply run Ubuntu directly from a CD/DVD which leaves your actual operating system completely untouched. The downside to Dmidecode is that it only tells you if the RAM supports ECC, not if ECC is working and functional. For example, if you use a CPU that does not support ECC, but RAM that does, DmiDecode will report that that RAM is ECC capable, not that ECC is actually functional.

  1. Download the latest Ubuntu Desktop ISO.
  2. Boot to the CD/DVD and select Try Ubuntu and wait for Ubuntu to load.
  3. Open a terminal and login as root with sudo su (set a password if you have to).
  4. Enter the command dmidecode -t memory to list all of the information about the system's memory.
  5. If dmidecode detects that the RAM supports ECC, there will be an entry near the top for Error Correction Type: and the type of Error Correction that is detected. If ECC support is not detected, then this entry will not be listed or will say "None".

If Error Correction Type: is not listed, this does not mean that ECC is not working, just that dmidecode does not detect ECC.

Conclusion

I've shown you how you can check if your system has recognized the ECC RAM. Unfortunately, I have not found a solution that actually tests it working. You would think that for something so critical that has been around for long enough, this would be a lot easier to test. I'd be especially keen to test it from inside the Ubuntu Server OS, rather than memtest, just to be sure its working from within the booted OS, and I haven't missed some configuration option on the Linux kernel.

References