47
20
I need to replace the memory in my system and I'm not quite sure how to determine if the memory is ECC or Non-ECC. How do I determine this?
47
20
I need to replace the memory in my system and I'm not quite sure how to determine if the memory is ECC or Non-ECC. How do I determine this?
59
For Windows 7 you can run the following command in command prompt:
wmic MEMORYCHIP get DataWidth,TotalWidth
If the TotalWidth value is larger than the DataWidth value you have ECC memory.
Example output:
//ECC Memory
DataWidth TotalWidth
64 72
//Non-ECC Memory
DataWidth TotalWidth
64 64
A better way to determine is via the following command:
wmic memphysical get memoryerrorcorrection
This will return a code based on the type of memory installed:
Value Meaning
0 (0x0) Reserved
1 (0x1) Other
2 (0x2) Unknown
3 (0x3) None
4 (0x4) Parity
5 (0x5) Single-bit ECC
6 (0x6) Multi-bit ECC
7 (0x7) CRC
I get memoryphysical - Alias not found. on windows 7 Enterprise SP 1 – None – 2015-03-25T02:35:38.290
3@kristianp The 2nd command had two typos in it, should've been: wmic memphysical get memoryerrorcorrection
(worked for me in 8.1) – Dan is Fiddling by Firelight – 2015-03-25T05:33:03.470
@DanNeely My system (which I know has 8 strips of 4GB ECC) gives 2 values from that command: 6 and 3 on a second line of output. The other command shows 8 lines with 64 and 72 (as expected) and 1 extra line showing 2 and 2. I have never seen that before. Any idea what that means ? For the record: It is a HP XW8600 workstation (Intel 5400/6311 server motherboard.) – Tonny – 2015-03-25T19:47:27.767
@Tonny which command are you using? – James Mertz – 2015-03-25T20:04:50.853
What does code 3 (none) mean? I have no memory installed? – David says Reinstate Monica – 2015-03-25T20:51:46.903
@DavidGrinberg it means your memory doesn't have ECC. Outside of servers and some high end work stations very few computers use it. – Dan is Fiddling by Firelight – 2015-03-25T21:15:14.367
@KronoS wmic memphysical get memoryerrorcorrection gives 6 and 3. (Windows 7 x64) then wmic memorychip get datawidth, totalwidth shows the 9 lines of output. 8x "64 72" and once "2 2". – Tonny – 2015-03-26T10:48:53.203
@KronoS Wmic does not appear to be reliable: I have Windows 7 on an Asus P6T-SE M/B with an i7 920 and 6GB of non-ECC RAM. Wmic claims multi-bit ECC (widths of 64 and 72). [Quick re-boot] Windows 8.1 makes the same erroneous claim on the same hardware. – Andrew Morton – 2015-03-26T20:39:33.863
@AndrewMorton are you sure that your memory modules are Non-ECC? – James Mertz – 2015-03-26T22:00:49.190
@AndrewMorton out of curiosity what does the second command produce? – James Mertz – 2015-03-26T22:05:02.013
@KronoS Yes, I'm sure they are non-ECC (the M/B doesn't support it either). The second command (i.e. wmic memphysical get memoryerrorcorrection
) gives a value of 6. HWInfo64 correctly reports it as non-ECC RAM (it's three sticks of OCZ3G1333LV2G, and I tested it at the default 1066 MHz as well as 1333 MHz). – Andrew Morton – 2015-03-26T22:19:26.150
@AndrewMorton interesting. I'm not sure why you get those values. :/ – James Mertz – 2015-03-26T22:43:11.297
@KronoS I will regard it as a curiosity, much like trying to figure out an HDD's actual serial number from the data returned by WMI in Windows 7 ;) – Andrew Morton – 2015-03-26T22:50:55.497
I can also confirm that these commands are not a reliable indicator. I get the same values as KronoS for Corsair Vengeance DDR3 (CMZ8GX3M2A1600C9B). As with his experience, HWInfo64 correctly reports it as non-ECC. – nextgentech – 2016-10-24T18:44:24.663
41
For FreeBSD (and probably most unix like platforms):
dmidecode -t 17
Example output:
# dmidecode 2.12 SMBIOS 2.5 present. Handle 0x1100, DMI type 17, 28 bytes Memory Device Array Handle: 0x1000 Error Information Handle: Not Provided Total Width: 72 bits Data Width: 64 bits Size: 2048 MB Form Factor: DIMM Set: 1 Locator: DIMM1 Bank Locator: Not Specified Type: DDR2 Type Detail: Synchronous Speed: 667 MHz Manufacturer: AD00000000000000 Serial Number: 00002062 Asset Tag: 010839 Part Number: HYMP125P72CP8-Y5 Rank: 2
The Total Width: 72 bits
is the part you are looking for.
More information in detecting this in Linux can be found here on our sister site unix.stackexchange.com.
More information on how error correcting code works can be found in this simple post where I showed how you could use extra bits to detect and correct errors. This is why we have DIMMs which are 64 bits wide (8 bytes of data wide) or 72 bits wide (64 data plus extra bits to store redundant information).
3dmidecode is standard on Linux, too. I think error correction will happen by default with ECC RAM installed, but if your kernel is monitoring the memory controller to track the memory error rate, that would be another confirmation that you have ECC RAM. (check the kernel log.) – Peter Cordes – 2015-03-25T08:49:01.547
How do you check if the memory controller is tracking that? mcelog? – Hennes – 2015-03-25T10:52:14.667
I don't have access to any ECC-equipped servers anymore, but I'd look for a kernel log message about it. Maybe there isn't one. There's a link to something about it on http://buttersideup.com/ (best domain name ever for a project, IMO).
– Peter Cordes – 2015-03-25T11:14:59.210Works on Fedora as well. – l0b0 – 2015-03-25T12:44:35.810
@Hennes See http://unix.stackexchange.com/a/139526/2465 for example log output with ECC and non-ECC RAM on Linux.
– a CVn – 2015-03-25T13:16:31.937Oddly, checking one of my known-ECC boxes (and I'm sure it works, as I've gotten single-bit notices before) data width is 72, total is 64—clearly, they're labeled backwards. – derobert – 2015-03-25T20:39:27.020
1I think you should explain in your answer what to conclude about ECC if Total Width
is 72 bits
or 64 bits
. – A.L – 2015-03-26T15:02:04.463
1"The Total Width: 72 bits is the part you are looking for." And what do I do after I've found it? – endolith – 2016-10-15T21:53:34.833
19
If you look at the physical memory module, ECC will usually have 9 (sometimes more) chips. Non-ECC will have only 8 (or rarely, 8x2=16).
(Image courtesy of Puget Systems)
9 chips for the 10 bits per byte on the ECC module? – Hennes – 2015-03-25T20:50:30.040
5
@Hennes: You can have 10, but 9 is far more common. The memory is typically split into chunks of 72-bits (8 bits read at once from each of 9 data-chips), with 64-bits of data + 8-bits of error-correction in each chunk. See here for more technical info.
– BlueRaja - Danny Pflughoeft – 2015-03-25T21:38:41.0431As a more general rule, if the number of memory chips are divisible by 3 then the module is ECC. – James Mertz – 2015-03-26T15:00:41.187
When copying any content (including images) you must provide attribution. – Mokubai – 2015-04-02T06:51:13.993
@Mokubai Since when? – endolith – 2016-10-15T21:54:15.680
1
@endolith since the sites inception, and as per the help centre: How to reference material written by others.
– Mokubai – 2016-10-15T22:02:31.6308
On a Mac you can look in the System Information application to determine ECC status of the Computer and each RAM module.
/Applications/Utilities/System Information
Select Memory on the right pane, under the hardware section.
Then with the "Memory Slots" listing selected. The window below should show an ECC status.
See picture below:
Also as an FYI each RAM slot will have a Status field if there is a problem detected in a RAM module the status will be a value other than "OK"
Does "Disabled" mean the ram is non ECC ? it's not quite clear from your answer – mounaim – 2016-11-14T16:27:12.247
That's correct a status of "Enabled" would means that he RAM is ECC. – MrDaniel – 2016-11-24T19:28:18.017
6
inxi can do that:
$ sudo inxi -m -xxx
Memory: Array-1 capacity: 32 GB devices: 4 EC: None
Device-1: ChannelA-DIMM0 size: 4 GB speed: 1333 MHz type: DDR3 (Synchronous)
bus width: 64 bits manufacturer: Kingston part: KHX1600C9D3/4GX serial: B7ED5A53
...
Here non ECC-RAM modules are used EC: None
Is the 4 EC: None
the value I should be looking for? – James Mertz – 2015-03-25T19:29:38.810
Just the EC: None
. The 4
is part of the previous field (devices: 4
). – duskwuff -inactive- – 2015-03-25T21:25:13.783
0
You might also try a free app like Belarc. Gives a bunch more info about your system also...
I have used the software a few times. I have no affiliation with this software, but I do know that it is used by some universities.
I can not provided a screen shot of the results because it contains confidential data, but the web site should provide some examples. Its pretty straight forward (and fast), download the file, run it and the results are presented.
Please give more detail as to how this work. For reference see this meta post
– James Mertz – 2015-03-26T15:05:04.647
2
Is there anyting in the handbook of your PC, Usually it is specified there. Otherwise download and install Speccy. This program tells you exactly which hardware you have in your PC, then you can check it.
– Wernfried Domscheit – 2015-03-24T21:23:14.667Look up the motherboard manual, or the system manual for your system, and see what is required for your hardware? Use the memory suggestion tools on the various RAM vendors web sites? – Zoredache – 2015-03-24T21:24:43.090
Related: How to tell whether RAM ECC is working? on [unix.se].
– a CVn – 2015-03-25T13:18:18.447As a general answer to the question - if you're doing home computing (i.e. not building enterprise servers) you are (and should be) using non-ECC. Also helpful: http://forum.crucial.com/t5/Crucial-memory-for-PC-systems/ECC-vs-non-ECC-What-do-I-Have-and-Can-I-Mix/ta-p/150486
– WannabeCoder – 2015-03-25T13:22:02.8802@WannabeCoder "you should be using non-ECC"[citation needed][insufficient explanation] – a CVn – 2015-03-25T14:08:08.313
1@MichaelKjörling Data integrity at that level is not critical in home-use applications. Parent applications (or the OS) can handle that easily, and ECC memory comes with a small performance overhead. Additionally, virtually all consumer CPUs do not support ECC memory (thus the "should"). – WannabeCoder – 2015-03-25T15:36:59.407
@WannabeCoder All AMD CPUs, some desktop Intel CPUs, and all server Intel CPUs, support ECC RAM. The performance impact of ECC RAM is negligible at most. Come back after you have experienced a critical failure due to RAM breakdown, or for that matter after a number of impossible-to-explain software crashes. (It's the same thing as the saying that there are people who have suffered a hard disk crash, and the people who aren't backing up their data; the sets are largely complementary.) – a CVn – 2015-03-25T15:52:56.867
@MichaelKjörling Neat fact about AMDs I didn't know. I like your comparison about using hard drive backups - I would very much apply that to this situation and remind you that the vast, vast majority of home users do not consider (serious) data backups necessary for their use-case. ECC memory is a step beyond even that; so I have a hard time seeing it as a requisite or even a valid recommendation for the average home user. The debate gets very technical on its effective worth. Given this user does not understand ECC at all - I would suspect that debate is out of scope; thus: "should" – WannabeCoder – 2015-03-25T17:32:07.820
@WannabeCoder Let us continue this discussion in chat.
– a CVn – 2015-03-25T17:58:14.687Years ago, Logic Parity (or "Fake Parity") RAM was available that allowed the use of non-parity RAM in a motherboard that requires ECC. I don't think fake partiy is common now in legitimate RAM, but off-brand or counterfeit RAM may still use fake parity to cut costs. If your ram did have this fake-parity, your operating system wouldn't know, it would think it's real parity.
– Johnny – 2015-03-25T21:01:08.887ECC is used as a marketing tool: it is technically very cheap to provide, but it is something which some people want to have at any cost (kind of like brakes on a car), while the vast majority of users is willing to live without, it is used to segregate the market and impose higher margins on those people willing to pay for it. – Stefan – 2015-03-26T01:13:15.833