As I mentioned on Wednesday there are 3 states which the VM can be in:
Threads – being processed and allocated to a thread.
Ready – in a ready state where they wish to process but aren’t able to.
Idle – where they exist but don’t need to be doing anything at this time.In the diagram below you can see that work has moved over the threads to be processed and there is some available headroom. Work that is waiting to be processed requires 2 CPU’s so is unable to fit and creates wasted space that we are unable to use at this time.
We need to remove a VM before we can put a 2 CPU VM on to a thread and remain 100% busy.
In the meantime other VM’s are coming along and we now have a 4vCPU VM accumulating Ready Time.
2 VM’s moves off but the 4vCPU VM waiting cannot move on as there are not enough vCPU’s available.
It has to wait and other work moves ahead of it to process.
Even when 3vCPU’s are available it is still unable to process and will be ‘queue jumped’ by other VM’s who require less vCPU’s.
Hopefully that is a clear illustration of why it makes sense to reduce contention by having as few vCPUs as possible in each VM.
Ready Time impacts on performance and needs to be monitored. On Monday I'll be dealing with Monitoring Memory.