86

Given a windows 8 host system (Intel Core i5) and a Linux Fedora host, I would like to determine the optimal setting for the paravirtual interface.

Options are

  • none
  • Default
  • Legacy
  • minimal
  • Hyper-V
  • KVM

This page suggest the selection is only based on the guest system:

The biggest change in VirtualBox 5.0 is the introduction of paravirtualization support, bringing higher performance and time-keeping accuracy to supported guest operating systems (Hyper-V on Windows and KVM on Linux).

Is that correct?

94

The VirtualBox Manual, in the section titled Paravirtualization providers explains very clearly when each should be used (emphasis added):

  • Minimal: Announces the presence of a virtualized environment. Additionally, reports the TSC and APIC frequency to the guest operating system. This provider is mandatory for running any Mac OS X guests.

  • KVM: Presents a Linux KVM hypervisor interface which is recognized by Linux kernels starting with version 2.6.25. VirtualBox's implementation currently supports paravirtualized clocks and SMP spinlocks. This provider is recommended for Linux guests.

  • Hyper-V: Presents a Microsoft Hyper-V hypervisor interface which is recognized by Windows 7 and newer operating systems. VirtualBox's implementation currently supports paravirtualized clocks, APIC frequency reporting, guest debugging, guest crash reporting and relaxed timer checks. This provider is recommended for Windows guests.

The other options in the drop down do the following, as explained in the vboxmanage docs:

  • None: Specifying none explicitly turns off exposing any paravirtualization interface.

  • Default: The option default, will pick an appropriate interface depending on the guest OS type while starting the VM. This is the default option chosen while creating new VMs.

  • Legacy: The legacy option is chosen for VMs which were created with older VirtualBox versions and will pick a paravirtualization interface while starting the VM with VirtualBox 5.0 and newer.

  • 5
    Testing the KVM mode on my Ubuntu guest (using OSX as host), there were several time related problems, including the clock running about twice as slow. (I would set the time using ntp and in 10 minutes, the clock would be about 5 minutes delayed). The system was actually running everything slower, e.g. calling "sleep 5" would take way longer than 5 seconds. Currently I'm back on "Legacy"mode – JBernardo Jul 30 '15 at 19:10
  • @JBernardo Have you tested Default mode? – Léo Léopold Hertz 준영 Mar 25 '16 at 17:09
  • @LéoLéopoldHertz준영 Wouldn't Default mode be the same as the KVM that they already tried? – endolith May 3 '18 at 14:08
  • @JBernardo Normally should not use ntp inside a VM as it is synchronized with the host by the guest utilities. It might interfere. – Bachsau Dec 12 '18 at 1:21
9

Let's be more precise, because I had 4.3 migrated VMs, and those are "legacy", also I was interested in what setting to use, if I copy VM from Linux to Windows or vice versa:

--paravirtprovider none|default|legacy|minimal|hyperv|kvm: This setting specifies which paravirtualization interface to provide to the guest operating system.

  • Specifying none explicitly turns off exposing any paravirtualization interface.
  • The option default, will pick an appropriate interface depending on the guest OS type while starting the VM. This is the default option chosen while creating new VMs.
  • The legacy option is chosen for VMs which were created with older VirtualBox versions and will pick a paravirtualization interface while starting the VM with VirtualBox 5.0 and newer.
  • The minimal provider is mandatory for Mac OS X guests,
  • kvm - recommended for Linux guests
  • and hyperv - recommended for Windows guests

These options are explained in detail under Section 10.4, “Paravirtualization providers”.

From manual chapter 8.

So if you have upgraded VirtualBox to version 5 in Linux, just select kvm or default, start VM and check if it works correctly. If yes, just leave new setting.

If you migrating/moving VMs from Linux to Windows, I recommend to have default option, which makes automatic selection of best virtualization interface.

0

Just mu to cents, based on my own tests.

I had tested with a Windows 10 guest, running on a Windows 10 host and on a Linux host (or at least i had tried).

Not to mention, all virtual disks i use are inmutable (to ensure identical tests).

On windows 10 host, the guest runs normally (maybe a bit slow) but it boots and desktop is shown... paravirtualization is "default".

If i try same virtual machine on a Linux host with paravirtualization "default" the Windows 10 guest does not boot, it boots till dots move in a circle, then after a while it freezes... no way to reach login, neither desktop... remember all disks are inmutable.

But as soon as i set paravirtualization to "Heredada" (it is in Spanish) it boots and reach desktop, but sometimes (remember all disks are inmutable) it reboots, while other times i can use it (very, very slow)... so there must be a race contition somewhere, sinve with inmutable disks it does not allways do the same.

Ah, by the way, the Windows guest has no Internet access to be sure no internet connection can make things work different among cold boots.

Remember:

  • All disks are inmutable
  • All are reverted back on each cold boot
  • Windows guest does not allways work
  • With paravirtualization on "default" it does not even boot on Linux host, but boots well on Windows Host.
  • With paravirtualization on "Heredada" it does boot on Linux host (but it is not allways stable to let you use it)

I had also tried enabling/disabling 2D & 3D (also PAE/NX) because i want the same guest (virtual HDDs copied from one host to the other) be stable on two different hosts; also i want to be able to copy virtual HDDs from one host to another host after i make any update (before doing a cold boot, merge inmutable disk with its parent to make changes permanent and not get lost, aka using CloneVDI); i do not use snapshots, only inmutable disks.

That is what i had seen, i must do more tests with other paravirtualization values, just in case any one works better on the Linux host. I do not use MAC, nor OS/2, only Windows host ans Linux host (both host are on different physical hardware).

VERSION: Windows 10 guest is HOME 64Bits and version is 1809.17763.379

Hope this help others, test & test & retest (better with inmutable disks) any combination of values till find one combination that works, it seems that is the only way to make a guest run on different kind of hosts (Windows/Linux) !!!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.