Photo courtesy of Flickr: Qfamily
In this blog post I'm going to discuss how server memory works, as well as the difference between server memory and desktop memory. I will talk about some of the common myths regarding the role of memory in a server environment and why you should not use regular RAM when building a server machine.
When we think of memory or RAM (random access memory), we often think of it in a rather uniform manner (i.e. all RAM is the same); however, that definitely is not the case - not in the desktop/laptop world, and certainly not in a server setting. We also tend to think of RAM simply in terms of speed over function. When selecting RAM for your home or office PC, this is fine, as overall the faster the RAM, the better; however, a fast stick of desktop RAM does not necessarily make for a fast stick of server RAM. In fact, speed is only part of the equation when we look at purchasing RAM for a server box.
Typical, memory acts as a drill sergeant, taking a group of commands or instructions (a cycle) and shooting them off to the "brain" of the computer - the CPU or central processing unit. The CPU then takes these instructions, and starts delegating them out to various parts of the system, much like our brain works: a signal to the arm to raise a glass of water, a set of instructions to the left and right feet to move forward, and so forth. The faster the memory can send these instructions, and the more sets of instructions it can send at one time – the faster the CPU can receive and process them.
When working with a laptop or desktop, this type of system works well, because we often have multiple software applications and Internet browsers running concurrently. We also have the operating system running many tasks, as well as input/output devices, such as the keyboard and mouse. All of this requires instructions to be passed from memory to the CPU for execution. The less memory, the slower all of these "instructions" are going to be passed, and eventually your "instruction highway" is going to end up in gridlock - or worse - a horrendous crash.
How Server Memory Works and the Role of ECC Memory
Servers work a little differently. The role of RAM in a server is not so much to move "instructions" (it still does of course), but to move data and ensure consistent data flow. Most servers do not run multiple instances or browsers and software applications. They also don't have to handle as much input/output feedback, and sometimes do not have to deal with the drain of complex operating systems (depending upon the setup); because of this, server memory is design a little differently.
The most important feature of server memory is ECC, which stands for error checking and correction. A server must operate in a 24/7, 365 days-a-year environment. They are used for mission critical and business environments that rely on them never crashing or going offline. One measure used to ensure this does not happen is ECC.
In standard RAM, data is passed to the processor with little thought - its purpose, after all, is to get that information to the CPU as quickly as possible. With ECC, however, the memory takes an additional step and checks the data prior to sending it to the CPU. If it finds any memory or data errors during this test, it corrects them, and then sends the corrected data to the processor. This prevents some of the errors that could lead to stalled programs and system crashes.
One of the myths about building a server is that you can just use regular RAM. This is true to a degree, but it is not recommended for the reasons noted above. Since servers run day and night, processing repetitive tasks, using regular RAM that does not check for memory errors, can allow for issues to build and spiral out of control.
Another myth is that there is a big difference in speed between regular memory and ECC memory. This is probably a bit exaggerated. Reports indicate that there is probably around a 2% difference, with desktop RAM being the winner.