build 7bbbddf7 | content blog-content@c8490fa · 338 posts | profiles 20 · corpus 267 | 0 skipped | | format
apiVersion: soultec.ch/v1kind: Postmetadata: name: esx-90-nvme-memory-tiering locale: en labels: author: yannick-gerber capability/cloud: 1.94 capability/virtualization: 1.37 vendor/vmware: 0.88 annotations: source: blog-content/posts/en/esx-90-nvme-memory-tiering.md route: /en/insights/esx-90-nvme-memory-tiering/ schema: /nerd/schema/posts.json markdown: /en/insights/esx-90-nvme-memory-tiering.mdspec: title: ESX 9.0 NVMe Memory Tiering date: 2025-06-23 author: yannick-gerber locale: en summary: >- The NVMe memory tiering feature in ESX lets local NVMe SSDs be used as RAM, so cheap NVMe devices carry workload memory instead of expensive DRAM. capabilities: [cloud, virtualization] vendors: [vmware] hero: /blog-assets/esx-90-nvme-memory-tiering/hero.webp migrated: 2026-08-24 translationReviewed: false draft: false sections: - body: | The NVMe memory tiering feature in ESX lets local NVMe SSDs be used as RAM, so cheap NVMe devices can carry workload memory instead of expensive DRAM. VMware calls the NVMe tier tier 1 memory, with DRAM as tier 0. - heading:

NVMe memory tiering in brief

body: | ![](/blog-assets/esx-90-nvme-memory-tiering/01.webp) - Local NVMe SSDs used as memory - Configured per ESXi host, so hosts with and without NVMe tiering can coexist in a cluster - Configurable from 25% to 400% of the host's DRAM - heading: "

Example: a host with 128 GB of DRAM

"
body: | NVMe tiering is enabled with esxcli. ```bash esxcli system settings kernel set -s MemoryTiering -v TRUE ``` Now we need a local NVMe SSD and its exact identifier. ```bash [root@hades:~] esxcli storage core device partition list Device Partition Start Sector End Sector Type Size -------------------------------------------------------------------- --------- ------------ ---------- ---- ------------- t10.NVMe____Samsung_SSD_990_EVO_Plus_2TB____________755B42415C382500 0 0 3907029167 0 2000398934016 mpx.vmhba33:C0:T0:L0 0 0 976773167 0 500107862016 mpx.vmhba33:C0:T0:L0 1 2048 976768064 fb 500104200704 mpx.vmhba32:C0:T0:L0 0 0 30283007 0 15504900096 mpx.vmhba32:C0:T0:L0 1 64 204863 0 104857600 mpx.vmhba32:C0:T0:L0 5 208896 2306047 6 1073741824 mpx.vmhba32:C0:T0:L0 6 2308096 4405247 6 1073741824 mpx.vmhba32:C0:T0:L0 7 4407296 30282974 f8 13248347648 t10.NVMe____Samsung_SSD_990_EVO_Plus_2TB____________7D5B42415C382500 0 0 3907029167 0 2000398934016 ``` Creating the NVMe tier: ```bash esxcli system tierdevice create -d /vmfs/devices/disks/t10.NVMe____Samsung_SSD_990_EVO_Plus_2TB____________7D5B42415C382500 ``` Then we set the percentage of host memory to take from the NVMe disk. In our case the full 400%. (Best practice is a 1:1 ratio.) ```bash esxcli system settings advanced set -o /Mem/TierNvmePct -i 400 ``` The host then needs a restart. After it, our host has roughly 624 GB of memory. ![](/blog-assets/esx-90-nvme-memory-tiering/02.webp) - heading:

Choosing the NVMe device

body: | SSDs for NVMe tiering have to be listed on the [Broadcom Compatibility Guide (BCG)](https://compatibilityguide.broadcom.com/) and meet these specifications: - vSAN SSD - Device type: NVMe - Endurance class: class D, at least 7300 TBW - Performance class: class F (100,000 to 349,999 writes per second) or class G Other important points: - 4 TB maximum size - NVMe-over-Fabric is not supported; the NVMe SSD has to be connected directly in the host - An NVMe SSD configured as a memory tier can no longer be used for VMFS or vSAN datastores - Only hardware RAID is supported - heading:

Which workloads suit NVMe tiering?

body: | NVMe tiering suits essentially any workload. ESX only moves cold and very cold pages onto the NVMe device; hot pages always stay in DRAM. Features such as vMotion and DRS are fully supported. VDI and database workloads suit it particularly well. Best practice is a 1:1 ratio, for example 1 TB of DRAM and 2x1 TB NVMe SSD (RAID1) for tiering. These workloads are not supported: - Nested virtualisation - Monster VMs with 1 TB of RAM and 128 vCPUs - VMs with fault tolerance enabled Put differently, VMs with these vmx settings: - *sched.cpu.latencySensitivity* *= "high"* - **SEV VM:** *sev.enable* *= "True"* - **SGX VM:** *sgxInfo.epcSize* *is non-zero* - **TDX VM:** *tdx.enable* *= "True"* - *ftcpt.enabled* *= "True"* - *vhv.enable* *= "True"* ![](/blog-assets/esx-90-nvme-memory-tiering/03.webp) - heading:

What NVMe tiering gains you

body: | Beyond the obvious, that NVMe is cheaper, there are further gains: - Host density goes up and the CPU gets used better - On a database cluster you can provision more workload, which can also reduce the licence cost of something like MS SQL Server, licensed per socket - A single-socket ESX host with an NVMe tier gets you more total memory ![](/blog-assets/esx-90-nvme-memory-tiering/04.webp) - heading:

Further reading

body: | - [https://blogs.vmware.com/cloud-foundation/2025/06/19/advanced-memory-tiering-now-available/](https://blogs.vmware.com/cloud-foundation/2025/06/19/advanced-memory-tiering-now-available/)status: corpus: 267 alsoLike: - {ref: posts/vcf-full-stack-ab-oktober-2027-mythos-oder-wahrheit, score: 1.00} - {ref: posts/ms-secure-boot-cert-expiry-2026, score: 1.00} - {ref: solutions/vmware/vsphere-foundation, score: 1.00}
{ "apiVersion": "soultec.ch/v1", "kind": "Post", "metadata": { "name": "esx-90-nvme-memory-tiering", "locale": "en", "labels": { "author": "yannick-gerber", "capability/cloud": "1.94", "capability/virtualization": "1.37", "vendor/vmware": "0.88" }, "annotations": { "source": "blog-content/posts/en/esx-90-nvme-memory-tiering.md", "route": "/en/insights/esx-90-nvme-memory-tiering/", "schema": "/nerd/schema/posts.json", "markdown": "/en/insights/esx-90-nvme-memory-tiering.md" } }, "spec": { "title": "ESX 9.0 NVMe Memory Tiering", "date": "2025-06-23", "author": "yannick-gerber", "locale": "en", "summary": "The NVMe memory tiering feature in ESX lets local NVMe SSDs be used as RAM, so cheap NVMe devices carry workload memory instead of expensive DRAM.", "capabilities": [ "cloud", "virtualization" ], "vendors": [ "vmware" ], "hero": "/blog-assets/esx-90-nvme-memory-tiering/hero.webp", "migrated": "2026-08-24", "translationReviewed": false, "draft": false }, "sections": [ { "body": "The NVMe memory tiering feature in ESX lets local NVMe SSDs be used as RAM, so cheap NVMe devices can carry workload memory instead of expensive DRAM. VMware calls the NVMe tier tier 1 memory, with DRAM as tier 0." }, { "heading": "

NVMe memory tiering in brief

",
"body": "![](/blog-assets/esx-90-nvme-memory-tiering/01.webp)\n\n- Local NVMe SSDs used as memory\n- Configured per ESXi host, so hosts with and without NVMe tiering can coexist in a cluster\n- Configurable from 25% to 400% of the host's DRAM" }, { "heading": "

Example: a host with 128 GB of DRAM

",
"body": "NVMe tiering is enabled with esxcli.\n\n```bash\n\nesxcli system settings kernel set -s MemoryTiering -v TRUE\n```\n\nNow we need a local NVMe SSD and its exact identifier.\n\n```bash\n [root@hades:~] esxcli storage core device partition list\nDevice Partition Start Sector End Sector Type Size\n-------------------------------------------------------------------- --------- ------------ ---------- ---- -------------\nt10.NVMe____Samsung_SSD_990_EVO_Plus_2TB____________755B42415C382500 0 0 3907029167 0 2000398934016\nmpx.vmhba33:C0:T0:L0 0 0 976773167 0 500107862016\nmpx.vmhba33:C0:T0:L0 1 2048 976768064 fb 500104200704\nmpx.vmhba32:C0:T0:L0 0 0 30283007 0 15504900096\nmpx.vmhba32:C0:T0:L0 1 64 204863 0 104857600\nmpx.vmhba32:C0:T0:L0 5 208896 2306047 6 1073741824\nmpx.vmhba32:C0:T0:L0 6 2308096 4405247 6 1073741824\nmpx.vmhba32:C0:T0:L0 7 4407296 30282974 f8 13248347648\nt10.NVMe____Samsung_SSD_990_EVO_Plus_2TB____________7D5B42415C382500 0 0 3907029167 0 2000398934016 \n```\n\nCreating the NVMe tier:\n\n```bash\n\nesxcli system tierdevice create -d /vmfs/devices/disks/t10.NVMe____Samsung_SSD_990_EVO_Plus_2TB____________7D5B42415C382500\n```\n\nThen we set the percentage of host memory to take from the NVMe disk. In our case the full 400%. (Best practice is a 1:1 ratio.)\n\n```bash\nesxcli system settings advanced set -o /Mem/TierNvmePct -i 400\n```\n\nThe host then needs a restart. After it, our host has roughly 624 GB of memory.\n\n![](/blog-assets/esx-90-nvme-memory-tiering/02.webp)" }, { "heading": "

Choosing the NVMe device

",
"body": "SSDs for NVMe tiering have to be listed on the [Broadcom Compatibility Guide (BCG)](https://compatibilityguide.broadcom.com/) and meet these specifications:\n\n- vSAN SSD\n- Device type: NVMe\n- Endurance class: class D, at least 7300 TBW\n- Performance class: class F (100,000 to 349,999 writes per second) or class G\n\nOther important points:\n\n- 4 TB maximum size\n- NVMe-over-Fabric is not supported; the NVMe SSD has to be connected directly in the host\n- An NVMe SSD configured as a memory tier can no longer be used for VMFS or vSAN datastores\n- Only hardware RAID is supported" }, { "heading": "

Which workloads suit NVMe tiering?

",
"body": "NVMe tiering suits essentially any workload. ESX only moves cold and very cold pages onto the NVMe device; hot pages always stay in DRAM. Features such as vMotion and DRS are fully supported. VDI and database workloads suit it particularly well.\n\nBest practice is a 1:1 ratio, for example 1 TB of DRAM and 2x1 TB NVMe SSD (RAID1) for tiering.\n\nThese workloads are not supported:\n\n- Nested virtualisation\n- Monster VMs with 1 TB of RAM and 128 vCPUs\n- VMs with fault tolerance enabled\n\nPut differently, VMs with these vmx settings:\n\n- *sched.cpu.latencySensitivity* *= \"high\"*\n- **SEV VM:** *sev.enable* *= \"True\"*\n- **SGX VM:** *sgxInfo.epcSize* *is non-zero*\n- **TDX VM:** *tdx.enable* *= \"True\"*\n- *ftcpt.enabled* *= \"True\"*\n- *vhv.enable* *= \"True\"*\n\n![](/blog-assets/esx-90-nvme-memory-tiering/03.webp)" }, { "heading": "

What NVMe tiering gains you

",
"body": "Beyond the obvious, that NVMe is cheaper, there are further gains:\n\n- Host density goes up and the CPU gets used better\n- On a database cluster you can provision more workload, which can also reduce the licence cost of something like MS SQL Server, licensed per socket\n- A single-socket ESX host with an NVMe tier gets you more total memory\n\n![](/blog-assets/esx-90-nvme-memory-tiering/04.webp)" }, { "heading": "

Further reading

",
"body": "- [https://blogs.vmware.com/cloud-foundation/2025/06/19/advanced-memory-tiering-now-available/](https://blogs.vmware.com/cloud-foundation/2025/06/19/advanced-memory-tiering-now-available/)" } ], "status": { "corpus": 267, "alsoLike": [ { "ref": "posts/vcf-full-stack-ab-oktober-2027-mythos-oder-wahrheit", "score": "1.00" }, { "ref": "posts/ms-secure-boot-cert-expiry-2026", "score": "1.00" }, { "ref": "solutions/vmware/vsphere-foundation", "score": "1.00" } ] }}
apiVersion = "soultec.ch/v1"kind = "Post"[metadata]name = "esx-90-nvme-memory-tiering"locale = "en"[metadata.labels]author = "yannick-gerber""capability/cloud" = "1.94""capability/virtualization" = "1.37""vendor/vmware" = "0.88"[metadata.annotations]source = "blog-content/posts/en/esx-90-nvme-memory-tiering.md"route = "/en/insights/esx-90-nvme-memory-tiering/"schema = "/nerd/schema/posts.json"markdown = "/en/insights/esx-90-nvme-memory-tiering.md"[spec]title = "ESX 9.0 NVMe Memory Tiering"date = 2025-06-23author = "yannick-gerber"locale = "en"summary = "The NVMe memory tiering feature in ESX lets local NVMe SSDs be used as RAM, so cheap NVMe devices carry workload memory instead of expensive DRAM."capabilities = ["cloud", "virtualization"]vendors = ["vmware"]hero = "/blog-assets/esx-90-nvme-memory-tiering/hero.webp"migrated = 2026-08-24translationReviewed = falsedraft = false[[sections]]body = "The NVMe memory tiering feature in ESX lets local NVMe SSDs be used as RAM, so cheap NVMe devices can carry workload memory instead of expensive DRAM. VMware calls the NVMe tier tier 1 memory, with DRAM as tier 0."[[sections]]heading = "

NVMe memory tiering in brief

"
body = '''![](/blog-assets/esx-90-nvme-memory-tiering/01.webp)- Local NVMe SSDs used as memory- Configured per ESXi host, so hosts with and without NVMe tiering can coexist in a cluster- Configurable from 25% to 400% of the host's DRAM'''[[sections]]heading = "

Example: a host with 128 GB of DRAM

"
body = '''NVMe tiering is enabled with esxcli.```bashesxcli system settings kernel set -s MemoryTiering -v TRUE```Now we need a local NVMe SSD and its exact identifier.```bash [root@hades:~] esxcli storage core device partition listDevice Partition Start Sector End Sector Type Size-------------------------------------------------------------------- --------- ------------ ---------- ---- -------------t10.NVMe____Samsung_SSD_990_EVO_Plus_2TB____________755B42415C382500 0 0 3907029167 0 2000398934016mpx.vmhba33:C0:T0:L0 0 0 976773167 0 500107862016mpx.vmhba33:C0:T0:L0 1 2048 976768064 fb 500104200704mpx.vmhba32:C0:T0:L0 0 0 30283007 0 15504900096mpx.vmhba32:C0:T0:L0 1 64 204863 0 104857600mpx.vmhba32:C0:T0:L0 5 208896 2306047 6 1073741824mpx.vmhba32:C0:T0:L0 6 2308096 4405247 6 1073741824mpx.vmhba32:C0:T0:L0 7 4407296 30282974 f8 13248347648t10.NVMe____Samsung_SSD_990_EVO_Plus_2TB____________7D5B42415C382500 0 0 3907029167 0 2000398934016 ```Creating the NVMe tier:```bashesxcli system tierdevice create -d /vmfs/devices/disks/t10.NVMe____Samsung_SSD_990_EVO_Plus_2TB____________7D5B42415C382500```Then we set the percentage of host memory to take from the NVMe disk. In our case the full 400%. (Best practice is a 1:1 ratio.)```bashesxcli system settings advanced set -o /Mem/TierNvmePct -i 400```The host then needs a restart. After it, our host has roughly 624 GB of memory.![](/blog-assets/esx-90-nvme-memory-tiering/02.webp)'''[[sections]]heading = "

Choosing the NVMe device

"
body = '''SSDs for NVMe tiering have to be listed on the [Broadcom Compatibility Guide (BCG)](https://compatibilityguide.broadcom.com/) and meet these specifications:- vSAN SSD- Device type: NVMe- Endurance class: class D, at least 7300 TBW- Performance class: class F (100,000 to 349,999 writes per second) or class GOther important points:- 4 TB maximum size- NVMe-over-Fabric is not supported; the NVMe SSD has to be connected directly in the host- An NVMe SSD configured as a memory tier can no longer be used for VMFS or vSAN datastores- Only hardware RAID is supported'''[[sections]]heading = "

Which workloads suit NVMe tiering?

"
body = '''NVMe tiering suits essentially any workload. ESX only moves cold and very cold pages onto the NVMe device; hot pages always stay in DRAM. Features such as vMotion and DRS are fully supported. VDI and database workloads suit it particularly well.Best practice is a 1:1 ratio, for example 1 TB of DRAM and 2x1 TB NVMe SSD (RAID1) for tiering.These workloads are not supported:- Nested virtualisation- Monster VMs with 1 TB of RAM and 128 vCPUs- VMs with fault tolerance enabledPut differently, VMs with these vmx settings:- *sched.cpu.latencySensitivity* *= "high"*- **SEV VM:** *sev.enable* *= "True"*- **SGX VM:** *sgxInfo.epcSize* *is non-zero*- **TDX VM:** *tdx.enable* *= "True"*- *ftcpt.enabled* *= "True"*- *vhv.enable* *= "True"*![](/blog-assets/esx-90-nvme-memory-tiering/03.webp)'''[[sections]]heading = "

What NVMe tiering gains you

"
body = '''Beyond the obvious, that NVMe is cheaper, there are further gains:- Host density goes up and the CPU gets used better- On a database cluster you can provision more workload, which can also reduce the licence cost of something like MS SQL Server, licensed per socket- A single-socket ESX host with an NVMe tier gets you more total memory![](/blog-assets/esx-90-nvme-memory-tiering/04.webp)'''[[sections]]heading = "

Further reading

"
body = "- [https://blogs.vmware.com/cloud-foundation/2025/06/19/advanced-memory-tiering-now-available/](https://blogs.vmware.com/cloud-foundation/2025/06/19/advanced-memory-tiering-now-available/)"[status]corpus = 267[[status.alsoLike]]ref = "posts/vcf-full-stack-ab-oktober-2027-mythos-oder-wahrheit"score = "1.00"[[status.alsoLike]]ref = "posts/ms-secure-boot-cert-expiry-2026"score = "1.00"[[status.alsoLike]]ref = "solutions/vmware/vsphere-foundation"score = "1.00"
<?xml version="1.0" encoding="UTF-8"?><manifest kind="Post"> <apiVersion>soultec.ch/v1</apiVersion> <metadata> <name>esx-90-nvme-memory-tiering</name> <locale>en</locale> <labels> <author>yannick-gerber</author> <entry key="capability/cloud">1.94</entry> <entry key="capability/virtualization">1.37</entry> <entry key="vendor/vmware">0.88</entry> </labels> <annotations> <source>blog-content/posts/en/esx-90-nvme-memory-tiering.md</source> <route>/en/insights/esx-90-nvme-memory-tiering/</route> <schema>/nerd/schema/posts.json</schema> <markdown>/en/insights/esx-90-nvme-memory-tiering.md</markdown> </annotations> </metadata> <spec> <title>ESX 9.0 NVMe Memory Tiering</title> <date>2025-06-23</date> <author>yannick-gerber</author> <locale>en</locale> <summary>The NVMe memory tiering feature in ESX lets local NVMe SSDs be used as RAM, so cheap NVMe devices carry workload memory instead of expensive DRAM.</summary> <capabilities> <item>cloud</item> <item>virtualization</item> </capabilities> <vendors> <item>vmware</item> </vendors> <hero>/blog-assets/esx-90-nvme-memory-tiering/hero.webp</hero> <migrated>2026-08-24</migrated> <translationReviewed>false</translationReviewed> <draft>false</draft> </spec> <sections> <section> <body>The NVMe memory tiering feature in ESX lets local NVMe SSDs be used as RAM, so cheap NVMe devices can carry workload memory instead of expensive DRAM. VMware calls the NVMe tier tier 1 memory, with DRAM as tier 0.</body> </section> <section> <heading>

NVMe memory tiering in brief

</heading>
<body>![](/blog-assets/esx-90-nvme-memory-tiering/01.webp)- Local NVMe SSDs used as memory- Configured per ESXi host, so hosts with and without NVMe tiering can coexist in a cluster- Configurable from 25% to 400% of the host's DRAM </body> </section> <section> <heading>

Example: a host with 128 GB of DRAM

</heading>
<body>NVMe tiering is enabled with esxcli.```bashesxcli system settings kernel set -s MemoryTiering -v TRUE```Now we need a local NVMe SSD and its exact identifier.```bash [root@hades:~] esxcli storage core device partition listDevice Partition Start Sector End Sector Type Size-------------------------------------------------------------------- --------- ------------ ---------- ---- -------------t10.NVMe____Samsung_SSD_990_EVO_Plus_2TB____________755B42415C382500 0 0 3907029167 0 2000398934016mpx.vmhba33:C0:T0:L0 0 0 976773167 0 500107862016mpx.vmhba33:C0:T0:L0 1 2048 976768064 fb 500104200704mpx.vmhba32:C0:T0:L0 0 0 30283007 0 15504900096mpx.vmhba32:C0:T0:L0 1 64 204863 0 104857600mpx.vmhba32:C0:T0:L0 5 208896 2306047 6 1073741824mpx.vmhba32:C0:T0:L0 6 2308096 4405247 6 1073741824mpx.vmhba32:C0:T0:L0 7 4407296 30282974 f8 13248347648t10.NVMe____Samsung_SSD_990_EVO_Plus_2TB____________7D5B42415C382500 0 0 3907029167 0 2000398934016 ```Creating the NVMe tier:```bashesxcli system tierdevice create -d /vmfs/devices/disks/t10.NVMe____Samsung_SSD_990_EVO_Plus_2TB____________7D5B42415C382500```Then we set the percentage of host memory to take from the NVMe disk. In our case the full 400%. (Best practice is a 1:1 ratio.)```bashesxcli system settings advanced set -o /Mem/TierNvmePct -i 400```The host then needs a restart. After it, our host has roughly 624 GB of memory.![](/blog-assets/esx-90-nvme-memory-tiering/02.webp) </body> </section> <section> <heading>

Choosing the NVMe device

</heading>
<body>SSDs for NVMe tiering have to be listed on the [Broadcom Compatibility Guide (BCG)](https://compatibilityguide.broadcom.com/) and meet these specifications:- vSAN SSD- Device type: NVMe- Endurance class: class D, at least 7300 TBW- Performance class: class F (100,000 to 349,999 writes per second) or class GOther important points:- 4 TB maximum size- NVMe-over-Fabric is not supported; the NVMe SSD has to be connected directly in the host- An NVMe SSD configured as a memory tier can no longer be used for VMFS or vSAN datastores- Only hardware RAID is supported </body> </section> <section> <heading>

Which workloads suit NVMe tiering?

</heading>
<body>NVMe tiering suits essentially any workload. ESX only moves cold and very cold pages onto the NVMe device; hot pages always stay in DRAM. Features such as vMotion and DRS are fully supported. VDI and database workloads suit it particularly well.Best practice is a 1:1 ratio, for example 1 TB of DRAM and 2x1 TB NVMe SSD (RAID1) for tiering.These workloads are not supported:- Nested virtualisation- Monster VMs with 1 TB of RAM and 128 vCPUs- VMs with fault tolerance enabledPut differently, VMs with these vmx settings:- *sched.cpu.latencySensitivity* *= "high"*- **SEV VM:** *sev.enable* *= "True"*- **SGX VM:** *sgxInfo.epcSize* *is non-zero*- **TDX VM:** *tdx.enable* *= "True"*- *ftcpt.enabled* *= "True"*- *vhv.enable* *= "True"*![](/blog-assets/esx-90-nvme-memory-tiering/03.webp) </body> </section> <section> <heading>

What NVMe tiering gains you

</heading>
<body>Beyond the obvious, that NVMe is cheaper, there are further gains:- Host density goes up and the CPU gets used better- On a database cluster you can provision more workload, which can also reduce the licence cost of something like MS SQL Server, licensed per socket- A single-socket ESX host with an NVMe tier gets you more total memory![](/blog-assets/esx-90-nvme-memory-tiering/04.webp) </body> </section> <section> <heading>

Further reading

</heading>
<body>- [https://blogs.vmware.com/cloud-foundation/2025/06/19/advanced-memory-tiering-now-available/](https://blogs.vmware.com/cloud-foundation/2025/06/19/advanced-memory-tiering-now-available/)</body> </section> </sections> <status> <corpus>267</corpus> <alsoLike> <item> <ref>posts/vcf-full-stack-ab-oktober-2027-mythos-oder-wahrheit</ref> <score>1.00</score> </item> <item> <ref>posts/ms-secure-boot-cert-expiry-2026</ref> <score>1.00</score> </item> <item> <ref>solutions/vmware/vsphere-foundation</ref> <score>1.00</score> </item> </alsoLike> </status></manifest>
Post · 2025-06-23

ESX 9.0 NVMe Memory Tiering

The NVMe memory tiering feature in ESX lets local NVMe SSDs be used as RAM, so cheap NVMe devices carry workload memory instead of expensive DRAM.

2025-06-23Date
Yannick GerberAuthor
3Min read
Topics Cloud 1.94 Virtualization 1.37
Vendors VMware 0.88

The NVMe memory tiering feature in ESX lets local NVMe SSDs be used as RAM, so cheap NVMe devices can carry workload memory instead of expensive DRAM. VMware calls the NVMe tier tier 1 memory, with DRAM as tier 0.

NVMe memory tiering in brief

  • Local NVMe SSDs used as memory
  • Configured per ESXi host, so hosts with and without NVMe tiering can coexist in a cluster
  • Configurable from 25% to 400% of the host’s DRAM

Example: a host with 128 GB of DRAM

NVMe tiering is enabled with esxcli.


esxcli system settings kernel set -s MemoryTiering -v TRUE

Now we need a local NVMe SSD and its exact identifier.

 [root@hades:~] esxcli storage core device partition list
Device Partition Start Sector End Sector Type Size
-------------------------------------------------------------------- --------- ------------ ---------- ---- -------------
t10.NVMe____Samsung_SSD_990_EVO_Plus_2TB____________755B42415C382500 0 0 3907029167 0 2000398934016
mpx.vmhba33:C0:T0:L0 0 0 976773167 0 500107862016
mpx.vmhba33:C0:T0:L0 1 2048 976768064 fb 500104200704
mpx.vmhba32:C0:T0:L0 0 0 30283007 0 15504900096
mpx.vmhba32:C0:T0:L0 1 64 204863 0 104857600
mpx.vmhba32:C0:T0:L0 5 208896 2306047 6 1073741824
mpx.vmhba32:C0:T0:L0 6 2308096 4405247 6 1073741824
mpx.vmhba32:C0:T0:L0 7 4407296 30282974 f8 13248347648
t10.NVMe____Samsung_SSD_990_EVO_Plus_2TB____________7D5B42415C382500 0 0 3907029167 0 2000398934016 

Creating the NVMe tier:


esxcli system tierdevice create -d /vmfs/devices/disks/t10.NVMe____Samsung_SSD_990_EVO_Plus_2TB____________7D5B42415C382500

Then we set the percentage of host memory to take from the NVMe disk. In our case the full 400%. (Best practice is a 1:1 ratio.)

esxcli system settings advanced set -o /Mem/TierNvmePct -i 400

The host then needs a restart. After it, our host has roughly 624 GB of memory.

Choosing the NVMe device

SSDs for NVMe tiering have to be listed on the Broadcom Compatibility Guide (BCG) and meet these specifications:

  • vSAN SSD
  • Device type: NVMe
  • Endurance class: class D, at least 7300 TBW
  • Performance class: class F (100,000 to 349,999 writes per second) or class G

Other important points:

  • 4 TB maximum size
  • NVMe-over-Fabric is not supported; the NVMe SSD has to be connected directly in the host
  • An NVMe SSD configured as a memory tier can no longer be used for VMFS or vSAN datastores
  • Only hardware RAID is supported

Which workloads suit NVMe tiering?

NVMe tiering suits essentially any workload. ESX only moves cold and very cold pages onto the NVMe device; hot pages always stay in DRAM. Features such as vMotion and DRS are fully supported. VDI and database workloads suit it particularly well.

Best practice is a 1:1 ratio, for example 1 TB of DRAM and 2x1 TB NVMe SSD (RAID1) for tiering.

These workloads are not supported:

  • Nested virtualisation
  • Monster VMs with 1 TB of RAM and 128 vCPUs
  • VMs with fault tolerance enabled

Put differently, VMs with these vmx settings:

  • sched.cpu.latencySensitivity = “high”
  • SEV VM: sev.enable = “True”
  • SGX VM: sgxInfo.epcSize is non-zero
  • TDX VM: tdx.enable = “True”
  • ftcpt.enabled = “True”
  • vhv.enable = “True”

What NVMe tiering gains you

Beyond the obvious, that NVMe is cheaper, there are further gains:

  • Host density goes up and the CPU gets used better
  • On a database cluster you can provision more workload, which can also reduce the licence cost of something like MS SQL Server, licensed per socket
  • A single-socket ESX host with an NVMe tier gets you more total memory

Further reading

You might also like