I have an application that does a large number of inserts into a SQL 2005 database.
If I run that application against a SQL 2005 database installed in the host OS of a Dell 2950, it takes about 3 minutes to run.
If I run the exact same application against a SQL 2005 database installed on a VM hosted on the same Dell 2950, it takes about 8 minutes to run.
The difference is the Disk Queue Length.
When running against the database on the physical machine, the Disk Queue Length on the 2950 host OS remains pretty close to zero.
When running against the database on the VM, the Disk Queue Length on the 2950 host OS goes significantly higher.
Same underlying physical hardware, same application performing the same operations against an identical database and yet much different performance depending on whether the database is in a VM or not in a VM.
The base operating system of the host machine is Windows Server 2003 Enterprise. The host machine has 16gb of ram.
The guest OS is also Windows Server 2003 Enterprise with 4 gb of ram.
In both cases I set the available memory in SQL Server to 3gb of ram.
In both cases, SQL Server only uses 1.9gb of ram.
Ram is not the bottleneck or the issue. Neither is CPU usage. In both cases, CPU usage is about 25% throughout the test.
The only thing that changes is Disk Queue Length, zero if not using a VM, signficantly greater than zero if using a VM.
Memory, CPU usage and Disk Queue Length all being measured on the host OS in both cases.
Is there a way to get the same performance from a SQL Server running on a VM that I can get from a SQL Server running on the host?
Thanks.
Start Free Trial