I have an ESX 3.5 host used to test big compute jobs. Typically this will have only one or two VM's running simultaneously. The client wants to give those two VM's as much CPU as possible, since that is the resource constraint.
Each VM will use close to 100% of whatever CPU resources are allocated to it.
My question is, what's the most efficient way to allocate CPU, and how can I figure out how much CPU I need to leave for the ESX overhead. I'd like to be able to run 2 VM's at once, but obviously I can't give each 4 procs and have anything left to run the ESX infrastructure.
With one VM running, I see 4 proc's at 100% utilization, and the other 4 basically idling along. If I run both VM's I get cpu contention, lots of swap to disk and memory usage.
I don't see that different shares would be useful. Maybe CPU affinity for each? But can I do that with 4 procs each if the SC wants part of core 1 for itself?
Your suggestions much appreciated.
If you found this information useful, please consider awarding points for "Correct" or "Helpful". Thanks!!!
What guest os is this? on what hw?
Number crunching is not normally recommended to run inside a virtualized environment even though it can be done. Since it in your case starts swapping it is a sign that your host doesn't have enough ram to host both of these VMs simultaneously.
One box is Red Hat Linux, the other is Windows XP Pro. There is a third, low power Windows machine that is sometimes running on that host. I think I will have to exsperiment, and setting Affinity sounds like one option. As long as I have enough memory reserved for the vmkernel, I suppose I can allocate all 8 cpu's
Have you tried to increase the service console cpu reservation (233 MHz by default in the system resources allocation section of the esx configuration)? That should give the service console enough of a cushion, and let you do what you need with the rest.