Thats the tricky thing about CPU utilization. Looks fine on the surface, theres room to grow!
The CPU might not be that utilized, but if you have 50 VMs all vying for 2% CPU at the same time hey thats great 100% utilization! Nope! That 2% is going to go by so quickly for each VM, the actual utilization will be lower - but the CPU contention, where Ready Values come into play, has been pushed up big time.
A good comparison for management is a turnstile - you know the thing that counts people as they walk through and it flips over letting one person through at a time. When you have 8 of them, 8 people can go through immediately, 16 people with a little wait, 32 people some wait, 50 people, constantly in line? Considerable wait times, even if one lane speeds up and people move lanes and people move efficiently and share nicely, as one person exits, another replaces him. Its a FIFO-BIL - First In First Out - Back In Line :smileyhappy: The turnstile itself has to flip around, you can't piggyback :smileyhappy: That minor timeslice for the turnstile to accept another person could be considered the context switch event of the virtual world - it exists, its minor, but its part of the big picture.
You may also want to consider VDI guest OS optimization if you havn't already. http://www.brianmadden.com/blogs/ronoglesby/archive/2010/09/22/does-os-quot-tuning-quot-help-vdi-performance-part-1.aspx The article uses Windows 7 as the guest, but many of the same ideas, and services, are pretty much the same.
Good luck.