How much overhead does x86/x64 virtualization (I'll probably be using VirtualBox, possbly VMWare, definitely not paravirtualization) have for each of the following operations a Win64 host and Linux64 guest using Intel hardware virtualization?
Purely CPU-bound, user mode 64-bit code
Purely CPU-bound, user mode 32-bit code
File I/O to the hard drive (I care mostly about throughput, not latency)
Network I/O
Thread synchronization primitives (mutexes, semaphores, condition variables)
Thread context switches
Atomic operations (using the
lock
prefix, things like compare-and-swap)
I'm primarily interested in the hardware assisted x64 case (both Intel and AMD) but wouldn't mind hearing about the unassisted binary translation and x86 (i.e. 32-bit host and guest) cases, too. I'm not interested in paravirtualization.