VMware vSphere 8.0 U3 发布了一个非常有意义的功能叫内存分层(Memory Tiering),以利用基于 PCIe 的 NVMe 设备充当第二层(辅助)内存,从而使 ESXi 主机的可用物理内存(RAM)增加。从本质上讲,内存分层就是利用较便宜的 NVMe 设备充当物理内存,以此增加内存的总容量和工作负载的可用量,同时降低总体拥有成本(TCO)。
为什么会需要内存分层?会不会有很大性能瓶颈?原因有很多,比如内存成本,如今对于内存容量及性能的需求与 CPU 的需求其实是不平衡的,这可能会因内存原因导致许多环境出现诸多限制。对于性能的影响肯定是会有的,但是随着技术的发展,慢慢的也会得到控制。内存分层对应用程序来说是完全透明的,可以用于所有不同类型的工作负载。虚拟机管理程序负责内存管理,因此它知道哪些页面是热的,哪些页面是冷的,也就是说,它可以确定哪些页面用于哪个层并同时保持性能。
当前对于内存分层的配置,VMware 建议 NVMe 存储容量与物理内存容量的分配比率为 1:4,也就是 25%。意思就是,如果物理内存为 100 GB,那用于内存分层的 NVMe 存储建议为 25 GB,合在一起可以使用的内存容量为 125 GB,这样既可以增加物理内存的容量,也能减少因内存分层所带来的性能影响。当然这个比率只是官方推荐的也是默认的,这个值可以修改,你可以使用 1~400 的值来设置物理内存与 NVMe 存储的百分比。更多内容和细节请查看 VMware KB 95944 知识库文章底部的内存分层技术指南文档。
现在,内存分层(Memory Tiering)技术还只是预览版,可以在实验室或者测试环境评估该功能,只能通过 ESXCLI 或者 PowerCLI 命令行进行配置,不过在未来的发行版本中,也许可以直接在 UI 管理界面进行应用。下面来看看具体的配置过程。
首先,ESXi 主机必须安装 8.0 U3 及以上版本来支持内存分层功能,请记住这里现在的物理内存"容量"。
然后,使用了一块 Samsung 970 EVO 250 GB 的 NVMe 硬盘进行测试,请记住这里的"路径"以及"容量"。
1.SSH 登录到 ESXi 主机。
ssh z4g4.mulab.local
2.运行 ESXCLI 命令启用内存分层功能。
esxcli system settings kernel set -s MemoryTiering -v TRUE
3.创建特定 NVMe 设备以用于内存分层。
esxcli system tierdevice create -d /vmfs/devices/disks/t10.NVMe____Samsung_SSD_970_EV0_250GB_______________5C71B5815A382500
4.查看用于内存分层的 NVMe 设备。
esxcli system tierdevice list
5.配置用于内存分层的 NVMe 设备与物理内存的百分比。
esxcli system settings advanced set -o /Mem/TierNvmePct -i 100
6.ESXi 主机内存分层功能配置过程。
7.完成配置后,重新启动 ESXi 主机使配置生效,再次查看 ESXi 主机的内存!当前内存容量=物理内存容量+NVMe 存储容量。
是不是很神奇?你的下一代内存何必是内存?还不赶紧用起来?内存分层都来了,内存池化还远吗?!