Introduction, What is SmartHeap? and Test System
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.
SPEC CPU2006 v1.2
SPEC CPU2006v1.2 measures compute intensive performance across the system using realistic benchmarks to rate real performance.
In our testing with SPEC CPU2006, we use the basic commands to run these tests.
Runspec -tune=base -config=tweaktown.cfg; then int, or fp.
To do multi-threaded, we add in -rate=40.
When SPEC CPU first came out, these tests could take up to a week to run, but as computers become faster, so do the tests. Our tests take up to four days for a full run now, and even less on some systems.
This benchmark has many different commands to use depending on what the user is looking for. For our tests, we used basic commands that run a full test with a base tune.
Here you can see the SPEC scores after full runs for Integer (int), and Floating Point (fp) tests.
Single-core runs show how fast (speed) a CPU can perform a given task. In the multi-core runs, we set SPEC CPU2006v1.2 to use all threads to measure the throughput of the system.
The additional cores/threads of this system have a huge impact on performance in these tests, and really show the amount of horsepower that a dual-socket system has over a single-socket board.
Single-threaded results are still very important, but when you need many single-threaded apps to run, moving to a dual-socket setup is the way to go.
The overall scores show a moderate to high improvement in single-threaded results, but with multi-threaded results, SmartHeap really shines.
Looking at the results of single-threaded integer runs, we can get an idea of the speed at which the Intel Xeon E5-2470 v2 can crunch through different integer tests. Not all CPUs are equal here, and ones that have a higher speed will perform these tests faster. Naturally, using an overclocked system or CPUs with a higher stock-speed will generate higher results.
For most of the tests, we noticed only a small improvement in results; we did see a huge improvement in 462.Libquantum.
462.Libquantum simulates a quantum computer by running Shor's polynomial-time factorization algorithm.
Now we run the test using all forty threads on the Intel Xeon E5-2470 v2s. In this test, more cores/threads will have a greater effect on the outcome.
When using SmartHeap, we can see a moderate to large impact on these results. Just like in the single-threaded runs, 462.Libquantum really takes advantage of optimizations that SmartHeap provides.
Now we move on to the Integer runs, and here we see the single-threaded results. With the exception of a few results, SmartHeap has shown to greatly improve our results.
We see the largest effect in 436.cactusADM, which solves the Einstein evolution equations using a staggered leapfrog numerical method.
Here we see the results of the multi-core, floating-point run that uses all forty threads on the Intel Xeon E5-2470 v2s. Much like the multi-threaded integer test, more cores/threads will have a greater impact on this test as well.
Using SmartHeap almost doubles every score here. This is where the MC version of SmartHeap really shines. This can really pump up performance when using dual CPU systems if your application can take advantage of SmartHeap optimizations.
With our SPEC CPU2006 tests, we saw significant improvements to our results -in some cases doubling performance.
SmartHeap needs to be linked to your app, and then complied in your favorite complier; in most cases, this is a simple process. We assume that anyone interested in using SmartHeap will have a basic understanding of how to compile apps, so it should not be very hard to get everything up and running.
Here in the lab, we are not experts in compiling these types of things, and we did have some issues getting everything working. However, with help from MicroQuill support, we were able to get things figured out.
There are also several options when purchasing SmartHeap for single-threaded, or SMP (symmetric multiprocessing) multi-threaded. Besides using SmartHeap to optimize SPEC CPU2006 benchmarks, it can be used to improve your application performance on a wide variety of platforms.
To sum everything up, we saw a huge improvement in our SPEC CPU2006 results; in some cases, almost double the results. In the multi-threaded runs, SmartHeap has a dramatic effect on many of the results.
We do not have an award for software per se, but if we did, we would rank SmartHeap in the 95% range, and only knock it down for compiling issues that we had. We know that many of our readers would not run into the issues we had, as we are not experts in compiling software.
If your application can take advantage of SmartHeap, then it's well worth looking into.
PRICING: You can find products similar to this one for sale below.
United States: Find other tech and computer products like this over at Amazon.com
United Kingdom: Find other tech and computer products like this over at Amazon.co.uk
Australia: Find other tech and computer products like this over at Amazon.com.au
Canada: Find other tech and computer products like this over at Amazon.ca
Deutschland: Finde andere Technik- und Computerprodukte wie dieses auf Amazon.de