WOA Issue 32
It’s Works on Arm News for the 50th week of…
Dieter Reuter and Peter Rossbach’s workshop on Learning Docker on a Raspberry Pi ARM-Cluster at DevOps Gathering in March 2017. Source code from the workshop is at workshop-raspberrypi-64bit-os on Github.
Packet will be at Red Hat Summit in the ARM Ecosystem Showcase on May 2-4 in Boston, MA.
MityLytics will be at Apache Big Data 2017, May 16-18 in Miami, with Manish Singh presenting on Cassandra on Armv8 – A Comparison with x86 and Other Processor Platforms.
The call for proposals deadline for ARM TechCon is May 19, for an event to be held October 24-26 in Santa Clara, CA.
Docker’s “moby” project has support for booting LinuxKit kernels on Packet’s Intel and ARM based infrastructure.
Highlighting work in progress where a modest amount of incremental effort is likely to result in software that Works on Arm. Each of these projects is available for you to contribute to.
Alex Ellis presented FAAS, Functions as a service, at DockerCon in Austin on April 20, 2017. His twelve minute demo won best of show for “cool hacks”, demonstrating scaling up “serverless” computing using Docker Swarm. See his repo on Github for code. There’s a bit of work left to port to arm64, mostly having to do with getting Docker up and running on the box in an automated way with a minimum of fuss. Alex is interested in contributions from the community, and notes that FaaS brings portability to serverless functions.
Go 1.8.1 was released on April 7, 2017. This is primarily a bug fix release, and it addresses a number of small issues on a variety of platforms. See the Go release history for details. Go 1.8.1 is avaiable on Ubuntu through the Go 1.X Packages PPA, and can be built from source on Ubuntu using the system Go which is 1.6.4 as a bootstrap. See worksonarm.com/golang for a full account.
The Adopt OpenJDK project is using infrastructure at Packet for continuous integration in building this open source Java runtime. They are working on a release for arm64, though it is not ready yet as of April 26, 2017.
Minio has developed sha256-simd, a package of Go code that’s a drop-in replacement for the Go system SHA256 crypto routines. Minio’s version is accelerated with assembly language code for ARM and Intel processors. These measured speed improvements range from 10x to 100x depending on the situation.
Several open source projects at Packet are using Jenkins for continuous integration and remote builds. If your project currently builds on ARM – or if you’d like it to – contact [email protected] to discuss your build needs.
If you’re writing code for Armv8, you’ll want to be aware of these issues that require special attention.
When the Go syscall interface was frozen, Armv8 systems did not support a dup2() system call. For portability, you’ll want to do as the CockroachDB team did and wrap those calls with conditional compiles to pick up dup3() instead. It turns out this is also necessary for Windows portability and log file handling. See PR 14441 for CockroachDB for details on implementing a portable “dupFD” interface.
Different Armv8 systems implement different system page sizes. Your code should determine the system page size at runtime, with a goal of being portable enough so that if it’s built on a system with 4K pages that it will run on a system with 64K pages. Versions of Go 1.7 and earlier have a bug in fetching the system page size, a problem that’s addressed in the Go 1.8 series. This issue is also being addressed by the .NET Core CLR team.
The contents of the
/proc/cpuinfo file system differ between ARM and Intel systems. If you are parsing that file to determine the number of cores on the machine, you may get incorrect results if you have not made that code more portable. In particular, this Juju bug, “manual: detection of cores fails on Packet Type 2A”, resulted in Juju (Canonical’s open source application modeling tool) finding only one core on Packet’s 96-core Type 2A system. The bug was fixed by Witold Krecicki for Juju 2.2 beta 3.
Edited with Github and vim on a MacBook Air in Ann Arbor, MI.