But, as you can imagine, to figure out how much memory a virtual machine (VM) requires, you'll need monitoring data. That monitoring data provides information to the memory balancer that lets it make decisions about which VMs need more or less RAM.

Thankfully, that monitoring data is also exposed to a Hyper-V host's user interface inside PerfMon. Two counter groups are available. The first, Hyper-V Dynamic Memory Balancer provides host-level information about the behaviors of the memory balancer itself. That counter group has six counters:

Performance Counter

Description

Added Memory

The cumulative amount of memory added to VMs.

Available Memory

The amount of memory left on the node.

Average Pressure

The average pressure on the balancer node.

Memory Add Operations

The total number of add operations.

Memory Remove Operations

The total number of remove operations.

Removed Memory

The cumulative amount of memory removed from VMs.

Each running VM will also provide information into the second counter group, Hyper-V Dynamic Memory VM. This counter group provides information to the memory balancer function that enables it to accomplish its tasks. Ten counters are present in this group:

Performance Counter

Description

Added Memory

The cumulative amount of memory added to the VM.

Average Pressure

The average pressure in the VM.

Current Pressure

The current pressure in the VM.

Guest Visible Physical Memory

The amount of memory visible in the VM.

Maximum Pressure

The maximum pressure band in the VM.

Memory Add Operations

The total number of add operations for the VM.

Memory Remove Operations

The total number of remove operations for the VM.

Minimum Pressure

The minimum pressure band in the VM.

Physical Memory

The current amount of memory in the VM.

Removed Memory

The cumulative amount of memory removed from the VM.

While this information is intended primarily for consumption by the memory balancer, it can also provide useful data about how your VMs are processing their workloads.

For example, if your numbers of Memory Add Operations and Memory Remove Operations are high, this means that the level of memory use by that VM is seeing a high level of change. This can be occurring due to processes that are starting and stopping, or processes that are routinely requiring different levels of memory for their tasks.