I spent a few days comparing various Hypervisors under the same workload and on the same hardware. This is a very specific workload and results might be different when testing oher workloads.

I wanted to share it here, because many of us run very modest Hardware and getting the most out of it is probably something others are interested in, too. I wanted to share it also because maybe someone finds a flaw in the configurations I ran, which might boost things up.

If you do not want to go to the post / read all of that, the very quick summary is, that XCP-ng was the quickest and KVM the slowest. There is also a summary at the bottom of the post with some graphs if that interests you. For everyone else who reads the whole post, I hope it gives some useful insights for your self-hosting endeavours.

  • Voroxpete@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    7
    ·
    edit-2
    4 days ago

    What are your disk settings for the KVM environments? We use KVM at work and found that the default configuration loses you a lot of performance on disk operations.

    Switching from SATA to SCSI driver, and then enabling queues (set the number equal to your number of cores) dramatically speeds up all disk operations, large and small.

    On mobile right now but I’ll try to add some links to the KVM docs later.

    • buedi@feddit.orgOP
      link
      fedilink
      English
      arrow-up
      4
      ·
      edit-2
      4 days ago

      That’s a very good question. The testsystem is running Apache Cloudstack with KVM at the moment and I have yet to figure out how to see which Disk / Controller mode the VM is using. I will dig a bit to see if I can find out. Would be interesting if it is not SCSI to re-run the tests.

      Edit: I did a ‘virsh dumpxml <vmname>’ and the Disk Part looks like this:

        <devices>
          <emulator>/usr/bin/qemu-system-x86_64</emulator>
          <disk type='file' device='disk'>
            <driver name='qemu' type='qcow2' cache='none'/>
            <source file='/mnt/0b89f7ac-67a7-3790-9f49-ad66af4319c5/8d68ee83-940d-4b68-8b28-3cc952b45cb6' index='2'/>
            <backingStore/>
            <target dev='sda' bus='sata'/>
            <serial>8d68ee83940d4b688b28</serial>
            <alias name='sata0-0-0'/>
            <address type='drive' controller='0' bus='0' target='0' unit='0'/>
          </disk>
      

      It is SATA… now I need to figure out how to change that configuration ;-)