Friday, December 26, 2008

Death to the Hypervisors as we know them

In next few years, hypervisors will be very thin due to Multicore processors and SR-IOV features in the IO devices.

Let us examine the hypervisors role today:

  • Scheduling of multiple virtual images on a single or dual processors.  That is, multiple virtual images can be run in one CPU.
    • Linux based hypervisors takes advantage of Linux scheduler to schedule different virtual images by running them as user processes of the Linux operating system.  Some hypervisors have modified the Linux kernel scheduler to provide fair and configured share of the CPU across multiple virtual images.
  • Virtualization of  IO devices - It is done in following way:
    •  Hypervisor owns the physical device.
    •  Based on defined criteria (eg:  VLAN in case of Ethernet) it exposes multiple virtual drivers. 
    • Provide Paravirtual capability such that VM treat the virtual IO device as its physical device.
    • Data movement happens through the hypervisor between physical device and VMs.
  • Dedicated IO devices to individual VMs:  Hypervisor does not pay much role in this except for allocation/de-allocation of IO devices to VMs and ensure that two or more VMs don't use the same device.
  • Management of Virtual Images:  Hypervisors always come with some management software which does 
    • Bring up/down the Virtual Images.
    • Allocation of virtual IO devices to different Virtual images.
    • Monitoring

Trends in Multicore technology and SR-IOV would reduce the value of hypervisors. Majority of hypervisor functionality is going into the hardware either in Multicore processors or in IO devices.

  • Scheduling:  With multiple cores in the chip, there is no need for running multiple VMs in one single processor.  Eight core processors will be common.  Eight different virtual images can be run on these Multicore processors. So scheduling is effectively will disappear from the Hypervisor.  Running multiple images on a single processor does not perform well anyway.  I believe with Multicore processors, only one VM would be run for performance reasons.
  • Driver Demultiplexing will also go away from the Hypervisors as SR-IOV is going to be popular. PCI SR-IOV provides multiple virtual functions within one single physical function.  Each virtual function can be assigned to individual VMs and these VMs can get hold of data directly from the hardware.  This not only simplifies the hypervisor dramatically, but also increases the performance by avoiding hypervisor layer in data movement.
  • As far as Dedicated IO is concerned, Hypervisors are not doing anything much anyway.
What is it Hypevisor needs to do in future ideal world:   Just the Management. 

Comments?