This is an extended edition of Works on Arm News, clocking in at about twice the length of the usual.

In this issue

  • Docker, Arm partner for containers everywhere
  • Dieter Reuter series on Docker on Jetson Nano
  • Getting started with the Jetson Nano (Hackster)
  • Google Coral Edge vs Jetson Nano for edge AI performance
  • cuDF, Jetson build attempt
  • Visual Studio Code for Windows 10 on Arm
  • Panfrost graphics in Linux 5.2 and support for the Rock960
  • Kaniko build system for arm64
  • Linux on DeX for Samsung Galaxy phones
  • NEMU, a cloud hypervisor based on QEMU
  • NetBSD for arm64 on Le Potato
  • k3os, a Kubernetes operating system
  • Kata Containers CI/CD setup includes Arm testing
  • Amazon EKS support for a1.* (arm64) instances

Docker, Arm partner for containers everywhere

Docker and Arm have announced a partnership aimed at delivering container based workloads everywhere, from cloud-based Arm servers to embedded Linux systems. Details of the partnership and what it means for actual Docker product offerings will be announced at Dockercon in San Francisco.

Dieter Reuter series on Docker on Jetson Nano

Dieter Reuter from Hypriot has a new Jetson Nano, and is going through the process of systematically documenting its use with Docker.

For Dockercon he has created a Hallway Track session, title is “Docker for ARM and IOT devices. I’ll show the brand new NVIDIA Jetson Nano” on Wednesday, May 1, 2019 at 3:00 pm. If you are in San Francisco for Dockercon you’ll want to see him there!

Getting started with the Jetson Nano (Hackster)

Alisdair Allan has a long, no-punches-pulled review of the Jetson Nano, focusing on the new user experience of setup. Alisdair is a command-line person, and provides a comprehensive walk-through from unboxing to setup to running some machine learning examples. He’s not fond of the Tegra’s L4T Linux distribution, writing:

… that isn’t any excuse for the awful state of their Linux distribution. The amount of pain it caused both during setup and getting things done was excessive. I don’t think I’ve struggled this hard with a Linux distribution to make it do what I want it to do in a good few years.

His recommendation to Nvidia? Make the introductory experience focus on tools that data scientists are familiar with – Python, Tensorflow, and Jupyter Notebooks – rather than C++ code examples.

Google Coral Edge vs Jetson Nano for edge AI performance

Sam Sterckval has been looking at edge AI performance and is testing out new platforms to compare against high performance systems. A few benchmarks compare Google’s Coral Edge AI USB device with the Jetson Nano from Nvidia. One of the best comparisons plugs the Coral into the Nano to take advantage of fast and inexpensive USB3 performance.

The benchmarks look at MobileNetV2, Keras, and Tensorflow. The Jetson Nano demonstrates a 75% power reduction with a 10% performance boost compared to an old i7-4840HQ (2014 Macbook Pro) without any change in source code. Even better results come from the Coral Edge USB stick, but Sam cautions that the slow USB2 performance of the Pi limits its performance when combined with that platform.

cuDF, Jetson build attempt

cuDF is a data frame package for the Python language that takes advantage of acceleration with CUDA GPU cores. Work is underway to document the build process on the Nvidia Jetson series, but there are a whole lot of dependencies to work your way through!

cuDF is based on the Apache Arrow project’s columnar memory format, and provides a pandas like familiar API for data scientists. Accelerate your workflows without going into the details of CUDA coding. It is part of the RAPIDS suite of open source software for GPU-accelerated data science and analytics.

Visual Studio Code for Windows 10 on Arm

I’m using the 32-bit x86 Windows build of VS Code, so it’s running emulated on my Windows 10 on Arm laptop. So far so good, though I’d much prefer a native version. This whole newsletter was written with VS Code, with the help of the vscode-markdownlint Markdown lint tool from David Anson.

The only glitch so far is that it didn’t work to create a terminal window until I followed instructions in a Github issue to set a flag; from then on, no problems.

Panfrost graphics in Linux 5.2 and support for the Rock960

Panfrost is an open source graphics driver for the Bifrost (Mali-G71) and Midgard (Mali-T600, Mali-T700, and Mali-T800) series of Arm Mali graphics coprocessors. The new driver has been added to the DRM-Next train until the Linux 5.2 kernel merge starts in May. It features basic OpenGL functionality, but no OpenCL or Vulkan API support.

Sahaj Sarup from 96Boards has tested out this driver, using the 96Boards Rock960 board. He provides detailed installation directions and a Youtube video as a proof of work during OpenHours episode 142.

Kaniko build system for arm64

Lisa Seelye has been porting the Tekton continuous delivery pipeline to arm64. Tekton is a Kubernetes based open source framework for CI/CD, originally part of the knative project but not spun out on its own.

Like many projects coming out of Google, Tekton has architectural assumptions and build configuration that are x86-first with minimal affordances provided at project launch time for multi-architecture and multi-platform support. Lisa has been systematically going through the code and build systems to identify container images and other components that need to be ported to arm64 to make this successful.

Linux on DeX for Samsung Galaxy phones

Samsung DeX turns flagship Samsung Galaxy smart phones into portable PCs, allowing them to run a modified Ubuntu 16.04 arm64 version and drive an HDMI screen via USB-C. The reviews make it clear that this distribution is aimed at developers and not gamers or browser users. Hardware supported is a Qualcomm Snapdragon 835 or better.

NEMU, a cloud hypervisor based on QEMU

NEMU is a fork of the QEMU hypervisor from Intel. It differs from QEMU in stripping away legacy components and focusing on the pieces needed to run modern cloud workloads. It supports only x86-64 and arm64 guests through a virt virtual machine that doesn’t attempt to mimic any existing hardware.

NEMU is closely tracking QEMU development, with a rebase on QEMU 4.0 in progress. If you’re currently using QEMU as a hypervisor but not going very far beyond a core set of features, NEMU is certainly worth a look.

NetBSD for arm64 on Le Potato

NetBSD is available for a number of single-board computers, newly including the Amlogic-based Le Potato.

k3os, a Kubernetes operating system

k3os is a minimal operating system designed to be just enough to run the Rancher k3s Kubernetes distribution. Like other container operating systems it is notable for its singular purpose and its small attack surface. One goal of the project is to enable things like operating system upgrades through the normal Kubernetes processes, rather than having a separate out-of-band OS management layer.

The project is still in early stages, so if you have input on the direction you’d like to see it take now is the time to engage. The promise is that it will support both x86 and Arm systems, though some of the smallest single-board computers have awkward boot sequences and kernel dependencies on proprietary software that may limit support.

Kata Containers CI/CD setup includes Arm testing

Kata Containers is a container runtime for Kubernetes. It aims to provide process isolation by executing code in extremely lightweight VM’s.

Kata did a writeup of their extensive test and validation process, which runs across multiple clouds and architectures to validate and check correct behavior. This includes testing on every check-in on an arm64 server in the Works on Arm cluster.

Though Kata has widespread testing of its core components across multiple platforms, there is still work to be done on packaging, as it has been noted that there is currently no binary distribution of Kata for arm64 in the main repo. This makes installation by end users more of a challenge than it should be at the moment.

Amazon EKS support for a1.* (arm64) instances

Amazon has announced support of its EKS Kubernetes service on its a1.* arm64 instances.