Virtual machines with KVM on ARM64 server

Host machine for this test is a 80 core server with Ampere ® Altra ® Q80-30 CPU and 128GB ECC RAM. It runs latest Debian12, storage is a pair of SSD drives in software RAID-1.

Basic questions

Question: is it possible to run virtual machines on Altra Q80-30 ARM64 CPU?
Answer: yes, it is possible.

Question: can I run emulate 32-bit or 64-bit CPU for virtual machines on a host server with ARM64 CPU?
Answer: no, unfortunately it is not possible. You can only run other ARM64 architecture based distributions, mainly Linux based.

Question: can I run PHP on ARM64 server?
Answer: yes, absolutely! For PHP it all depends on PHP’s binary, that can be compiled or already comes precompiled with ARM64 compiler. PHP itself is arch-independent.

Question: how much slower is VM, that runs through KVM?
Answer: CPU benchmark with sysbench shows minor performance degrade, see screenshots

Conclusion – I have executed benchmark on Debian 12 using sysbench tool with 4 threads for 60 seconds and performance difference is marginal – just mere 0.2%.

Cockpit, QEMU, KVM on ARM64 host

For some reason, creating and running virtual machine on this server was not as straight forward, as I am used to on other, more commong x64 CPUs. Even though I used precompiled packages from official Debian repostory, I still had few issues.

Installing cockpit, kvm and qemu instructions are the same, as for any other host/server – just use apt repository hosted images.

Problem 1: failed to define domain – unsupported configuration: ACPI requires UEFI on this architecture

Solution – installed the following packages: qemu-efi-aarch64 qemu-efi-arm qemu-efi – remember to restart cockpit after installation.

apt install qemu-efi-aarch64 qemu-efi-arm qemu-efi

Problem 2: installation did not want to boot from mounted ISO file, in fact – boot manager inside virtual machine did not even see CDROM.

I don’t know, what is the reason for this, but I have found the following solution:

  • install and start VM and then force-shutdown it.
  • change bus type for CDROM from SCSI to USB, save it.
  • start VM once again and select USB UEFI device in Boot Manager
  • install OS
  • after successful installation shutdown VM and remove CDROM from the VM configuration
list of disks from VM – change CDROM bus type
Set BUS type to USB and save
Boot Manager with USB CDROM. Select it and hit ENTER to boot from it.

If you have any questions or need help – please feel free to contact me.

Last updated: 27.august 2023

Leave a Reply

Your email address will not be published. Required fields are marked *