If you’ve ever designed a hybrid storage architecture, you already understand Memory Tiering intuitively. ESXi is just applying the same hot/cold data placement logic one layer higher, to memory rather than disk
Its a very simple concept – RAM is fast. Very fast, but it’s also expensive and physically constrained by what a server chassis can hold.
Memory Tiering in ESXi lets a cheap NVMe drive serve as a second tier of memory alongside your DRAM similar to how the disk drives had a mix of NL+NVME drives in a hybrid array..
But it all comes a compromise – Speed or Penatly so i’d wait a bit more for CXL-attached memory modules.

Just like a hybrid array automatically moves hot blocks to flash and cold blocks to NL-SAS, ESXi automatically promotes hot memory pages to DRAM and demotes cold ones to NVMe. The hypervisor is here acts as tiering policy engine the same role that FAST VP plays on a VMAX, or Auto-Tiering on a Nimble or Pure array.

Which Workloads Benefit?

Not all workloads thou are best suited for tiering
Host-level configuration
Navigate to the host in vSphere, open Configure → Storage Devices, and note the NVMe device identifier.

Place the host in maintenance mode to create our tiering device.
Step 1: Place host in maintainene mode
esxcli system maintenanceMode set -e 1Step 2: Verify NVMe devices
esxcli storage core adapter device listStep 3: Create the NVMe Tier Device
esxcli system tierdevice create -d /vmfs/devices/disks/eui.XXXXX..Step 4: Verify the partition was created successfully:
esxcli system tierdevice list
Enable Memory Tiering on the NVMe
Step 5 : Check status — Configured will show FALSE
esxcli system settings kernel list -o MemoryTieringStep 6 :Enable Memory Tiering
esxcli system settings kernel set -s MemoryTiering -v TRUEStep 7 :Confirm by checking the status of memory tiering
esxcli system settings kernel list -o MemoryTieringStep 8 : What percentage of the host memory should be accelerated using the NVMe tier?
esxcli system settings advanced set -o /Mem/TierNvmePct -i 400Step 9 : Reboot the host
reboot
C after the host rebootheck Both Configured and Runtime now TRUE
esxcli system settings kernel list -o MemoryTiering

Navigate to Host → Configure → Hardware → Overview.
The memory card will reflect the capacity with Tier 0 (DRAM) and Tier 1 (NVMe) shown separately.

Ssh into each remaining host and run the same partition creation steps as above..
Cluster-level configuration
To apply the config at the cluster level, its much easier to pick a reference host that has Memory Tiering enabled and use configuration Profile to push the Memory Tiering kernel setting everywhere automatically
Create a configuration profile from the reference host
At the cluster level, go to Desired State → Configuration → Create Configuration

Import from reference host.

Select the host which has memory tiering enabled as the source and complete the import wizard.

Validate config

Click Finish and Apply

Click Go to configuration

For hosts that may have local overrides that conflict with the cluster-level memory_tiering setting. Navigate to vmkernel → Options → Host Overrides and delete the override for each of the hosts

Confirm by checking the status of memory tiering

Now lets created a draft so any future hosts that are added in can pick up the configs. Click Draft

Choose the host and pick add override.

Pick a host and pick the NVMe

Now override is added , so apply the same for other hosts as well.

Run a compliance check hosts , 03, and 04 will show compliant because memory_tiering is set to TRUE.


Run the pre-check

Click Apply Changes.

The cluster will handle maintenance mode entry, configuration push, and rolling reboots automatically.

After remediation, filter Advanced System Settings on any host by memorytiering to confirm the setting was applied. The cluster view will show “software” in the Memory Tiering column for all hosts.

The tiering status can be seen at the host level.

Disabling Memory Tiering for specific VMs
Shut down the VM, go to Edit Settings → Advanced Parameters, and add the following:
Attribute: sched.mem.enableTiering
Value: FALSE
Power the VM back on. Memory pages for this VM will no longer be tiered to NVMe.

NVMe encryption at the VM level
If a specific VM handles sensitive workloads, you can encrypt its memory pages when they are tiered from DRAM to NVMe. Shut down the VM, then add:
Advanced parameter
Attribute: sched.mem.EncryptTierNVMe
Value: TRUE
Power the VM back on. Only this VM’s tiered memory pages will be encrypted.
NVMe encryption at the host level
To encrypt tiered memory pages for all VMs on a host, configure the host-level advanced setting. On the target host, navigate to Configure → System → Advanced System Settings, filter by mem.en, and set the value to 1.
Note: Host-level encryption applies to all VMs running on the host. VM-level settings still work independently and can be layered on top of this.

Custom DRAM:NVMe ratio tuning
The setting just controls how much NVMe gets added on top of your existing RAM on server or what percentage of the host memory should be accelerated using the NVMe tier?
Higher number = more NVMe = more total memory.
This can be applied via the CLI or UI
esxcli system settings advanced set -o /Mem/TierNvmePct -i 400
To change the ratio, go to Configure → System → Advanced System Settings on the target host, filter by mem.tier, and update the value (default: 100, max: 400). The default ratio is 1:1 so for every 1 GB of DRAM, 1 GB of NVMe is added. so here by setting 400 value , the ratio can be increased up to 1:4, delivering up to 400% additional memory

A host reboot is required for the new ratio to take effect. The Hardware Overview will continue to show the 1:1 split until after the restart.

So if you are now asking if we will use this production, the answer will be NO because RAM speed is still 1000.X faster than NVMe so i will wait for the CXL-attached memory modules (not NVMe!) that behave much closer to RAM, though still slower than DIMMs.

