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
If you have any questions or need help – please feel free to contact me.
Last updated: 27.august 2023