如何在Linux上检查/更改NVME HMB?

如何在Linux上检查/更改NVME HMB?

新型无 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/,也可以从那里动态更改其中一些参数。

相关内容