Should I buy ECC memory? (2015)
danluu.com
danluu.com
It saved a few bucks in a time period where Google's hardware costs were rising rapidly, but the ripple-on effects on system design cost much more than that in lost engineer time. Data integrity is one engineering constraint that should be pushed as low down in the stack as is reasonably possible, because as you get higher up the stack, the potential causes of corrupted data multiple exponentially.
1: http://www.cs.toronto.edu/~bianca/papers/sigmetrics09.pdf
It's time we start trading off the generous speed and capacity gains for a some error correction.
Do you get more/less errors when it's day time (due to the Sun)? Does the season affect it (axial tilt means you're more/less "in view" of the galactic core)?
So while the chance of hit is lower (per GB), if it hits its effect will be higher (more bits flipped).
That is more memory but less mass which is not physical density. Also I am not sure if gamma rays need to just hit the physical bits to mess things up. If is the case where other things can be hit then it seems surface area might have high correlation but probably not.
I don't know what the answer is but I would imagine that the error rate would be the same percentage assuming orientation is kept the same.
Of course if you are going at extreme macro sense (think Asimov last question computers [1]) then density absolutely probably plays role as gravity starts to cause enormous amount of collisions. This actually happens in stars and is why photons take a long time to escape from the star as well as the edge of black holes where collisions are happening extremely frequently.
Beta and gamma are the ones that can do damage (not sure about beta), and gamma can pass through the entire chip, so it can hit multiple transistors, depends on the angle and the way they are located.
Not sure if I should start getting nervous or just your RAM sucks ;) I get ECC errors only if I overclock too much, and I run the RAM overclocked all time. It's actually one of the reasons I wanted ECC.
How they get you is Intel will sell you a xeon which is the exact same die as an i5 in a different package for more money.
https://www.servethehome.com/intel-atom-c2000-series-bug-qui...
http://www.asrock.com/mb/AMD/X370%20Killer%20SLIac/#Specific...
(Generally, I don't think ECC actually does matter that much for us casual/home users, but I like to reward the people who actually do make it easy to "do the right thing". Same deal as only purchasing AMD graphics cards since 2005-ish(?).)
Can you work out the math? I don't follow it. 3%×100K×8÷365=66 per day by my reasoning…
How do you make that leap?
However the consumer market has long decided to settle for ECC nowhere and cheap everywhere.
ECC hardware comes at premium option that can easily be +100%. You need support in the memory, the motherboard and the CPU.
Given the price difference, personal computers will have to live with the memory errors. People will not pay double for their computers. Manufacturers will not sacrifice their margin while they can segment the market and make a ton of money off ECC.
There are also reports of BIOS support in some boards which don't have ECC advertised. And you can try to enable it in the OS even without BIOS support, though some level of hardware support is still necessary. As Linux documentation puts it: "may cause unknown side effects" :)
Or do you mean that if you want exactly 8GB then it's hard to find a pair of 4GB DDR4 ECC modules? Well, just get 2x8GB if you are a performance nut.
I am guessing it's because, if RAM errors increase linearly with the number of computers, then RAM errors will be a greater and greater proportion of total errors. This assumes other kinds of errors don't scale linearly. Someone looking through logs is looking for errors, they'd like to find fixable logic errors, not inevitable RAM errors.
Your NAS should better have it, though.
Details of this would be very interesting, but obviously I understand if you cannot provide such details due to NDAs, etc.
I mean, I can imagine a few mitigations (pervasive checksumming, etc), but ultimately there's very little you can actually do reliably if your memory is lying to you[1]. I can imagine that probabilistic programming would be an option, but it's hardly "mainstream" nor particularly performant :)
I'm also somewhat dismayed at the price premium that Intel are charging for basic ECC support. This is a case where AMD really is a no-brainer for commodity servers unless you're looking for single-CPU performance.
[1] Incidentally also true of humans.
http://www.evanjones.ca/tcp-and-ethernet-checksums-fail.html
I just had this discussion (about why TCP's checksum was a huge mistake) a couple days ago. That link is going to be useful next time it comes up.
Personally, I'm a bit of a hoarder of data, but honestly, if X-proportion of that data were to be lost... it probably wouldn't actually affect my life substantially even though I feel like it would be devastating.
but crc is good to check against single bit errors.
1. Implement everything in terms of retry-able jobs; ensure that jobs fail when they hit checksum errors.
2. if you've got a bytecode-executing VM, extend it to compare its modules to stored checksums, just before it returns from them; and to throw an exception instead of returning if it finds a problem. (This is a lot like Microsoft's stack-integrity protection, but for notionally "read-only" sections rather than read-write sections.)
3. Treat all such checksum failures as a reason to immediately halt the hardware and schedule it for RAM replacement. Ensure that your job-system handles crashed nodes by rescheduling their jobs to other nodes. If possible, also undo the completion of any recently-completed jobs that ran on that node.
4. Run regular "memtest monkey" jobs on all nodes that attempt to trigger checksum failures. To get this to work well, either:
4a. ensure that jobs die often enough, and are scheduled onto nodes in random-enough orders, that no job ever "pins" a section of physical memory indefinitely;
4b. or, alternately, write your own kernel memory-page allocation strategy, to map physical memory pages at random instead of linearly. (Your TLBs will be very full!)
Mind you, steps 3 and 4 only matter to catch persistent bit-errors (i.e. failing RAM); one-time cosmic-ray errors can only really be caught by steps 1 and 2, and even then, only if they happen to affect memory that ends up checksummed.
If you can't trust your RAM, you have no hard truth to rely on. It's only probabilistic programing or living with the errors.
(Although, rereading the GP, he seems to be talking about corrupted binaries. Yes, you can catch corrupted binaries, but only after they corrupted some data.)
Maybe it was read fine from the binary the first time, but the second time...
At some point you just have to hope.
Probabilistic programming is a theoretical possibility, but not really practical.
Basically a tin-foil (or plumb-foil) hat over my computer?
"In fact I'm looking at the RAID-Z code right now. This scenario would be literally impossible because the code keeps everything read from the disk in memory in separate buffers - i.e. reconstructed data and bad data do not occupy or reuse the same memory space, and are concurrently allocated. The parity data is itself checksummed, as ZFS assumes it might be reading bad parity by default."
His full comment can be found here:
The main point of e.g. ZFS or Btrfs checksumming is that a) at least it isn't getting worse, and b) I can tell if it's getting worse.
[1] ... but if the bits are not generated by the machine that actually saving to disk, how do you know they weren't corrupted along the way? The number of people who religiously check PGP signatures/SHA256sums or whatever is miniscule.
• If you transfer things around using BitTorrent, it'll ensure you always end up with a file that hashes correctly to the sum it originally had when the .torrent file was constructed.
• Many archive formats (zip, rar, and 7z, at least) contain checksums, and archival utilities validate those checksums during extraction, refusing to extract broken files. "Self-extracting archive" executables that use these formats inherit this property.
• Some common disk-image formats (dmg, wim) embed a checksum that checks the whole disk-image during mount, and will refuse to mount a bad one. (I believe you can then try to "repair" the disk image with your OS's disk-repair utility, if you have no other copies.)
• Web pages increasingly use Sub-Resource Integrity attributes on things like .css and .js files, protecting them (though not the page itself) from errors.
• ISO files don't embed checks, but all the common package formats (Windows .cab and .msi; Linux .deb and .rpm; macOS .pkg) on installer ISOs embed their own checksums and often signatures.
• git repos are 'protected' insofar as you won't be able to sync mis-hashed objects from a remote, so they won't spread.
Really, looking over all that, it's only 1. plain binary executables, and 2. "media files" (images, audio, video)—and only when retrieved over a "dumb" protocol, rather than a pre-baked-manifest protocol like BitTorrent or zsync—that are "risky" and in need of explicit checksum comparison.
Web pages (and anything else) transmitted over HTTPS are protected from corruption in transit by TLS's hashing (which is vastly stronger than the checksums at lower levels of the network stack), though that doesn't help if the server has faulty memory or storage.
PNG has built-in checksums, though other image formats don't (JPEG). Not sure about video.
I didn't bring this one (or any other transport-level checksums) up, because we were talking about whether you can trust something "across the whole process"—from its origin developer's disk (where it might get an initial explicit checksum generated), to origin memory, across the network to a server's memory, to that server's disk, over the network again to a CDN reverse-proxy's memory, maybe its disk, then the network again to you, then your memory, your disk, and finally your memory again as you verify it. Oh, and a bunch of routers and switches in between, of course.
Static checksums that are baked into file formats or manifest files protect the file across that whole chain. Transport-level checksums only ensure that the one part they're involved in happened correctly.
EDIT: Should say, as a point of interest: Even though .zip's were protected back in the Good Old Days, that didn't really matter because we all got corrupted (expanded from .zip) .mp3's because of those fucking RTL3xxsomething cards that would just transmit things perfectly and then corrupt the checksum (or whichever way 'round). Ugh. One of the few times I've actually hated engineers.
(Don't get me wrong. I really do want more of these checks to be pervasive. We start with our local file systems.)
(This may be a myth: It's not something you should actually do that often because actually reading the media may dregrade it.)
btrfs scrub start /mnt/volume_name
(That's where that came from, draw your own conlusions :).)
1. ZFS doesn't come with any disk repair tools and the ones that exist are not nearly as capable as for other filesystems (the ZFS motto is that it is too costly to repair filesystems, just recover from tape instead (here we can sense the intended audience of ZFS)). If the wrong bit get's flipped your entire pool might be gone (you can of course spend months of your spare time to debug it yourself if you want to). This is not the case (to the same extent) for FAT, NTFS or EXT.
2. The more you use memory the more likely you are about to get hit. I'd argue that ZFS is a quite resource heavy filesystem and is thus more likely to actually attract bit flips. This is similar as to when using an encrypted filesystem on an overclocked CPU. There is nothing inherently more risky with encrypting your filesystem with an overclocked CPU - but overclocking your CPU increases the risk for miscalculations. And enabling encryption increases the CPU usage when accessing the filesystem by several orders of magnitude. So, in practice you quickly notice how filesystem data on encrypted drives get corrupted but not on regular drives on an ever so slightly too overclocked machine.
So, if you care about your filesystem, then yes - saying that ZFS needs ECC is quite sensible. (if you care about your data you should have backups regardless)
Regardless of ZFS, this is why we architect our storage to cope with such potential borkage (which has, incidentially, only happened to me _ONCE_ in ~8 years of zfs in prod, had nothing to do with silent md corruption in ram and had everything to do with a nasty hw sas hba bug) -- If losing a single storage node/pool causes you problems then you're "doing it wrong" (sorry) and it makes no difference if you're using XFS, ZFS, BTRFS or whatever else...
So... I'm not sure about the ECC stuff, to me ECC really matters not at all for the simple reason that any significant deployment is using ECC anyway: even deploying a cheapo 10k pair of jbods and a tiny 1U head to run NFS or something, you'll be unlikely to even have the option of non ECC from whoever you're buying the kit from (dell? hp? bla) right?
Yes, it might work without it. It might work better somehow with it.. What does it matter when even the cheap gear comes with it anyway?
I've built a reasonable slew of ZFS backed storage (well, a 10 PB prod or so anyway, nothing compared to what some of the folks who comment here have done) and besides some hardware compat issues if you're building storage this is currently your best option to back your objstore/dfs.
ZFS as the storage backend for your DC/Cloud? Good pick. ZFS as the 'local' FS's in your VMs? I wouldn't bother, unless you need some features (it works pretty well with docker, as it goes, but I prefer to run apps on plain ext backed by zvols instead of 'zfs-on-zfs')....
If your backend is a zvol you get the integrity advantages and cheap snapshots regardless of your VM filesystem, so it isn't really a fair comparison with an "EXT all the way" scenario.
It's not that you need ECC for ZFS, but when you're at a point where you're willing to throw money at a storage system where ZFS makes sense, the extra cost of ECC is minuscule. The most expensive hardware requirement of ZFS is that you need disks of the same size anyway, which means you're not just throwing a random amount of disks together, and if you want to expand, you need to add another full zpool, or replace disks one by one.
On my home NAS, the difference was about 120 EUR for 32GB (80eur/dimm vs 50eur/dimm), on a grand total of over 2500 EUR. One of the reasons for choosing ZFS was storage reliability, and then skimping out on ECC is a imho a bit silly.
However the cost of ECC is not negligible because you need your CPU and motherboard to support it.
The total budget for my NAS was 1000 EUR in 2013, 500 for the 5 3TB disks, 350 for the motherboard+CPU+8GB ECC RAM, and 150 for the case, PSU, system SSD, and accessories. In reality I salvaged 2 3TB disks, lowering the cost to 800. By using non-ECC I could have used a cheaper motherboard and CPU, in addition to cheaper RAM. In fact I would probably have used hardware from an older desktop PC. It would have been a 15-20% saving, or 45% if I take reuse into account. Not negligible.
My previous NAS, running linux soft-RAID, entirely made of salvaged parts except for some of the disks had a few corruption problems. One of them caused by a defective disk. ZFS would have caught it, so even on cheap systems, ZFS has its use.
I also had defective DRAM, rebuilds not going smoothly, etc... That system caused me too many scares, so I decided that the next system would be cheap but not too cheap as to endanger my sanity. I also got a proper backup solution.
http://dinaburg.org/bitsquatting.html
Loved the variety as well. Sometimes though requests came to me the Host header was correct!
Random bit flips aren't cool, and they happen regularly. Most computers that have ECC RAM can report whether errors happen. I see them at least once a year or so. For instance, here are 2 ECC-correctable memory errors that occurred just last month.
Cosmic rays? Fukushima phantom? Who knows. You'll never know why they happen (unless it's like a bad RAM module and they happen a lot), but if you don't rock ECC you will never know they happened at all. You'll be left guessing when, years later, some encrypted file can no longer decrypt, and all the backups show the same corruption...
[1]: https://www.dropbox.com/s/zndvy3nkv1jipri/2017-03-20%20FUCK%...
[2]: https://www.dropbox.com/s/6yeoedc7ajzq4u9/2017-03-20%20FUCK%...
It's also worth noting that not all ECC (SECDED) is created equal: ChipKill™ and similar might not survive physical damage because of likely shorts of the data bus but a single malfunctioning chip producing/experiencing higher hard error rate is possible from which to recover.
Also, it'd be really cool if some shop a-la BackBlaze blogged about large-scale monitoring for soft and hard RAM errors across chip/module modules (+ motherboards & CPUs). Without collecting and revealing years data from real use, conversation devolves into opinion and conjecture.
Finally, not all use-cases can benefit from ECC (ie Angry Birds) however there are some obvious/nonobvious ones that can (ie router non-ECC DNS bitsquatting or processing bank transactions).
Then, of course, there is the problem of network latency and bandwidth costs vs just keeping it all on one datacenter.
https://lobste.rs/s/jea4ms/paranoid_programming_techniques_f...
http://www.hpl.hp.com/techreports/tandem/TR-86.2.pdf
http://h71000.www7.hp.com/openvms/whitepapers/high_avail.htm...
http://www.enterprisefeatures.com/why-are-iseries-system-i-a...
Now I'm not including all the anonymous, zero-knowledge stuff since the market won't buy that. All kinds of costs come with it that they don't want. Besides, most consumers and enterprises love products with lots of surveillance built in. ;)
Generally the answer to this is any context where you legitimately do NOT care about your data at all, but you still care about costs. This predominately devolves in to consumption only gaming systems.
In all other cases everyone would be better served (in the long run) by buying ECC RAM.
I guess you could argue that a random bit flip could somehow make the HTTP server vulnerable and able to compromise the network however that risk is impossibly small. If we take IBMs estimation that a bit flip occurs at an approximate rate of (3.7 × 10-9) bytes/month and then divide it by the number of bytes in the system you can see that the odds of randomly corrupting a byte in memory that triggers a vulnerability is too small.
Regarding faulty components, that is one part of ECC's job, but the other part is correcting the regular bit flips that happen with nominally operating DRAM.
Flagging faulty components is more useful than you propose. There are not that many places where this corruption can occur, so being able to rule out RAM is very useful. The example you used, CPU caches, is actually already covered by ECC in most CPUs, including reasonably recent x86/amd64.
The tradeoff would be more worthy of thought if ECC was much more expensive
That's only true if the database is read only. Otherwise, you will still insert corrupt data into it.
The cost of the transaction is, by definition, the price paid. `if x != x: raise_error()` only works if x is NaN.
This is a ridiculous conversation because data corruption could happen in the CPU cache, the QPI, or a number of micro-components in between the ram and cpu that could cause errors that ECC Ram can't fix. ECC ram is not a catch all for poor programming and poor validation checking period.
It's a must read, even if only to get you thinking about some of these things.
General office workstation: maybe.
I don't have the budget for 20 redundant copies. I do have the budget for slightly more expensive RAM. Especially on my ZFS storage arrays.
ECC memory is like Insurance. You hope you never need it. One real downside that I have found, is finding out _when_ that memory correction has saved your ass. RAID arrays can alert you when a disk is dead. SMART mostly tells you when disks are failing. I haven't found a reliable tool to notify me when I am getting ECC errors/corrections.
That you don't understand it is likely from the perspective of an individual, possibly a private user. For those applications you can't beat the cloud. For business use every business needs to weigh their own needs.
Even then though, many business think they need to have their own server when they really don't and vice-versa.
Somewhat unrelated, your comment gave me the idea to look up the MX records of the last few law firms I've interacted with: mostly cloud, as expected. The biggest and fanciest likely probably has their own servers. Their terminating MX is some middling cheapo hosting company. Disturbing.
The chances of your average law office having an IT staff with capabilities comparable to Google are nil. At the same time the legacy of Snowden has caused a lot of companies to wonder if they're wise to put anything off-premises. And then there's dropbox, weshare and a million other 'handy' services that could easily hoover up and analyze everything that passes through (or whoever hacked them).
In practice, nobody encrypts their email. And even if they do, the cloud still gets all the metadata.
Running your own trades the above issues for other issues, but depending on your priorities and fears it might be worth doing.
I work in the defence industry. All attachments must be encrypted. Also, all customer data must be stored in the same country.
Hard to beat free. Couple this with the fact that I learn something by setting it up makes this a win for me.
Lastly, NAS Drives have a much lower error rate than Desktop drives due to the usage of higher quality heads that increase error resistance and lifetime.
Hopefully more consumer boards support/certify it since it is already there on the memory controller.
Somewhat not true with Intel, as some of the lower end Xeons now support it.
http://www.hardwarecanucks.com/forum/hardware-canucks-review...
"Kinda sorta works but the manufacturer won't stand behind it" is bunch of bullshit. If your data is worth using ECC in the first place - it's worth using a platform that has fully-implemented support, that has passed validation, that you know is going to work properly when you need it.
Until that happens - this is an application where Ryzen is simply not appropriate.
All of the modern i3s and Pentiums support ECC, but you do need the server chipset instead of the cheap consumer stuff. Good news though - those "expensive server boards" are roughly the same price as say, an AM4 motherboard with an X370 chipset.
Heck, you can buy a basic off-lease ThinkServer TS140 for only about $300. You'll only have about 4 GB of RAM but it's a shell to start building out (which is cheaper than having an OEM assemble it for you anyway).
Ryzen motherboard support is what is agreeably a "mess", not the processor itself, but at least it's functional on ASRock and select Gigabyte boards. As for "a fool to rely on it", not sure what you mean by that. The error correction itself is done by the hardware. Other than calling the initialization routines and providing logging/halt, the BIOS/UEFI isn't responsible for anything afaik.
I'm well aware that this isn't the full grade of ECC support offered by higher-end Xeons and chipset combos, but it's better than nothing and it's affordable.
Also, no offense, but I'm not going to rely on hardwarecanucks as an authority on this subject.
All of the modern i3s and Pentiums support ECC, but you do need the server chipset instead of the cheap consumer stuff. Good news though - those "expensive server boards" are roughly the same price as say, an AM4 motherboard with an X370 chipset.
The goal isn't ECC alone, at least not for me, the goal is an 8-core system with good single-threaded performance and ECC at a reasonable price. As far as I know, only Ryzen offers that.
So for me, I'm looking at the possibility of getting a single system that can give me decent gaming performance, good development performance, ECC support, and more, all at a price that leaves me with money for other components.
Fine then. AMD says it's unvalidated and unsupported, is that good enough for you?
> I'm well aware that this isn't the full grade of ECC support offered by higher-end Xeons and chipset combos, but it's better than nothing and it's affordable.
So would you be OK with running Xeon engineering samples then? After all - they certainly pass the same "best effort" test. Personally since these are server ES hardware - I'd tend to trust it more than consumer hardware like Ryzen, especially given their comparative age/maturity.
I just picked up a 10-core Haswell Xeon engineering sample for $140 last week. 40% more multi-threaded performance than a Ryzen 1700. The X99 mobo I picked up from Microcenter for $60 doesn't have ECC support but a bunch of them do.
Or if you want something that's official and you know works, there are surplus Sandy Bridge Xeons very cheap nowadays. A decent bit more multithreaded performance than a Ryzen 1700 - but you'll be giving up single-threaded performance. http://natex.us/intel-s2600cp2j-motherboard-dual-e5-2670-sr0...
Or really - a full retail E5-2630 v3 is under $500 now on eBay. That's not really that bad if you just have to have everything in one box.
> So for me, I'm looking at the possibility of getting a single system that can give me decent gaming performance, good development performance, ECC support, and more, all at a price that leaves me with money for other components.
What it comes down to: if you want everything in one box then be prepared to shell out. Everyone has this market segmented out, including AMD (after all they won't stand behind Ryzen's ECC either). If you feel you need ECC, that's really not a valid solution.
If a Xeon doesn't cut it for you - sounds like you might be in the market for two boxes here. A server/workstation with ECC and good multi-thread performance, and a gaming machine that you can overclock and get the best single-thread performance out of.
(Also - in general, overclocking also seems kind of counterproductive to the aims to running ECC RAM - although I guess I haven't looked into that.)
No, that's not what AMD said, they said it isn't validated by motherboard partners. The functionality is there, it's up to their partners to use it.
So would you be OK with running Xeon engineering samples then? After all - they certainly pass the same "best effort" test. Personally since these are server ES hardware - I'd tend to trust it more than consumer hardware like Ryzen, especially given their comparative age/maturity.
That's not even a remotely accurate comparison.
What it comes down to: if you want everything in one box then be prepared to shell out. Everyone has this market segmented out, including AMD (after all they won't stand behind Ryzen's ECC either). If you feel you need ECC, that's really not a valid solution.
Sorry, but so far all of your proposed "solutions" are summed up as: "If you give up significant performance, functionality, buy second-hand, or completely ignore official support statements, X competitor is the better deal!"
If a Xeon doesn't cut it for you - sounds like you might be in the market for two boxes here. A server/workstation with ECC and good multi-thread performance, and a gaming machine that you can overclock and get the best single-thread performance out of.
No, the goal is to have one system, and at this point, Ryzen looks like the best option. If a competitor decides to release something equivalent, I'll consider them too.
Yes, all of the E3s support ecc, but Xeon's didn't always support ECC until the launch of the Xeon E3 as far as I can tell.
The list on WikiPedia also seems to imply that not all models did historically, perhaps this reflects the northbridge change?
Server / workstation class boards normally all do support ECC, though, so no real issue in practice.
I have a few home storage servers running on the low end Pentiums with ECC support on these.
[1] http://asrockrack.com/general/productdetail.asp?Model=C236%2...
I built a home NAS from an old board and Phenom II 545 CPU I had lying around, fortuitously they happen to support ECC. DDR2 unregistered ECC ram was a bit of a pain to find though.
Bit errors are uncommon and range from benign to crash.
Your storage has them, memory has them, network has them.
Non error correcting memory very significantly increases risk.
And this is the kind of risk you don't notice, until you do and when you do, it's often subtle, insidious, impossible to track down.
Servers absolutely. It's debatable on desktop, but we have huge RAM now. Might as well error correct. The bit error risk is small. Bigger RAM only adds to that possibility.
Here is the thing:
Without ECC, or even simple parity on the RAM, the CPU cannot validate a data transfer.
In the 90s, a place I worked for had a server running non parity, non ECC RAM. That machine was fast and cheap.
But it would demonstrate the most bizarre problems, from time to time.
A fresh OS install would fix it. Then a year or so, off the farm again.
I saw no error correction, had it replaced with a very similar machine, no issues.
The argument was, it's only the possibility, and only once in a blue moon...
The bigger the RAM, the faster we do stuff, the sooner "once in a blue moon" tends to happen.
I did put that box on my personal network, and under Linux (was win NT before), seemed fine. In the syslog, after a year, there were various kernel messages, each recovered, but there was something to recover from... Win NT would blue screen a lot. That's different today with better kernel software from Microsoft, but the point is no error correction comes with no real way to understand where some trouble may have come from.
And that was doing light duty stuff. Didn't trust it for a build, frankly.
We get fast, quality, cheap. Pick two :D
more generally, the fact that the CPU cannot know if it's transactions with RAM make any sense, unless ECC or even simple parity are present, should be a worry today.
Our processes are small, clocks fast, density high. We are pushing it on all fronts!
Best employ error correction.
And, back in the day, the Apple 2 had no parity on its RAM, the first IBM PC did. Even those much larger, more robust circuits, clocked slowly, would throw bit errors.
The IBM guys knew that from their experiences.
Haha, I remember my first steps with Linux in 1998/99. I got a faulty hard disk of 100MiB that on Windows was constantly getting errors. How ever, when I try to use it on Linux, I found that was working without any issue.
I ran a Win, IRIX, Linux network in my cube. Had, like 5 machines all doing various things.
Here's another similar thing:
Someone handed me a 33mhz SGI Indigo. "What can we do with it?"
I compiled a little program called "amp" to play Mp3 files, just wondering...
That thing could actually play 256kbps files, shared over NFS, while also offering a desktop. Someone else made a little app that could select tunes, start, stop. I could tell the bitrate based on the CPU load.
Put that and the SGI mixer on the screen, and it was the department tunes. I took it home at one point, where it continued to do that task well into the 00s
CPU utilization was 95 percent, but ran all day long for weeks, not a stutter.
The general point being, a UNIX, Linux could do magic on trash, old, odd, slow, gear and not miss a beat.
An old Pentium 90, running RH 5.2 served up the web pages while also acting as firewall and doing mail.
That thing was literally a dumpster dive. It had NT on it, and just would not run no matter what. Linux did, with a stream of kernel chatter in syslog. A console window (tail -f) showed this stream of scary looking text the whole time. crazy!
That was a stunt. Worked. Should not have. Did a few months duty, the real machine queued up, just in case.
A spend for a fast, robust, ECC machine is worth it.
During the rapid ramp up early on, price arguments were stronger because replacement came much sooner.
Today, particularly on desktop, one can get a killer machine and run it more than long enough to factor out the cost of ECC.
ECC is costly. The memory modules itself and the board required to support it properly.
If ECC were only the cost premium and we assumed a linear relationship then it should cost about 1/8 more than non-ECC DRAM. Unfortunately Intel's decisions have knock-on effects that ripple through the rest of the market.
IIRC I saw somewhere that JDEC expects a future standard will require ECC to get acceptable error rates for all memory. At that point Intel won't have any choice.
Ever had a program crash, hang, or act oddly? That's how data corruption in memory surfaces.
Of course, non-perfect programs (i.e. all of them) act the same way, which means that differentiating memory corruption from misbehaving programs is hard.
Fixing the memory errors will result in more stable system, but it still won't be perfect.
How would you know? Unless your computer use has been literally trouble-free (and all your archived data has been verified for correctness somehow), you can't know that none of your glitches over the past 17 years has been due to memory errors.
At work, including my sysadmin years, up to a very long time ago on stupid summer jobs fixing computers, I have spent countless man*months to debug issues that were ultimately caused by memory errors. All of that could have been avoided by using ECC.
IEC 61508 documents an estimate of 700 to 1200 fit/MBit (fit = "failure in time"; per 10e-9 hours of operation) and gives the following sources:
a) Altitude SEE Test European Platform (ASTEP) and First Results in CMOS 130 nm SRAM. J-L. Autran, P. Roche, C. Sudre et al. Nuclear Science, IEEE Transactions on Volume 54, Issue 4, Aug. 2007 Page(s):1002 - 1009
b) Radiation-Induced Soft Errors in Advanced Semiconductor Technologies, Robert C. Baumann, Fellow, IEEE, IEEE TRANSACTIONS ON DEVICE AND MATERIALS RELIABILITY, VOL. 5, NO. 3, SEPTEMBER 2005
c) Soft errors' impact on system reliability, Ritesh Mastipuram and Edwin C Wee, Cypress Semiconductor, 2004
d) Trends And Challenges In VLSI Circuit Reliability, C. Costantinescu, Intel, 2003, IEEE Computer Society
e) Basic mechanisms and modeling of single-event upset in digital microelectronics, P. E. Dodd and L. W. Massengill, IEEE Trans. Nucl. Sci., vol. 50, no. 3, pp. 583–602, Jun. 2003.
f) Destructive single-event effects in semiconductor devices and ICs, F. W. Sexton, IEEE Trans. Nucl. Sci., vol. 50, no. 3, pp. 603–621, Jun. 2003.
g) Coming Challenges in Microarchitecture and Architecture, Ronen, Mendelson, Proceedings of the IEEE, Volume 89, Issue 3, Mar 2001 Page(s):325 – 340
h) Scaling and Technology Issues for Soft Error Rates, A Johnston, 4th Annual Research Conference on Reliability Stanford University, October 2000
i) International Technology Roadmap for Semiconductors (ITRS), several papers.
If that's correct, the math is simple: you have bit flips in your PC about once a day.
It's just that (a) you often won't notice those transient errors (one pixel in your multi-megapixel photo is one bit off) and (b) a lot of your RAM is probably unused.
http://perspectives.mvdirona.com/2009/10/you-really-do-need-...
I'm unhappy that Intel made things more expensive and complicated with their market differentiation, but from their POV it was logical. PC users were screwing up the reliability of their systems in so many ways via overclocking, and were habituated to accept crappy reliability via pre-NT Windows. PC users could have demanded ECC and they didn't. I'm sure that even when the chipsets made it easy, only a tiny fraction bothered to use ECC.
For a regular desktop system for personal use it's not so easy. The data volumes are much smaller, the temperature environments are usually better, they aren't running (other than maybe idling) 24/7, most of the stuff that is in ram isn't going to be mission critical (i.e. you don't have 32Gb of RAM filled with customer database records, you have it filled with read only FPS textures, compiler caches etc).
Unlike a business that has tons of data that is mutated, my data is mostly immutable such as photos etc. It's not a continuously changing dataset where a bit flip in memory is likely to find its way into my data and then into my backups which would be the case e.g. for databases or big creative work (movie editing etc).
I've decided to never ever again buy non-ECC memory, at least not on 24/7 servers as well as on workstations.
In a gaming machine / visual typewriter? Sure, non-ECC memory is ok.
From the wikipedia article on ECC Ram, "Hence, the error rates increase rapidly with rising altitude; for example, compared to the sea level, the rate of neutron flux is 3.5 times higher at 1.5 km and 300 times higher at 10–12 km (the cruising altitude of commercial airplanes).[3] As a result, systems operating at high altitudes require special provision for reliability."
So to go from "rare" to "almost never" you need maybe three or four tenth-thicknesses of shielding material. That's an impractical amount of mass to suspend around your datacenter (rack isles, whatever).
Remember too, that you've already got ~30 feet of water equivalent in shielding (the atmosphere).
Needs (2015) added to the Title I think.
Do you have a use case where you would want your computer to alert you when the ram is failing? If yes then you should use ECC memory.
Otherwise it's a nicitey and probably not worth the money.
Now the half truth becomes full-truth.
http://jrs-s.net/2015/02/03/will-zfs-and-non-ecc-ram-kill-yo...
Are you OK with silent data corruption? If so, don't bother with ECC. If not, use it.
The truth is, if you care about the notion that your disk should return the same data that software thought it was writing, you should use ECC with any file system. But The ZFS folks made noise about the issue, I think lots of people assumed the reason was that there was something special about ZFS that needed it, and now you have something sort of like an urban legend.
First is an academic paper testing if modern filesystems still needed ECC RAM. They tested ZFS and concluded horrible things could happen to your data without ECC RAM. They found the same about ext2, but that was just a small paragraph people overlooked. So nothing new, but many people are unaware that other FS have the same issue.
Second is a moderator on the FreeNAS forums coming up with a scenario where a ZFS scrub would wipe out your data. Developers and other people that have read the code said it couldn't happen as described, but the story was perpetrated on the FreeNAS forums and spread across the net.
Hint: In an OS using a page cache (=every OS) I/O errors are not reliably propagated to applications unless they explicitly sync their dirty pages.
Because ZFS was the ONLY file system that would actually catch some memory failures even if you didn't have ECC. So, ZFS got a reputation for being snotty when in reality the hardware it was running on was broken.
If you implement ZFS for that propose and cheap out on RAM, you're at odds for that purpose.
Do you have a source for a more plausible analysis that takes into account how memory actually tends to fail?