I wrote an application a few months ago, and was hosting it out of our offices on a workstation with an Intel Core 2 Quad Q8200 @ 2.33GHz, 8 GB RAM, Windows Server 2008 Enterprise and SQL Server 2008 Enterprise. Both the webserver and database server were run on the same machine.

We had a huge influx in traffic, and moved ClubUptime.com, and got 2 of their top teir windows VMs. The Database server runs Windows 2008 R2 Standard and SQL Server 2008 R2 Web on 8 GB ram and an Intel Xeon e5620 @ 2.40GHz.

Ever since switching, the database which used to run at around 400MB in RAM now runs at around 4-7GB, and there haven't been any changes to it (other than a couple columns here and there). Our traffic has quadrupled, and our DB is 6 GB on disk, why would SQL server take up 7 GB if the DB is only 6. And why would it be storing the ENTIRE database in memory?

Another thing is why growing 4 times in size did the database's memory footprint grow 12 times?

Last question: Why does the CPU peg at 100% now where it didn't before? The design is simple, VERY few joins, NO subqueries. I am just at a loss, unless it is the SQL server edition, or the fact that I moved from real hardware to a VM.


SQL Server will use as much memory as it can so I wouldn't lose too much sleep over the memory footprint unless there are other issues. If it can it will store the whole thing, RAM is always faster than disk and if it's not being used for anything else then why not.

Running SQL on a VM can be problematic. It works fine but there are performance hits with virtualizing and as many people have commented here SQL is affected by this more significantly than most other applications. A lot depends on your VM instance too - if the Hypervisor is a VMware vSphere host then it will perform better with equivalent real resources than Xen, if it is backed by Hyper-V and contention rates are low (as in very, very few VM's on the host) then it can be quite good. The only systems I've ever had to de-virtualize have all been SQL servers.

You don't specify how many virtual CPU's they are giving you for your VM, I very much doubt that you are getting all 8 cores that the Xeon 5620 can present to a VM. Even if you are this may not be optimal. Overall a VM with 4 vCPU's on that platform should be able to match your prior physical platform assuming the Xeon 5620 is about 30% better clock for clock than the Core 2 Quad you came from but whether it actually does depends on the underlying Hypervisor, the host system setup and how much contention there is from other VM's hosted on the same Hypervisor.

You can't generally trust the performance counters within a VM, or at least you can't trust them to be telling you everything. You really need to get a view of the performance from the perspective of the Hypervisor in order to tell if your VM really is hitting 100% of capacity of the real CPU's on the system.

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.