Sometimes really simple questions are hard to answer. One day I got the question from a coworker: “How do I know if some installed RAM is ECC or not”.
The easiest way is to use dmidecode command that dumps in Linux all the system characteristics. But because I had no idea how to see if a RAM chip is ECC or not I made a comparison.
STEP 1: List the memory specs on a server populated with ECC memory
# dmidecode -t memory # dmidecode 3.1 Getting SMBIOS data from sysfs. SMBIOS 2.7 present. Handle 0x1000, DMI type 16, 23 bytes Physical Memory Array Location: System Board Or Motherboard Use: System Memory Error Correction Type: Single-bit ECC Maximum Capacity: 16 GB Error Information Handle: Not Provided Number Of Devices: 2 Handle 0x1100, DMI type 17, 40 bytes Memory Device Array Handle: 0x1000 Error Information Handle: Not Provided Total Width: 72 bits Data Width: 64 bits Size: 8192 MB Form Factor: DIMM Set: None Locator: PROC 1 DIMM 1 Bank Locator: Not Specified Type: DDR3 Type Detail: Synchronous Unbuffered (Unregistered) Speed: 1333 MT/s Manufacturer: UNKNOWN Serial Number: Not Specified Asset Tag: Not Specified Part Number: NOT AVAILABLE Rank: 2 Configured Clock Speed: 1333 MT/s Minimum Voltage: 1.5 V Maximum Voltage: 1.5 V Configured Voltage: 1.5 V Handle 0x1101, DMI type 17, 40 bytes Memory Device Array Handle: 0x1000 Error Information Handle: Not Provided Total Width: 72 bits Data Width: 64 bits Size: 8192 MB Form Factor: DIMM Set: 1 Locator: PROC 1 DIMM 2 Bank Locator: Not Specified Type: DDR3 Type Detail: Synchronous Unbuffered (Unregistered) Speed: 1333 MT/s Manufacturer: UNKNOWN Serial Number: Not Specified Asset Tag: Not Specified Part Number: NOT AVAILABLE Rank: 2 Configured Clock Speed: 1333 MT/s Minimum Voltage: 1.5 V Maximum Voltage: 1.5 V Configured Voltage: 1.5 V
STEP 2: List the memory specs on a machine populated with NON ECC memory
]# dmidecode -t memory # dmidecode 3.1 Getting SMBIOS data from sysfs. SMBIOS 2.5 present. Handle 0x0011, DMI type 16, 15 bytes Physical Memory Array Location: System Board Or Motherboard Use: System Memory Error Correction Type: None Maximum Capacity: 4 GB Error Information Handle: Not Provided Number Of Devices: 2 Handle 0x0012, DMI type 17, 27 bytes Memory Device Array Handle: 0x0011 Error Information Handle: No Error Total Width: 64 bits Data Width: 64 bits Size: 2048 MB Form Factor: SODIMM Set: 1 Locator: M1 Bank Locator: Bank 0 Type: DDR2 Type Detail: Synchronous Speed: 800 MT/s Manufacturer: AD00000000000000 Serial Number: 6140466F Asset Tag: 0918 Part Number: HYMP125S64CP8-S6 Handle 0x0013, DMI type 17, 27 bytes Memory Device Array Handle: 0x0011 Error Information Handle: No Error Total Width: 64 bits Data Width: 64 bits Size: 4096 MB Form Factor: SODIMM Set: 1 Locator: M2 Bank Locator: Bank 1 Type: DDR2 Type Detail: Synchronous Speed: 800 MT/s Manufacturer: 0000000000000000 Serial Number: 6010B403 Asset Tag: 1110 Part Number: HMP351S6AFR8C-S6
We can see in the first dump that the motherboard supports ECC:
Physical Memory Array Location: System Board Or Motherboard Use: System Memory Error Correction Type: Single-bit ECC Maximum Capacity: 16 GB Error Information Handle: Not Provided Number Of Devices: 2
and in the second ECC is not supported. This is what I expected as the first machine is a HP Server and the second is a Dell laptop
Physical Memory Array Location: System Board Or Motherboard Use: System Memory Error Correction Type: None Maximum Capacity: 4 GB Error Information Handle: Not Provided Number Of Devices: 2
But looking at the individual DIMM entries from the dumps (2 DIMMs on HP server and 2 DIMMs on the laptop) there is no explicit ECC or Error Correction Type Entry field.
The secret entry that makes the difference is this:
On HP server DIMM1:
Handle 0x1100, DMI type 17, 40 bytes Memory Device Array Handle: 0x1000 Error Information Handle: Not Provided Total Width: 72 bits Data Width: 64 bits Size: 8192 MB
On the Dell Laptop DIMM1:
Handle 0x0012, DMI type 17, 27 bytes Memory Device Array Handle: 0x0011 Error Information Handle: No Error Total Width: 64 bits Data Width: 64 bits Size: 2048 MB Form Factor: SODIMM
As you can see on the ECC DIMM the reported Total Width is 72 bits and on the non ECC the reported Total Width is 64 bits. So this is our cue. In case of ECC memory besides the normal 64 bits (Data Width) we have some extra 8 bits for Error Correction.
Contribute to this site maintenance !
This is a self hosted site, on own hardware and Internet connection. The old, down to earth way 🙂. If you think that you found something useful here please contribute. Choose the form below (default 1 EUR) or donate using Bitcoin (default 0.0001 BTC) using the QR code. Thank you !
€1.00