So today I had a customer complain of some slow performance on his vms.
His cluster was not over subscribed on its resources but I saw his database vms having ready times of about 80ms.
I quickly concluded that it was high CPU Ready time. Oh and by the way, his vm was 6vcpu. But I stood corrected when I saw what esxtop was showing.
Esxtop was constantly showing a ready time of about %0.3 or around that number. I was puzzled.
So whats really going on? Let me explain.
Vcenter polls real time data for every 20 seconds. And the right way to convert milliseconds to % is as follows,
Lets assume you are seeing 80ms of Ready time. Now 80/20,000 = 0.004 = 0.4% of cpu ready. So this means the vm is waiting for the cpu 0.4% of its time. Now remember that the cpu ready time threshold is 10% so this is pretty low.
This varies with the number of vcpus assigned to the vm. In this case, my customer was having the same vm show about 8000ms ready time for the past week.
That means, 8000/20,000 = 0.4 = 40% which means his vm was experiencing 40% ready which isn’t good. Now the real ready time per cpu will be 40/6 (because he has 6 vcpu) = 6.66% per vcpu.
I think 5% ready time is a sign to look for trouble while 10% is for sure trouble.