Most of the times when when I build a new server config, this conversation comes up… does the memory need to be fully balanced? Will near-balanced work just as well? What about completely unbalanced? Are there noticeable differences?
All valid questions, and luckily so far, I have not had any of the clients I work with run into any issues when choosing a near-balanced memory configuration for their servers (I do not recommend unbalanced configurations unless the server only has 1 or two DIMMs per CPU. I try to recommend to at least stick with a near-balanced configuration at that point).
One configuration I do never recommend is mixing DIMM sizes. If you can steer away from that, please do.
It is great to follow best practices at all times, specially when it makes perfect sense, but there are certain scenarios where best practices does not justify the extended cost for hardware that will simply sit there unutilized, in my own personal opinion of course. In theory, fully balanced configuration will provide increased memory bandwidth and reduced memory access latency. How much more bandwidth? And how much less latency? Unfortunately I have not been able to measure those gains myself.
Now, if you are chasing the most throughput possible with the least amount of latency, then memory balancing is a must have. For general workloads, the performance difference between balanced and near-balanced configs will be negligible in most cases.
Here are some examples of different memory configurations using a dual CPU socket, 32 memory slot server as example:
** P = Populated DIMM Slot **
Balanced Configuration – Best case Scenarios (Populating 16 or 32 slots on the server)
Near Balanced Configuration – Second best case Scenarios (Populating 8, 12, 24 or 28 slots on the server)
Unbalanced Configuration – Try to avoid (some OEMs may not even support it unless single or dual DIMM per CPUs are used)
COMPLETELY Unbalanced – Do not try this at home. Remove 2x DIMMs from CPU #2 and move to CPU #1 at the very least
What are your experiences with Memory Balancing? Have you ever noticed a significant performance difference when leveraging near-balanced memory configurations in your environment?