新型无 DRAM NVME SSD 使用系统内存的一部分作为 HMB(主机内存缓冲区)。
如何在 Linux 上检查/更改 NVME HMB?
(验证其是否正常工作或改变其行为)
答案1
根据NVMe基础规范2.0a,主机内存缓冲区的 NVME 功能 ID 为 0x0d。您可以使用以下命令检查它nvme get-feature
:
# nvme get-feature /dev/nvme0 -H -f 0x0d
get-feature:0xd (Host Memory Buffer), Current value:0x000001
Memory Return (MR): False
Enable Host Memory (EHM): Enabled
Host Memory Descriptor List Entry Count (HMDLEC): 10
Host Memory Descriptor List Address (HMDLAU): 0x0
Host Memory Descriptor List Address (HMDLAL): 0xffff7000
Host Memory Buffer Size (HSIZE): 9728
您还可以/sys/class/nvme/
在相应 NVMe 控制器的目录中找到一些信息。
内核模块nvme
还具有max_host_mem_size_mb
可用于限制每个控制器的最大 HMB 大小的参数。
另一个nvme
模块参数use_cmb_sqes
可用于禁止将控制器的内存缓冲区用于 I/O SQ。假设我正确理解了这一点,这可用于使任何 NVMe 像无 DRAM 的系统一样工作。
您可以在 处找到模块参数的当前值/sys/module/nvme/parameters/
,也可以从那里动态更改其中一些参数。