Skip to content

QEMU MicroVM: suspiciously bad performance #1

@dimakuv

Description

@dimakuv

Thanks for the interesting paper! I read it from here: https://arxiv.org/ftp/arxiv/papers/2110/2110.11462.pdf

  • First, I couldn't find in the paper where you report the exact versions/commits you used in the evaluation? At least, for QEMU, I couldn't find the exact version used.

  • Second, you have this finding: " Boot time depends heavily on the used machine model, as QEMU with the µVM machine model is (unexpectedly) the slowest out of all." (µVM = microvm machine model)

Looking at your script, I see this qemu-with-microvm command line:

measure-endtoend result-uvm "qemu-system-x86_64 -m 256M -smp 1 --nographic -kernel /path/to/kernel.elf -append --nopci -append --console=serial -M microvm,x-option-roms=off,pit=off,pic=off,rtc=off -nodefaults -no-user-config -no-reboot -global virtio-mmio.force-legacy=off -device virtio-blk-device,id=blk0,drive=hd0,scsi=off -drive file=/path/to/usr.img,if=none,id=hd0,cache=none,aio=native -netdev user,id=un0,net=192.168.122.0/24,host=192.168.122.1 -device virtio-net-device,netdev=un0 -enable-kvm -cpu host,+x2apic -serial stdio"

ACPI is enabled by default in microvm machine model, and when it's enabled QEMU uses SeaBIOS. When ACPI is disabled, QEMU uses qBoot (supposedly much faster than SeaBIOS). See e.g. https://www.kraxel.org/blog/2020/10/qemu-microvm-acpi/, section "ACPI support for microvm" for details on enable/disable ACPI.

qBoot can supposedly boot a VM in 40ms: https://lwn.net/Articles/645455/ ("Enter qboot, a minimal x86 firmware that runs on QEMU and, together with a slimmed-down QEMU configuration, boots a virtual machine in 40 milliseconds...")

Did you try the qemu -no-acpi experiment? It seems that you imply that QEMU always uses qBoot in your experiments, which doesn't seem to be true.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions