vROps Memory Metric Collection Changes in 6.7 & 7.0+
With vROps prior to 6.7, Memory metrics have caused confusion when comparing the memory metrics generated from vSphere to the metrics generated from the Ep Ops management agent installed on the guest OS. Currently, the metrics shown from the vSphere data collection are memory metrics as seen from the ESXi host layer / VMkernel. This value is at times largely different to the guest OS memory metrics, as explained below. I have a blog post here which explains the different memory metrics in vROps prior to 6.7
Active memory is the “amount of memory that is actively used, as estimated by the VMkernel based on recently touched memory pages”. For example, although Windows processed have allocated 3GB / 4GB on a VM, only 500MB is actually being actively touched, so the VMkernel reports the active memory as 500MB.
Consumed memory is the “amount of host physical memory consumed by a virtual machine, host, or cluster”. “VM consumed memory = memory granted – memory saved due to memory sharing“. This means that Consumed memory can include memory that the guest OS considers free. When comparing Task Manager memory usage to the Consumed Memory metric, you will see that Consumed Memory is almost always larger.
vROps currently relies on Active Memory when calculating utilization and demand. This resulted in the memory utilization always appearing lower than what you see in the guest OS. Active memory is used by the capacity engine, which means that sizing requirements are also based on Active Memory, resulting is quite aggressive recommendations.
In vROps 6.7 & 7.0, several significant changes were made and notably the metric Guest|Needed Memory (KB) which is collected by VMware Tools is now used to greatly improve the quality of projection from the capacity engine as well as rightsizing. The Memory|Usage (%) metric has been changed to prefer Guest|Needed Memory (KB) collected from Vmware Tools, and now fails back to Memory|Non Zero Active (KB) if it’s not available.
Typically, you would see that Guest|Needed Memory (KB) and Memory|Utilization (KB) are nearly identical (unless there is an issue collecting the metric from VMware Tools). Memory|Utilization (KB) is the metric used by the cpacity engine and therefore rightsizing recommendations. As you can see, it’s advantageous to ensure that Guest|Needed Memory (KB) is collecting from VMware Tools to get the best quality recommendations. The formula for the Memory|Utilization (KB) metric is below.
If VMware Tools is collecting…
Memory|Utilization (KB) = Guest|Needed Memory (KB) + ( Guest|Page In Rate per second * Guest|Page Size (KB) ) + Memory|Total Capacity (KB) – Guest|Physically Usable Memory (KB).
Memory|Usage (%) will prefer Guest|Needed Memory (KB)
If VMware Tools is not collecting…
Memory|Utilization (KB) = Memory|Consumed (KB)
Memory|Usage (%) will prefer Memory|Non Zero Active (KB)
This change allows you to use Memory|Usage (%) to show an aggressive percentage and Memory|Workload (%) to show a conservative percentage in dashboards and reports.