We have been running SPEC CPU2006 in our lab for some time now while doing motherboard and system reviews, and we find that many others use SmartHeap to optimize their systems and get much better results for their benchmarks.
We decided to take a dive into SmartHeap to see just what it does, and how it can affect our benchmark results.
What is SmartHeap?
SmartHeap is a set of libraries used in compile time for applications. Supported operating systems include Windows, Linux, Solaris, HP-UX, IBM-AIX, Dec OSF Tru64, and SGI Irix. SmartHeap also has an ANSI-compliant malloc/operator new library.
SmartHeap supports multiple memory pools, includes a fixed-size allocator, and is thread-safe. SmartHeap also includes comprehensive memory debugging APIs to detect leakage, overwrites, double-frees, wild pointers, out of memory, references to previously freed memory, and other memory errors.
Taken from MicroQuill's website:
The problem: Compiler runtime libraries allow only one thread at a time to be active in the heap. So on SMP systems, when multiple threads make concurrent heap requests, all but one will be blocked by the heap manager, nullifying the benefit of the extra CPUs. Worse yet, each time a thread is blocked, the OS invokes a context switch. The result: adding processors results in a vicious cycle of context switching that can prevent your app from scaling.
So, let's move on now and see what kind of effect it has on our tests.
Test System Setup
For our test system setup, we used the Lenovo ThinkServer RD340 that we reviewed here recently.
We used the same setup for our tests here that we used in our review of the Lenovo ThinkServer RD340.
The CPUs that the Lenovo ThinkServer RD340 uses are Intel Xeon E5-2470 v2, and each has ten cores. Our system will be running with two CPUs, and that brings the total of cores up to twenty, and the total of threads up to forty.
We found that this system packs a serious punch in compute tests, so let's find out what SmartHeap can do to improve our scores. The version of SmartHeap that we will be using is SmartHeap Multi Core 10 for Linux. There is also a new version of SmartHeap out at the time of writing, SmartHeap 11.