RHEL 8 Virtual Machines do not utilize Memory Tiering in vSphere 9.0
search cancel

RHEL 8 Virtual Machines do not utilize Memory Tiering in vSphere 9.0

book

Article ID: 448305

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

When using the Memory Tiering over NVMe feature in vSphere 9.0, you observe the following behavior:

  • Windows virtual machines successfully migrate "cold" pages to the Tier-1 (NVMe) device.
  • Specific RHEL 8 virtual machines on the same host do not utilize the NVMe tier and remain entirely in physical DRAM (Tier-0).
  • The host has an NVMe device correctly configured as a tiering device.
  • No explicit error messages are shown in the vSphere Client, but memstats confirms zero bytes in tier1Consumed for the affected RHEL 8 VMs.

Environment

VMware vSphere ESXi 9.x

Cause

This behavior is typically not a defect, but a result of the ESXi VMkernel's selective tiering logic and VM-level configuration constraints:

  1. Memory "Coldness" Threshold: The ESXi VMkernel only migrates memory pages that are classified as "cold" (infrequently accessed). Linux guest operating systems, including RHEL 8, manage memory differently than Windows (e.g., aggressive use of the page cache), which may keep memory pages "active" longer, preventing migration to Tier-1.
  2. Host DRAM Threshold: Automated tiering usually triggers only when host DRAM consumption exceeds approximately 80%. If the host has sufficient DRAM available, active RHEL 8 workloads will be retained in Tier-0 to ensure maximum performance.
  3. Incompatible VM Settings: Certain VM-level parameters in vSphere 9.0 explicitly disable or block memory tiering eligibility.

Resolution

To resolve this issue or confirm if the behavior is expected, follow these troubleshooting steps:

1. Verify VM Compatibility

Ensure the RHEL 8 virtual machines are not using settings that conflict with Software Memory Tiering:

• Latency Sensitivity: Right-click the VM > Edit Settings > VM Options > Advanced. Ensure Latency Sensitivity is set to Normal. If set to High, the VM is ineligible for tiering.
• Memory Reservation: Ensure "Reserve all guest memory" is unchecked in the VM Memory settings.
• Virtual Hardware Virtualization (VHV): Check if vhv.enable = "TRUE" is set in the Advanced Configuration. In vSphere 9.0, VHV-enabled VMs cannot participate in tiering.

2. Check for Manual Deactivation

Verify that tiering hasn't been manually disabled via a VMX parameter:

1. Power off the VM.
2. Navigate to Edit Settings > VM Options > Advanced > Edit Configuration.
3. Look for the attribute: sched.mem.enableTiering.
4. If the value is FALSE, change it to TRUE or remove the entry to use the host default.

3.Analyze Real-Time Tiering Statistics

Use the ESXi command line to verify the "Active" vs. "Consumed" memory state of the VM:

bash
memstats -r vmtier-stats -u mb -s name:memSize:active:tier1Target:tier1Consumed

• If active memory is nearly equal to memSize, the VMkernel is correctly keeping the pages in DRAM to prevent performance degradation.
• If tier1Target is 0 despite the host being under memory pressure, check for the configuration blocks mentioned in Step 1.