Tue 14 September 2021

Native compilation on Arm servers is so much faster now

Back in 2012, Codethink produced one of the very first modern cluster-in-a-box Arm servers, the Baserock Slab; 8 quad-core SoCs in a 1U case.

baserock slab

At that time, there was lots of talk about Arm's low power consumption advantage as the unique selling point, but at Codethink our target was to design a fast multi-SoC machine.

One of the key drivers for us was developing and integrating custom Linux-based system software for clients targeting Arm SoCs. We had identified cross-compilation as one of the key pain points in many projects, particularly since many upstream components didn't support cross-compilation, and we could not be sure that cross-compilation outputs would always be functionally identical to native outputs.

So we were aiming primarily for high-performance Arm-based software build machines, and that meant we needed fast CPU, as many cores as possible, lots of memory, plenty of fast SSD and fast networking.

This was a very specific niche, obviously. In practice high-performance x86 machines delivered cross-compiled builds faster than our original design, and faster than the other Arm servers we migrated to as the years passed by. We were one of the first organisations to acquire an HP Moonshot server in 2014.

hp moonshot

The Moonshot was a huge beast with 45 x 8 core SoCs, but even so it couldn't really compete with equivalent x86 servers on performance.

Since then, Arm servers have improved dramatically for our workloads. We've seen significant gains in overall performance for Arm-native build usecases. Looking at current builds for the freedesktop-sdk project, for example, a full x86_64 build can take over 1100 minutes whereas the Arm build completes in under 700 minutes.

So for this workload, a 32-core Arm Server takes 40% less time than a 32-core Intel machine!

aarch64:

  • 1x Ampere eMAG 8180 32-core , 128GiB RAM
  • 670 minutes
  • log output

x86_64:

  • Intel(R) Xeon(R) CPU E5-2660 (32 cores), 141GiB RAM
  • 1117 minutes
  • log output

Specs for the actual machines are here.

The aarch64 server is generously sponsored by @equinixmetal as part of the Works On Arm intiative with support from Arm.

The x86_64 server is generously sponsored by OSU Open Source Lab.

Related blog posts:

Other Articles

Get in touch to find out how Codethink can help you

sales@codethink.co.uk +44 161 660 9930