Just think about this for a moment – it’s just you and your workstation. No contention. Introduce a server which hosts one or many applications and can be accessed by one or many users simultaneously and you are likely to get contention. Where contention exists you get queuing and inevitably response times will suffer.
With UNIX/Linux virtualization we have two main concerns:
1) Will virtual systems hosted on shared hardware (via Hypervisor) will impact one another?
2) What additional overhead and impact on performance does requesting hardware resources through a hypervisor cost?
To answer question 1, we have to understand what resources each virtual machine is requesting at the same time. So it's prudent to produce performance reports for each hosted VM.
Do they conflict with each other or complement each other? There are virtualization tools that have been developed to keep VMs apart if they conflict and together if they complement to improve performance.
To answer question 2, initial software virtualization techniques such as Binary Translation allowed for existing x86 operating systems to be virtualized. The hardware call request had to go via the hypervisor thus adding on an additional overhead, somewhere between 10-20% on average. As time progressed a combination of hardware virtualization and paravirtualized operating systems have reduced overhead and improved virtualized application response times.
Paravirtualization is built in to all recent Linux kernels. For those that don't know what paravirtualization is it's a virtualization technique that presents a software interface to VMs that is similar, but not identical to that of the underlying hardware. The intention is to reduce the guest's execution time spent performing operations which are substantially more difficult to run in a virtual environment compared to a non-virtualized environment. It provides specially defined 'hooks' to allow the VMs and underlying host to request and acknowledge these tasks, which would otherwise be executed in the virtual domain (where execution performance is worse). A successful paravirtualized platform may allow the virtual machine monitor (VMM) to be simpler (by relocating execution of critical tasks from the virtual domain to the host domain), and/or reduce the overall performance degradation of machine-execution inside the virtual-guest.
To produce and analyze the recommended performance reports we need to capture and store performance data and I'll be discussing this on Monday.
Sign up to our Community where you'll gain access to some great white papers and downloads of our webinars