Conclusions
In some respect, and considering only the real word tests, I could do anything instead of writing this article: the performance differences are so low that in most case setting the memory controller in ganged or unganged mode make no practical differences. The point is that, while the theoretical test show some interesting improvements, it is not simple to replicate a server test pattern that directly depends on memory performance. Sure, I could use some HPC benchmarks, but I think that the HPC guy should calibrate their entire platform for the specific calculation to be done and, probably, they are so smart that already tested the ganged vs unganged operation in their specific scenario. Moreover, the great majority of servers are sold not for HPC but for more pedestrian works as web server, database server and virtualization server. But hey – where are the virtual machine tests in both ganged and unganged modes? Simply stated: I have none. Why? Simply because, in the end, on these virtualized machine you will run some server side software, as Apache or MySQL. So I preferred to concentrate my benchmarks on applications themselves.
So, what memory mode we should use? All in all, I think that the unganged mode is the preferred one. Why? Because:
-
in this mode, the memory controller is more flexible on the type and size of DIMM to be used in the two memory channels (for example, in the past I had problems on my Asus board using the ganged mode; I needed a BIOS update to solves these issues)
-
by giving the system the ability to manage a write stream and a concurrent read stream, you should have a more consistent performance on applications that require memory copy operations (a very common function)
-
while the ganged mode is faster than unganged one in single-thread memory read access, it is top-capped by the per-core L3 bandwidth speed and so, in the end, even in single-thread application the unganged mode is not far behind
-
while many tests virtually end with a tie, it seems that the unganged mode has a pattern of very slight performance advantages over the ganged one (in contrast, in the Joomla + PHP test the ganged mode wins by a significant 10% margin)
-
if you use your server for virtualizing a great number of virtual machines, the unganged mode should give you higher performance because the various virtualized kernels often need to do many small, concurrent accesses to main memory
-
the unganged mode is the AMD's recommended setup as it enable a greater level of parallelism (in some recent processors, as the G34 ones, it is the only memory controller mode available)
I hope that you found useful to read this article. If you think that I did some microscopic or macroscopic errors, or if you just want to share with me your thoughts about this article, please let me know contacting me at