In this issue: Apache Cassandra performance report from MityLytics; Go 1.8.3 release; Elixir and Erlang; HHVM, a virtual machine for running PHP and Hack; GNU Parallel, FFmpeg, a video transcoder; and Firefly‘s Armv8 Kickstarter.
If you have any questions, comments, or suggestions for Issue 6, please send them to [email protected] or contact me on the Packet community Slack channel as “ed.packet”. Tweets can be send to the @worksonarm account or to @vielmetti.
I spoke with Manish Singh from MityLytics on Thursday about his talk at the Apache Big Data conference. MityLytics ran a head to head comparison between the performance of the Apache Cassandra database on ARM vs Intel using servers from Packet and from Amazon Web Services. The systems were evaluated based on performance, price, and operations under a load that reflects the cotenancy common in Cassandra installations in the real world.
Of the servers compared, Packet’s Type 2A 96-core ARM server compared favorably on many fronts. On the plus side, the many cores allowed more headroom for more CPU-intensive cotenant loads, and the fast network allowed it to readily keep up with the test load. Manish did note that getting Cassandra to run was not a clean out-of-the-box experience, and that a few changes needed to be done from the default Apache distribution to get it to work.
The slides for the talk, entitled Cassandra on Armv8 – A comparison with x86 and other platforms, are available from the Apache Big Data conference web site. For a complete report from MityLytics, contact them for a PDF of conclusions from their benchmarking efforts.
Go had two releases this week. 1.8.2 shipped on Tuesday May 23, 2017 with a single bug fix in the crypto/elliptic library that affected only the x86 platform. It was followed on the next day, May 24, with the Go 1.8.3 release which reported fixes to the compiler, runtime, documentation, and the database/sql package. See the Go 1.8.3 milestone on the issue tracker for details of what was changed.
In the release notes for 1.8.3 there are no changes specific to ARM.
We’re watching Go closely in anticipation of a Go 1.9 release, which is expected to have binary support for arm64 as well as a number of performance improvements specific to ARM. Expect that in the late July 2017 timeframe.
Erlang is a functional programming language developed at Ericsson for telecom and online transaction processing applications. It is known for its ability to update complex programs without bringing the system down, and for its effective use of multiprocessor systems. Erlang’s runtime system has built-in support for concurrency, distribution and fault tolerance.
Ubuntu 16.04 LTS ships with support for Erlang 18 on the ARM platform. Erlang 20 is the latest available release.
HHVM is a virtual machine and just-in-time compiler (JIT) for applications written in PHP and Hack. Developed by Facebook, it is a response to PHP performance issues at scale, and it has been responsible for 10x speedups on applications. The HHVM on ARM mailing list is for developers working on the language and its implementation.
The March 2017 essay How the Cyber-Elephant got its ARM by Max Wang gives a lot of detail in how HHVM was ported to ARM. HHVM had originally targeted Intel systems only, and the team rearchitected the just-in-time compiler to emit a stream of symbols that could be easily handled by not only an x86 back end but also ARM and Power systems.
GNU Parallel is designed to support parallel computation on multicore machines via the Unix command line. As a drop-in replacement for
xargs, it makes it easy to execute a series of commands each on their own processor from a pipeline.
If your task responds to “embarrassingly easy” parallelism, GNU Parallel is a very straightforward way to keep a lot of cores running. This is a good addition to your toolkit on a system like the 96-core Packet Type 2A system where you might easily improve simple parallel tasks manyfold.
The GNU Parallel paper describing its motivation and operations is O. Tange (2011): GNU Parallel – The Command-Line Power Tool, ;login: The USENIX Magazine, February 2011:42-47.
FFmpeg is a video processing command-line program and set of libraries. It handles a variety of video and audio formats, and has been developed since the year 2000 in fast C and assembly code, including ARM64 assembly for performance. FFmpeg is capable of applications such as transcoding from one video file format to another, extracting an audio track from a video file, adding subtitles to video, and many more video and audio transformations limited only by your imagination and ability to construct a command line suitable for expressing your task.
ffmpeg version 2.8.11-0ubuntu0.16.04.1 is provided on Ubuntu 16.04 LTS for ARM. The latest development release is 3.3.1, provided online through multiple git repositories including the FFmpeg repository on Github.
The Firefly-RK3399 is a six-core Armv8 single-board computer that was funded by a Kickstarter campaign that launched in December 2016.
The project raised over $60,000 from more than 200 backers, and is now available from Firefly for a list price of $199.00.
Featuring a Rockchip RK3399 SoC chipset at its core, the Firefly-RK3399 advertises compatibility with Ubuntu 16.04 and Android. The six-core system has two Cortex-A72 high-performance cores and four Cortex-A53 cores. Hardware on board includes a ARM Mali-T864 GPU, with the system advertised as suitable for computer vision, machine learning, and 4K 3D rendering.
Produced in Ann Arbor, Michigan. Coffee from Roos Roast. Quiet places to work provided by the Ann Arbor District Library.