"Per Core" Integer Performance: 7-Zip

The profile of a compression algorithm is somewhat similar to many server workloads: it can be hard to extract instruction level parallelism (ILP) and it's sensitive to memory parallelism and latency. The instruction mix is a bit different, but it's still somewhat similar to many server workloads. Testing single threaded is also a great way to check how well the turbo boost feature works in a CPU.

We ran this benchmark on the POWER8 a few months ago, but there are several reasons to do this again. First of all, we can now use GCC 4.9.2, which has specific support for POWER8 (-mcpu=power8). It is good to note that POWER8 is not a radical new design compared to POWER7. So we only expect modest gains from the compiler.

Secondly, last time we ran on top of PowerKVM, inside a virtual machine. Although that should not make a big difference either - as the benchmark runs almost completely (99%) in user modus and thus runs at 100% - it's still worthwhle to rule out the influence of the virtual machine.

So we recompiled the 7-Zip source code on every machine with the -O3 optimization with GCC 4.9.2.

LZMA per core Performance: Compression

It is important to note that Intel is extremely aggressive with Turbo-boost on the Xeon E5-2699v3. Running code on one core causes the 2.3 GHz Xeon to boost to 3.6 GHz. As a result, the typical clockspeed advantage of the POWER8 was minimized to a measly 90 MHz, with the POWER8 CPUs boosting from 3.425 GHz to 3.690 GHz.

We found that the POWER8 needs more than one thread to deliver good performance: with one thread we only achieve 62% of the performance of a Haswell core at the same speed. Using the mcpu=power8 compiler flag did little more than boost the performance by 1-3%, which is within the margin of error of this benchmark. So your (occassional?) single threaded code will fare badly on POWER8.

Once you fire off 8 threads however, the POWER8 CPU outperforms the hyperthreaded Haswell core slightly (4%).

How about decompression which is even more (IPC) unfriendly to our brainiacs?

LZMA per core Performance: DeCompression

With a single thread, performance of a POWER8 core is about 25% slower than a Haswell core. The Haswell core is still clearly better in extracting Instruction Level Parallelism out of this ILP-unfriendly code. However, let there be no mistake about the integer crunching power of POWER8: it delivers 35% higher performance than the hyperthreaded Xeon E5, core per core, clock per clock (give or take a few MHz).

Compression depends more on the datacache and OoO engine. It is remarkable that the Haswell core with its smaller L1-datacache does a lot better than the POWER8. The many unpredictable branches of the decompression code underutilize these very wide modern cores, and as a result the SMT-8 capable POWER8 outperforms the dual-threaded (SMT-2) Haswell. Notice that running two threads instead one thread on the POWER8 offers 61% better performance. Running 8 threads delivers 2.4x higher performance, a clear indication that the POWER8 CPU has a very wide integer execution engine, but can only deliver if enough threads are active.

Benchmark Configuration and Methodology Multi-Threaded Integer Performance
Comments Locked

146 Comments

View All Comments

  • Mondozai - Friday, November 6, 2015 - link

    That's too bad. Over 90% of the world population exists outside of it and even if you look at the HPC market, the vast majority of that is, too.

    The world doesn't revolve around you. Get out of your bubble.
  • bji - Friday, November 6, 2015 - link

    He never claimed the world revolved around him, he just made a true statement that may be worth consideration. Your response is unnecessarily hostile and annoying.

    I would expand Jtaylor1986's statement: I believe that most if not all native English speaking populations use commas for thousands grouping in numbers. Since this site is written in English, it might be worthwhile to stick to conventions of native English speakers.

    It's possible that there are many more non-native English speakers reading this site who would prefer dots instead of commas, but I doubt it. Only the site maintainers would know though.
  • Jtaylor1986 - Friday, November 6, 2015 - link

    You read my mind :)
  • mapesdhs - Tuesday, November 10, 2015 - link

    Talking to numerous people around Europe about tech stuff, I can't think of any nation from which someone used the decimal point in their emails instead of a comma in this context. I'd assumed the comma was standard for thousands groupings. So which non-US countries do use the point instead? Anyone know?
  • lmcd - Friday, November 6, 2015 - link

    Cool on the rest of the world part, but the period vs comma as delimiters in the world numeric system ARE backward. In language (universal, or nearly), a comma is used to denote a pause or minor break, and a period is used to denote the end of a complete thought or section. Applied to numerics, and you end up with the American way of doing it.

    ^my take
  • JohanAnandtech - Saturday, November 7, 2015 - link

    Just for the record, this was not an attempt to nag the US people. Just the mighty force of habit.
  • ZeDestructor - Saturday, November 7, 2015 - link

    For future use: just use a space for thousands seperation (that's how I do it on anything that isn't limited to a 7seg-style display), and confuse readers by mixing commas and periods for decimals :P
  • tygrus - Sunday, November 8, 2015 - link

    I like to use a fullstop for the decimal point, an apostrophe for the thousands separator, a comma for separating items in the list, don't start a sentance with a digit.
    One list of numbers may be : 3'500'000, 45.08, 12'500.8, 9'500. Second list : 45'000, 15'000, 25'000. We use apostrophes when we contract words like don't so why not use it for contracting numbers where we would otherwise have the words thousand, millions, billions etc ?
  • mapesdhs - Tuesday, November 10, 2015 - link

    I have a headache in my eyeballs! :D
  • ws3 - Friday, November 6, 2015 - link

    North America is on the majority side on this issue. Asia, in particular, is almost completely on the side of using a dot as the decimal separator and a comma to put breaks in long numbers.

    Get with the program Europe. The world doesn't revolve around you!

Log in

Don't have an account? Sign up now