I was told that one can not expect reliable results using Task Manager inside a VM (Guest). If that is the case, how do you determine CPU and available RAM? (For example on one sql server, there was 8GB total RAM, 4GB used by SQL, 3GB by cache, other odds and ends and 0 bytes free RAM! Yet the server seems to perform well. Baffling)
P.S. In one article the author proposed measuring CPU and RAM usage by involving many specialized Hyper-V counters abd PerfMon....... Maybe accurate but is there a more practical way of determining CPU and RAM usage?
You can still use some "average utilization" metrics, but you are not getting the real picture. You need to use your Virtualization console for that. On my case, I check on VSphere, as we do use VMware on the company I work for.
Having said that, I do also use RedGate inside my VMs and for MS-SQL. Here's my recommendation for checking SQL performance inside the VM:
-Use performance monitor and "average percentage" utilization as a guideline.
When my VM is showing constant high CPU utilization it may indicate there is a problem. Then I go to VMware console or check with my VMware admin
-Check latency via DMVs
The I/O and storage APIs can't be virtualized. In other words, if you check your I/O via DMVs, you are checking the actual I/O or latency for your databases.
So I use both combined and data from Redgate, even inside the VM, and that gives me an idea of how my MS-SQL box is doing. But going back to your initial question, if you really want to check how the VM is doing in terms of RAM and CPU, you really should check that at VMware or HyperV level, with your Virtualization Admin.