One of my favorite tools for quickly evaluating and comparing processor and memory performance on a database server is Geekbench 3.2 from Primate Labs. I like to use Geekbench to put a significant workload on a new server for a few minutes during the provisioning and configuration process, both to measure the processor and memory performance and to confirm that power management is set up correctly and Intel Turbo Boost is being used. If power management is set correctly in Windows and at the hardware BIOS level, you should see your individual processor core speeds going above the base clock speed during a Geekbench test run, which shows that Turbo Boost is enabled. With virtual machines, power management need to be set correctly at the hypervisor level.
Geekbench 3 is a cross-platform, processor and memory benchmark that quickly measures both integer and floating-point processor performance along with your memory performance on a computer in just a few minutes, without requiring (or allowing) any configuration whatsoever. You just install Geekbench 3, unlock your license, and run the program, and you will see the results in roughly two-three minutes. You can then decide whether you want to upload your results to the Geekbench online database, either anonymously or using a Geekbench account. By design, Geekbench does not measure I/O performance.
Geekbench 3 has an overall Single-Core Score and an overall Multi-Core Score, along with individual scores for each one of the twenty-seven tests in the benchmark. The single-core score is very useful for evaluating single-threaded processor and memory performance, which is very important for SQL Server OLTP workloads (since most OLTP queries end up only running on a single processor core). The multi-core score is useful for evaluating the multi-threaded processor and memory performance of the entire machine, which helps you measure the processor capacity of the machine for concurrent queries.
With SQL Server 2014 core-based licensing, you want to make sure you are getting the best single-threaded performance possible from each physical processor core that you have to buy a relatively expensive SQL Server 2014 Enterprise Edition core license for. The Geekbench 3 Single-Core score is one quick and easy way to measure both single-threaded processor and memory performance.
One issue I have recently seen with high core count servers (above 32 logical cores) is that Geekbench 3 will only use 32 cores when using the 32-bit benchmarks or when using the 64-bit benchmarks from the Geekbench graphical user interface (at least with older builds of Geekbench 3). If you have a server with more than 32 logical cores, you will have to use the command line tool to run the 64-bit version of Geekbench to get it to use all of the cores in your system so that you will get an accurate Multi-Core score in the benchmark.
It is pretty easy to install the command line tool and run the 64-bit version of Geekbench from the command line. You simply go to the Tools menu, and select “Install Command Prompt Tool”, and then click on the Install button as shown in Figure 1:
Figure 1: Installing the Geekbench Command Prompt Tool
Figure 2: Confirmation Dialog After Installing Command Line Tool
After you are done installing the Command Prompt Tool, you will need to actually run the 64-bit version of Geekbench from a command prompt with the appropriate switches to get the results that you want, as shown in Figure 3. An example would be geekbench_x86_64 –-verbose –-upload, which turns on verbose output and automatically uploads the results to the online Geekbench database.
Figure 3: Geekbench Command Prompt Example
Figures 4 and 5 show the comparative results for a fast desktop system with a single 22nm, quad-core Intel Core i7-3770K Ivy Bridge processor and 32GB of RAM, and a fast two-socket system with two 22nm ten-core Intel Xeon E5-2690 v2 Ivy Bridge-EP processors and 384GB of RAM. Both of these systems are using Ivy Bridge microarchitecture processors, but the lower core count desktop system is running at a higher clock speed (both from the stock base clock speed and from some minor overclocking). This shows up in a significantly higher Single-Core score (3914 vs. 2877), which measures single-threaded processor and memory performance.
The Multi-Core score (which measures total capacity) is significantly higher for the 40 logical core, two-socket server compared to the eight logical core desktop system ( 40883 vs. 15578), but the Multi-Core score for the server is not five times higher than the desktop system as you might expect. Why is this?
There are several factors in play here. First, the desktop system has fewer cores that are each running faster than the cores in the server system. All of the desktop cores are on a single physical processor and NUMA node, which also helps performance. Finally, the desktop memory is running at a higher speed than the server system, since the two-socket server system has every memory slot populated with 16GB memory sticks.
Figure 4: Geekbench 3.2 Results From a Core i7-3770K Ivy Bridge Desktop System
Figure 5: Geekbench 3.2 Results From a two-socket Intel Xeon E5-2690 v2 System
Figure 6: Task Manager During a Geekbench Test Run Using All 40 Logical Cores
Figure 7: CPU-Z During a Geekbench Test Run, Showing Intel Turbo Boost In Effect
Running Geekbench 3 only takes about two-three minutes, and it gives you a wealth of useful information about your processor and memory performance. Even if you are unable or unwilling to run Geekbench 3 on your database servers (during a maintenance window or before they are deployed to production), you can still take advantage of the online Geekbench database of scores to find a similar system to what you want to evaluate.
When you run Geekbench 3, you should make sure to run the fully licensed 64-bit Pro Version, and you should be watching Windows Task Manager during the test run to make sure all of your logical cores are being used during the benchmark test. If necessary, you may need to use the command line version of the tool to ensure that all of your cores are being used during the test.
I would love to hear about your opinions and experiences using Geekbench and CPU-Z together to measure the processor and memory performance of your database servers.
Why is the CPU not fully utilized in Fig.6?
Geekbench does not peg the processor cores during the entire test run. The CPU utilization will jump around during the test run. This maybe because of the way the tests are coded or because the system may hit other bottlenecks (such as memory) momentarily during the test runs, which allows the CPU utilization to do down.
Great post Glenn, i was aware of CPU-Z but not Geekbench. We are about to start a hardware refresh of our DL580's but potentially replacing with the new DL360 gen 9's with a lower core count due to the cost of core based licencing these days. Geekbench looks like it will be useful in the evaluation process for us.