|
Performance
That is a tricky question that no one can answer with complete confidence. IT depends upon how each kind is implemented, how efficient each level (not only at doing its job, but at managing the jobs from the next layer), and other factors.
Ideally this should work in this order:
Full Virtualization = slow due to emulation overhead. (within 10-30% of native iron optimized, often much worse)
Para Virtualization = faster - because the 'guest' os has been modified to actually help the 'host' layer.
(within 5-10% of native iron)
Kernel Based Virtualization = Fastest - least overhead: (within 3% of native iron)
The REAL performance depends upon more factors, and there are multiple forms and implementations of each kind with different performance characteristics.
Unless there is some factor that makes performance absolutely critical, performance should not be the deciding factor. Within 30% of native iron means that it is economical to simply purchase faster iron to achieve the level of performance needed.
Full means you do not have to prep or change the guest OS, it runs EXACTLY as it would on native iron (just a bit slower).
Kernel based means you can only run guest and host that share the same kernel (Windows on Windows, Linux on Linux, etc). I have used it to run 60 or more APACHE/TOMCAT servers on a single box.
Paravirtualization splits the difference. You made enough modifications to the guest OS to make to cooperate with the host more efficiently and allow for more intimate communication that supported by full. You no longer can run an unmodified OS, but you CAN get better performance and are NOT restricted to using an OS with the same kernel.
For real fun: look up the effect of JIT code changes or recompilation during virtualization. Tricky and exciting stuff that can provide most of the speed and advantage of Para without requiring Para modifications!
Last edited by wpeckham; 02-01-2012 at 03:01 PM.
|