geekbench – a quick look
Geekbench is a system benchmark that I see frequently in comparing Android devices such as tablets or mobile phones. The benchmark is also available for PC processors running Windows and Linux. Geekbench is developed and sold by Primate Labs.
I was curious about the Geekbench workload and whether it is interesting enough to buy a copy. Fortunately, there is an “tryout” version that I can use for that exercise. A comparison of this edition and the normal and “pro” versions is here. In this exercise, I downloaded the Geekbench tryout version and ran it under wspy to see what I could learn.
Clicking on the “Download” link pulls a tar archive with three executables and a “plar” file:
mev@popayan:~$ tar tvf Downloads/Geekbench-4.2.2-Linux.tar.gz drwxrwxr-x build/build 0 2018-02-14 10:34 Geekbench-4.2.2-Linux/ -rw-rw-r-- build/build 50683879 2018-02-14 10:34 Geekbench-4.2.2-Linux/geekbench.plar -rwxrwxr-x build/build 1484809 2018-02-14 10:34 Geekbench-4.2.2-Linux/geekbench4 -rwxrwxr-x build/build 25373264 2018-02-14 10:34 Geekbench-4.2.2-Linux/geekbench_x86_64 -rwxrwxr-x build/build 26722340 2018-02-14 10:34 Geekbench-4.2.2-Linux/geekbench_x86_32
Running the geekbench4 executable gives the following output which tells me it is running all the workloads and then provides a link to the results that have been uploaded. These numbers compare favorably to other i7-4770S processors I see on the Geekbench site.
mev@popayan:~/Geekbench-4.2.2-Linux$ ./geekbench4 Geekbench 4.2.2 Tryout : http://www.geekbench.com/ Geekbench 4 is in tryout mode. Geekbench 4 requires an active Internet connection when in tryout mode, and automatically uploads test results to the Geekbench Browser. Other features are unavailable in tryout mode. Buy a Geekbench 4 license to enable offline use and remove the limitations of tryout mode. If you would like to purchase Geekbench you can do so online: https://store.primatelabs.com/v4 If you have already purchased Geekbench, enter your email address and license key from your email receipt with the following command line: ./geekbench4 -rRunning Gathering system information System Information Operating System Ubuntu 17.10 4.13.0-38-generic x86_64 Model ASUSTeK COMPUTER INC. M11AD Motherboard ASUSTeK COMPUTER INC. M11AD Memory 15.4 GB BIOS American Megatrends Inc. 0302 Processor Information Name Intel Core i7-4770S Topology 1 Processor, 4 Cores, 8 Threads Identifier GenuineIntel Family 6 Model 60 Stepping 3 Base Frequency 3.90 GHz L1 Instruction Cache 32.0 KB x 4 L1 Data Cache 32.0 KB x 4 L2 Cache 256 KB x 4 L3 Cache 8.00 MB Single-Core Running AES Running LZMA Running JPEG Running Canny Running Lua Running Dijkstra Running SQLite Running HTML5 Parse Running HTML5 DOM Running Histogram Equalization Running PDF Rendering Running LLVM Running Camera Running SGEMM Running SFFT Running N-Body Physics Running Ray Tracing Running Rigid Body Physics Running HDR Running Gaussian Blur Running Speech Recognition Running Face Detection Running Memory Copy Running Memory Latency Running Memory Bandwidth Multi-Core Running AES Running LZMA Running JPEG Running Canny Running Lua Running Dijkstra Running SQLite Running HTML5 Parse Running HTML5 DOM Running Histogram Equalization Running PDF Rendering Running LLVM Running Camera Running SGEMM Running SFFT Running N-Body Physics Running Ray Tracing Running Rigid Body Physics Running HDR Running Gaussian Blur Running Speech Recognition Running Face Detection Running Memory Copy Running Memory Latency Running Memory Bandwidth Uploading results to the Geekbench Browser. This could take a minute or two depending on the speed of your internet connection. Upload succeeded. Visit the following link and view your results online: https://browser.geekbench.com/v4/cpu/7920564 Visit the following link and add this result to your profile: https://browser.geekbench.com/v4/cpu/7920564/claim?key=196807
I have created an account on the site and saved this result as a comparison on the Geekbench site.
My next step is to run Geekbench under wspy to collect both a process tree and the performance counter metrics associated with it. I run this with the following command line:
mev@popayan:~/Geekbench-4.2.2-Linux$ /home/mev/wspy/wspy --processtree --perfcounters --zip geekbench.zip ./geekbench4
This gives me the following link as a performance score. The instrumented multi-core score is 0.3% lower and the single-core score is 1.3% higher. Without knowing the noise in this benchmark or having investigated subscores, overall instrumentation doesn’t seem to have a large effect
Single-Core Multi-Core Without Instrumentation 4682 15255 With Instrumentation 4746 15204
From the process tree and timing I can see the general structure consists of (1) an overall driver, e.g. geekbench4 that inventories the system and posts the overall results (2) a workload program e.g. geekbench_x84_64 that takes an incoming argument and runs that particular workload in single-threaded mode and (3) a driver program, e.g. also geekbench_x86_64 that runs 1, 2, 4 or 8 copies of the workload and reports the results. In total a geekbench run uses 205 processes/threads. From the start time, elapsed time and IPC, I can sort these into 25 workloads first run sequentially and then in parallel.
Without giving out the complete details of each workload, I can summarize the workloads in the table below.
- With a few exceptions, the workloads are mostly On-Core. 21 of the 25 multi-core benchmarks are run with exactly 8 copies and these stay scheduled on each core. One of the benchmarks (SGEMM) runs only 4 copies and the 3 memory benchmarks run 2 copies.
- Elapsed times are short. The longest benchmark runs for less than 7 seconds and on average benchmarks run for approximately one second.
- IPC varies more widely. If we exclude the memory benchmarks and SGEMM, the IPC ranges from 0.40 to 1.78.
Metric | Mean | Min | Median | Max |
---|---|---|---|---|
Elapsed Time | 1.38 seconds | 0.40 seconds | 0.96 seconds | 6.72 seconds |
On Core | 6.77 (7.58 for those running 8 copies) | 1.95 (5.22 for those running 8 copies) | 7.76 | 7.91 |
IPC | 1.05 | 0.05 (excluding three memory workloads 0.40) | 1.16 | 2.54 (excluding one 4-threaded workload 1.78) |
So overall, is Geekbench an interesting workload to explore further? Perhaps the biggest drawback I see is the very short runtimes and the somewhat homogenized runtime format. Hence, I don’t see using Geekbench as a general workload to explore more generally. Instead, I see Geekbench as a workload I’ll dive in deeper if it is cited in external articles e.g. those comparing two processors or systems. In that case, I’ll want to look more specifically at why particular workloads might vary in examples and how they compare with my reference results.
As far as the particular version of Geekbench goes, I probably have enough diagnostic information that I could run these workloads even within the tryout version. However, of most interest would be running them from an approved command line and that comes with the ($100) pro edition.
Good analysis…how do you find which subset is CPU intense or cache intense. For CPU I think ipc count can tell the story but how do u check cache intense or not
For cache intensive, I mostly use performance counters to look at the rate of cache misses from various levels of cache, e.g. L1 miss, L2 miss, L3 miss as well as the miss percentages.
The “topdown” statistics give an idea if these misses make a difference. In particular, the counter that looks for backend stalls while there is a pending memory operation.