VMware Cloud Community
Apollos
Contributor
Contributor

Physical to Virtual Analysis Help

Hello everyone.

I have been tasked with creating a new virtualization standard for my company for some applications.  This is not a P2V but similar to capacity planning.  I have access to performance data and will be pulling from this.  Could I get some feedback on the best way(s) to approach interpretting this data?  And if anyone knows of any tools that would automatically poll this for me that would be appreciated.

For example.  Here are the details for one physical server and the workload it is running:

IBM x3650 M2, 2 socket, 8 core, 58GB ram

2 x Intel E5540 @ 2.53GHz processors

MS SQL Server

MS 2008 R2 Enterprise

Pulling (Processor Time %) and (User Time %) for the last two weeks I am only seeing a spike at its busiest at 8%.

So that would be 8 cores * .08 = 0.64.

 
Is it only using a little over half of one processor core?  Am I reading this correctly?

Or would it be 0.64% of each core and would total 5.12 % of a single CPU??? [0.64 * 8 cores]

To be safe I would probably recommend 2 vCPUs in VMware because this will be a SQL Server virtual machine.

Just wanted to check with you and see that I was applying the metrics correctly.

Thank-you for your feedback!

0 Kudos
7 Replies
Davek0974
Contributor
Contributor

I have asked similar questions recently, the one reply that always comes back, and one which i have adopted now, is to always start off with minimal vcpu and work upwards based on monitoring of the vcpu workload.

I too have a server that runs sql, active directory, exchange and file/print services and its only scraping maybe a quarter of one vcpu capacity, i had moved it from physical that had 4 cores to virtual so i gave it 4 cores too, but it works totally different in a virtual world and i could easily run on one core, i will be taking it down to two cores soon.

I also have 2008r2 running remote desktops, i gave that four cores expecting a heavy workload, that too is barely using one core, i will be taking that down soon as well.

I had two XP por desktop vms, i gave them both two cores expecting a performance boost but after asking here i have taken them down to one core each and performance has improved!

May or may not help you but its what i have discovered so far, its easier to add than take away.

Apollos
Contributor
Contributor

Thanks Dave.

Great feedback.  Thank-you.  That's the sort of stuff I'm expecting to see.  With most users and applicaiton teams though they're going to want hard data.  So I'm also looking for how to analyze this beast and show beyond the shadow of a doubt what resources they're actually using.

I can take a good healthy stab first go round and always adjust like you're doing by removing or adding vCPUs once it's all virtualized.

Thank-you!

0 Kudos
Davek0974
Contributor
Contributor

excellent, i have been told that some os's dont like going down to one vcpu as it upsets the HAL or something, im still researching that one, which is why i am only taking my servers down to two minimum at present.

If they want reports, i would give them one vcpu and then let them see the usage graphs after  a week or so of average use, if their vcpus are hitting 80-90% usage then give them another, as it is, i cant get my vcpus to register more than a minimal percentage of workload.

Ram on the other hand is maxed out and i need to add some more, i have 24gb running five vms, i will be adding another 8 soon.

Nikhil_Patwa
Expert
Expert

Hello,

I have read some vendor documents on running their application in virtual environments and they say not to have too many vCPUs allocated to virtual machines as this hinders in performance. I agree on starting with less vCPUs and monitoring the performance, if your VM continously shows mor than 80% CPU utilization than think of adding more vCPUs - a practise I always follow in adding vCPUs to VM is multiple of 2 i.e always add 2 vCPUs and not having ODD number of vCPUs running in your VM

Hope this information is useful

Nikhil

0 Kudos
golddiggie
Champion
Champion

General 'rule of thumb' when creating new VM's and/or performing P2V conversions, is to give it the least amount of host resources needed to perform properly. With new VM's, this is very easy. For example, any non-multithreading application servers get a single vCPU and the memory they NEED to do the job. Enable hot add on both CPU and Memory resources so that you can increase them on the fly (100% supported with Server 2008, not 100% with 2003). For any mutithreading application server, start with 2 vCPU's allocated and follow the same as above.

There are additional things you need to look at when converting from physical to virtual. For one thing, what's the generation difference between the current server and the ESXi host server? If you're going form the M2 server to either a M3 or M4, it's a good amount. With that being the case, the lower vCPU count will have more power than the old server did (same count, or even with more CPU's). You'll also want to remove any ghost hardware upon completion of the conversion (there's a kb article from VMware on this, as well as how to get things shown on the Microsoft kb site). You'll also want to keep an eye on the CPU resources on the new VMs. Watch for CPU ready numbers/percentages getting too high. There's an alert/alarm you can set for this, so you'll be notified for. You'll most often see CPU Ready stats increase when you have too much vCPUs allocated to a VM.

If you're working with a decent VMware partner, see if they can run the capacity planning tool on your environment. That will give you more hard numbers on how to configure the servers once virtualized. It could also be the information you need to request the proper server spec, and numbers, to do the job. I've yet to have that run in any environment I've administrated/built, but they really haven't needed it. Plus, I know (from experience, and education) how to size things within a decent margin. I've also had other tools to help me to keep an eye on resources, as they're used up, so that I can try to stay ahead of consumption. That could quickly become your next 'big issue'... Most of the time, you'll run short on storage (for VM's) first, then memory long before CPU resources go into short supply.

BTW, I would wait until you actually get alerts on VM's, or performance complaints, before tossing more vCPU's at a VM. There are plenty of servers that will show 100% CPU resources used, but don't throw out alarms/alerts from within vCenter and they don't show any performance loss. One such case is SQL. SQL will grab all the memory you let it (up to 100%) and CPU resources (also up to 100%) and be in a 'green' state.

0 Kudos
Apollos
Contributor
Contributor

Thanks Golddiggie.

The hardware generation comment is what i'm using with the application team now, i.e. going from an M2 to an M4 / Sandybridge they are going to see a huge performance boost anyway.

I'm not doing a P2V so don't have to worry about ghost hardware.  I have lots of existing metrics to pull from and am looking to start with just paper metrics based on existing physical performance, then tweak based on the first few deployments.

We're in the VMware TAP program so I've got a few questions out to VMware in regards to this as well.

The old Guided Consolidation tool for vCenter might help with some of this but they have discontinued it for vSphere 5.  I still have some vCenter 4 servers in my existing data center and lab so might give that a try to see how it compares with what I'm manually doing.

Thanks for the heads up on the alerts.  When I virtualized vCenter I set a cap on SQL so that it would only use so much physical ram of the VM.  That way I could leave some overhead for the OS.  I may think about doing something similar or recommending something similar to the application team.

Thanks for your feedback.

0 Kudos
golddiggie
Champion
Champion

Whenever I set up a vCenter Server, I place the database on an actual SQL server (another VM most of the time). I don't want SQL loads/tasks sucking up the resources for vCenter. This also allows me to make the vCenter Server leaner. I don't like SQL Express since I had issues with the 2005 release (4GB db limit hosed a configuration on me). I know that's changed with later releases, but if you have a SQL server already in place, why not use it? Adding another db to the configuration won't take up much for resources on a SQL server. Adding SQL to a vCenter Server, IMO/IME takes up more resources (when you compare).

0 Kudos