This is a performance test of CacheBench, which is part of LLCbench. CacheBench is designed to test the memory and cache bandwidth performance.
As described in the cachebench paper, cachebench strides through memory and tries to operations on a vector of numbers, e.g.
// read for (i = 0;i < length;i++) sum += vector[i]; // write for (i = 0;i < length;i++) vector[i] = sum++; // modify for (i = 0;i < length;i++) vector[i]++;
Phoronix times these through loops of varying sizes and then prints the time spent in the last iteration.
However, as best I can see, the implementation of cachebench as well as the Phoronix test have three large issues
- Access patterns are regular and insufficient checks are made of the results that gcc and other compilers can optimize away computations.
- The access patterns are very regular, i.e. incrementally striding through the vector, and prefetchers and other optimizations defeat the attempt to look at different cache sizes
- Phoronix invokes this test with a "-m16" option indicating memory sizes of 64K. That might have made sense when cachebench was written (~20 years ago), but now this is not much larger than L1 cache sizes
The net combination is that I'm not sure this benchmark serves a purpose in comparing test results. As an example, following is output I got which doesn't make much logical sense (the values printed are a logical sum of cache operations most of which are small enough to fit into L1 if not optimized away by hardware and software.
CacheBench: pts/cachebench-1.1.2 [Test: Read] Test 1 of 3 Estimated Trial Run Count: 3 Estimated Test Run-Time: 7 Minutes Estimated Time To Completion: 21 Minutes [05:52 CDT] Started Run 1 @ 05:31:51 Started Run 2 @ 05:33:57 Started Run 3 @ 05:36:04 Test: Read: 3289.2156434286 3291.455884 3282.0603952857 Average: 3287.58 MB/s Deviation: 0.15% CacheBench: pts/cachebench-1.1.2 [Test: Write] Test 2 of 3 Estimated Trial Run Count: 3 Estimated Test Run-Time: 7 Minutes Estimated Time To Completion: 14 Minutes [05:51 CDT] Started Run 1 @ 05:38:17 Started Run 2 @ 05:40:23 Started Run 3 @ 05:42:29 Test: Write: 25516.759954095 25262.961700714 25669.610336143 Average: 25483.11 MB/s Deviation: 0.81% CacheBench: pts/cachebench-1.1.2 [Test: Read / Modify / Write] Test 3 of 3 Estimated Trial Run Count: 3 Estimated Time To Completion: 7 Minutes [05:51 CDT] Started Run 1 @ 05:44:42 Started Run 2 @ 05:46:48 Started Run 3 @ 05:48:54 Test: Read / Modify / Write: 40692.982519286 42455.34285481 42416.419197952 Average: 41854.91 MB/s Deviation: 2.40%