I'd like to preface this question by stating that I'm a newbie to the realm of VMware, so I'm hoping that someone can point me in the right direction. I work for an architecture firm, and we're looking at the VDI environment to help take some strain off our rendering environment. We'll be using a Dell T5400 workstation that is configured with dual intel x5450 xeon processors. We've configured ESX server, and have installed XP x64 as our test platform (we need 64 bit so that we can access more than 4G of ram for Revit). HERE'S THE PROBLEM: ESX server sees all 8 cores on the 2 seperate Xeon processors, but when setting up Windows, XP only sees 2 cores (instead of 8). According to all the reading I've been doing, if XP was installed directly on top of the hardware, it would see all 8 cores, but for some reason, when running it on top of ESX, it only sees 2 cores (as 2 logical processors). Any ideas?
Moved to ESX 3.5 forum.
Welcome to the fun world of virtualization - now to answer your question - No, the operating system will only see the number of virtual cpus you assign to the vm - so if you assign only two virtual cpus it will only see two virtual cpus - now where do those vcpus run - they can run on any single core - so your vm running Revit will only run on 2 out of the eight total cores - the most virtual cpus you can assign will be 4 -
And I guess that's where I'm failing to see the logic. Why, if the OS can handle 2 processors with 4 cores each, does ESX only allow me to assign 2 cores to each virtual machine? I understand the limitations of Windows (2 physical processors, limited cores per processor depending on version), but why does VMware limit me to 2 cores per host? Shouldn't VMware give me as many options as my OS does? Also, the maximum number of vcpu's that I can assign seems to be 2, not 4?
This is where you really need to break your old habits of looking at a VM in ESX as a physical machine. Throwing as many vCPU's and memory as you want at a VM actually will most likely hurt the performance (99% of the time). So you're running ESX using duel quad core boxes, that means you have 8 CPU cores that ESX sees and will schedule. 8 physical cores = 8 vCPU that can be used at any one point.
Lets say you have VM1, which has 1 vCPU assigned to it. For every time that VM needs to send a CPU instruction set, it only has to wait for 1 core to be open and available. So really it'll have no delay when it wants CPU resources. Now, if you have VM2 which has 2 vCPUs assigned, then when it wants to send a CPU instruction set, even if it is the smallest thing, it still has to wait for 2 physical cpu cores to be free before it will send it through. So if you have multiple VMs with 2/4 vCPUs assigned to them, you can see that if all of them have to wait for 2 or 4 cores to be available (doing nothing) before they can utilize them, you could have a lot of slow VMs on your network.
Overall, best practice is to start with only 1 vCPU per VM, and if you really need that second vCPU, or you are sure the software on that server utilizes multiple CPUs (like citrix) add that second vCPU in there. You'll find you have better performance with 1 vCPU anyway.
Hope that helped a little and welcome to the virtualization world
Thanks for the response. Your example was helpful, and I'm hoping that maybe with a little more detail on my end, you can help me through my situation. Our entire goal for this virtual desktop environment is to give our users limited access to an extremely powerful machine to complete architectural renderings on. The renderings are completed via a program called Revit. Revit is a beast. When rendering our projects, Revit currently maxes out a 4 core xeon workstation for anywhere from between 5-12 hours depending on the level of detail that is selected. As this makes the workstation unusable for all practical purposes, we turned to VMware as a possible solution. We assumed we could create a pool of virtual workstations, and give each workstation unlimited access to the resources available on the ESX Server. If only 1 user was logged in to a virtual workstation, they would have access to all the available resources (8 cores, 16G of RAM, etc). If 2 users were logged on, the resources would scale, and they'd each get 4 cores and 8G, and so on. Apparently that isn't the case, as my initial message indicated, so my question becomes "Where do we go from here?" Is there a solution from VMware that will meet our needs, or are we outside the pervue of what VMware was intended for?
As you've gathered, VMWare isn't the right solution for what you are trying to accomplish. Really what you are trying to do is grid computing.
There aren't yet any solutions out there that match your exact requirements (virtual desktops with cluster level resources). In a couple years companies like 3Leaf will have such setups, but not yet.
Your best bet at this time is tofigure out a way to get your renderings to run on a farm of some sort, or just buy your people a bunch of really fast, really bigboxes to RDP into to run their renders.
First off VDI isn't my thing, so I couldn't even start to go there But I agree with Matt, what you're looking to do I don't believe ESX is built for. The price of desktop quad core processors is coming down so the RDP into beefy boxes to render those items is a decent idea.
Wish I could be more of help to ya
Thanks alot everyone. I had a creeping feeling that what we were trying to do was outside of what VMware was designed for. We've looked into grid computing, but the current solutions for Revit are sorely lacking. RDP (actually VNC) might be what we have to go with. Again, I really appreciate all the fast replies and great knowledge. If I ever run into any ESX server problems, I know where to turn.