I have an application that's running in both dedicated and virtual server environments (all Windows Server 2008 R2). Given nearly identical specifications of the servers (memory, processors), the application running on the virtual server drastically underperforms the one running on the dedicated server in terms of time to execute a complex task, taking 2 times as long to execute. During this task, the processor utilization of the virtual server continually runs at about 30% although it rarely goes above that level. The dedicated server processor utilization never goes above 5%. There's plenty of free memory on both servers and I don't see any disk read/write bottlenecks.

I want to be able to recommend that the virtual server needs more resources to improve performance but I'm not sure what those resources should be as it doesn't appear that anything is overtaxed based on the performance indicators.

Is there something I'm missing in terms of why my application runs so much slower on the virtual server given the same application?


One difference may be that in most hypervisors not all performance enhancing CPU features are made available to guests. (That is among other reasons because for instance live migration won't be successful when a guest is using CPU extensions on the old host that are not present on the target host.)

By default most hypervisors will only expose a limited but almost universally compatible subset of CPU features. If your application benefits from such, they may at the time of testing have only been available in your bare-metal server.

A good example of CPU features that could be missing in both KVM (Qemu) and Hyper-V guests with default settings are the AES and AES-NI instruction set that will significantly normally speed up AES encryption/decryption.


Only looking at system wide utilization of CPU/memory/disk will not solve many performance problems.

Profile the application to see what exactly is slow. On Windows, try Windows Performance Toolkit (fka Xperf). Data can be compared and visualized in many ways, including flame graphs.

Virtualized complicates things because it is possible to do silly things like oversubscribe or throttle a host's resources without it being obvious from the guest. Compare "dedicated server" versus virtualized with only one VM on the host using with all the host's resources. That is a more fair comparison to find any overhead of virtualization vs bare metal.

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.