Several months ago we had pre-release benchmarks of the Cavium ThunderX. The company promptly contacted us and wanted to show what its hardware can do. Those benchmarks were done on an older OS with older software. Over the past few weeks we have been working with both the single and dual socket (48 core and 96 core) variants of the Cavium ThunderX part and what struck us is how fast the software side is maturing in key areas. We will have more in-depth benchmarks of the platforms running real world workloads soon.
Prior to the release of the Cavium ThunderX most 64-bit ARM development, even for server applications, has been done on low price ARM development boards. There the typical core and memory count is both fixed and low. Networking is often provided by a USB to Ethernet adapter. This is a scene of typical ARM development hardware to date at many Silicon Valley startups:
While that is great for IoT development, the Cavium ThunderX platform is completely different. There are both single and dual processor configurations scaling up to 96 64-bit ARM cores. Memory capacities can scale into the TB range, or about 1000x a typical IoT development board. Networking provided on our test platforms is 80Gbps for our single processor system and 160Gbps on our dual processor system. Onboard storage can support more than a dozen SSDs or hard drives. Here is what our dual Cavium ThunderX 96 core test platform (a Gigabyte R270-T61) looks like inside:
The bottom line is, if you are developing for ARM in the data center, you need to get a Cavium ThunderX platform as it is the best data center ARM platform generally available today. In the remainder of this article, we are going to show how some benchmarks around the evolving software and development ecosystems. These benchmarks will show how the Cavium ThunderX is a competitive server platform. With a few weeks of working with the hardware/ software, and given the fact we manage both lab and production servers with Ubuntu, we are going to share some anecdotal experiences as well.
The Ubuntu 16.04 LTS Update
We originally received our single Cavium ThunderX 48 core system Gigabyte R120-T30 that we reviewed here. It had Ubuntu 14.04 LTS pre-installed from Cavium. After poking around with the machine running in our data center, there were a few nuances to the setup and ARM platforms:
- - Using Ubuntu 14.04 LTS required quite a bit of patching to get great performance
- - Trying to pull working software via “apt-get install” if it resided in universe did not always work. Sometimes packages were just not present. Those that did install were not optimized.
- - As Cavium pointed out, using newer gcc versions and building applications from the latest source was often the way to get good performance out of ARM platforms.
We updated the 1S ThunderX platform to Ubuntu 16.04 LTS the same week we received the 2S ThunderX platform in our data center. It was immediately clear that the experience was much better. Software that required patching instead worked out of the box. Packages installed from repos almost every time with even many multiverse packages working without having to custom compile software. This was a completely different experience.
The update had two implications. First, unlike Ubuntu 14.04 LTS, 16.04 LTS felt more like it just worked. Second, out of box performance was much better than in 14.04.