Who is this for?

This is an introductory topic for software developers, DevOps engineers, and cloud architects looking to migrate their Golang (Go) applications from x86_64 to high-performance Arm-based Azure Cobalt 100 virtual machines (VMs) for improved cost efficiency and performance.

What will you learn?

Upon completion of this Learning Path, you will be able to:

  • Provision an Azure Arm64-based VM using the Azure portal, with Ubuntu Pro 24.04 LTS as the base image.
  • Deploy Golang on an Arm64-based VM running Ubuntu Pro 24.04 LTS.
  • Perform Golang baseline testing and benchmarking on both x86_64 and Arm64 VMs.

Prerequisites

Before starting, you will need the following:

  • A Microsoft Azure account with access to Azure Cobalt 100 Arm-based instances (Dpsv6-series)
  • Basic familiarity with the Go programming language and cloud deployment practices
  • Understanding of Linux command line and virtual machine management

Summary

AI-assisted

This summary was drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
You’ll provision an Azure Cobalt 100-based Arm64 VM, install Go on Ubuntu Pro, and validate the environment with a small web application. First, you’ll compile and serve a styled HTML page, then use Go’s built-in benchmarks to measure latency and memory allocation. The workflow gives you baseline metrics for comparing Arm64 and x86_64 systems.

Frequently asked questions

AI-assisted

These FAQs were drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
Which VM sizes are used for the Arm64 and x86-64 comparison?
Use D4ps_v6 from the Dpsv6 series for the Arm64 benchmark and D4s_v6 for the x86-64 comparison, and use Ubuntu Pro 24.04 LTS for both benchmark environments.
How do I make the Go web server reachable over HTTP?
Allow HTTP traffic through Ubuntu’s UFW firewall with sudo ufw allow 80/tcp, then enable UFW with sudo ufw enable. Confirm the rule with sudo ufw status.
Which Go distribution should I download for this VM?
Download the official Linux Arm64 (AArch64) Go distribution from go.dev. This build targets the Arm64 architecture used by Azure Cobalt 100.
How do I know my Go installation and environment are working before I continue?
Build and run the baseline web server in the goweb project. If the application starts and serves the HTML page that you created, the toolchain and networking are set up correctly.
Which options should I use to run the benchmarks, and what output should I expect?
Use go test -bench to run benchmarks and add -benchmem to include memory metrics. The output reports latency (ns/op) and, with -benchmem, memory per operation (B/op) and allocations (allocs/op).
Next