I am having a bit of a problem wraping my head around the whole resource reservations when it comes to CPUs and resource pools and what VMware is doing here basing it on Ghz. Memory is straight forward because you have certian amount and can allocated out of that until its used up but CPUs is hard to grasp since only one process can allocate at the time even if only 100Mhz the rest is not used.
The CPU has two areas of concer as i see it "the clock speed known as Ghz" and "core schdule". Lets say you have 4 core CPU with 4 Ghz for simplicity. And i create two resource pools one with 3Ghz and other 1Ghz. How if any way does this affect scheduling of the cores? Thos wont make sure that 3 cores are always ready for one pool and one core for the other as i want. What's the point of the Ghz reservation unless you have massively high CPU consuming apps running? When the core is scheduled to execute and is busy executing even 100Mhz the rest of the core capability is wasted and can't be allocated to something else as two processes can't execute at same time! So to me ghz is irrelevant when thinking from that perspective. The part that really counts is core scheduling. This i found true even in my environment where i has 10% utalization yet system slooooooooow because of core overcommitment. I had 24vCPUs and assigned 38 to VMs. So even though the Ghz was at close to zero the VMs were sky high in "ready' time becasue there was no free core to execute in! Once that had core busy were using only little mghz but might as well have been using everything as its irrelevant. You see my point? I have over 50 clients and each one of them has 10% CPU utalization yet close to perofrmance limit becasue of core allocation not Ghz! If i add more VMs ready time sky rockets and performance drops like hell.
Scenario: I want to split the server half for lab and half for production and i set 3Ghz for Production and 1Ghz for Lab using same CPU specs (4Ghz 4 core). Well my lab can still be grinding my production server to a halt if its scheudled accross all cores but not high clock! Only way around that would be shares i think! but even then there is no way to guarantee cores for certain pool right? Like you can't create a Lab environment and make sure it never takes up more then certain amount of cores?