Microsoft Linux TM Asked: 2021-12-12 23:11:16 +0800 CST2021-12-12 23:11:16 +0800 CST 2021-12-12 23:11:16 +0800 CST 如何在 Linux 上检查/更改 NVME HMB? 772 新的 DRAM-less NVME SSD 使用部分系统内存作为 HMB(主机内存缓冲区)。 如何在 Linux 上检查/更改 NVME HMB? (验证它是否正常工作或改变其行为) linux ssd 1 个回答 Voted Best Answer telcoM 2021-12-13T08:16:44+08:002021-12-13T08:16:44+08:00 根据 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/,也可以从那里动态更改其中的一些参数。
根据 NVMe 基本规范 2.0a,主机内存缓冲区的 NVMe 功能 ID 为 0x0d。您可以使用以下
nvme get-feature
命令检查它:您还可以
/sys/class/nvme/
在相应 NVMe 控制器的目录下找到一些信息。nvme
内核模块还具有max_host_mem_size_mb
可用于限制每个控制器的最大 HMB 大小的参数。另一个
nvme
模块参数,use_cmb_sqes
可用于禁止 I/O SQ 使用控制器的内存缓冲区。假设我已经正确理解了这一点,这可以用来使任何 NVMe 像无 DRAM 一样工作。您可以在 处找到模块参数的当前值
/sys/module/nvme/parameters/
,也可以从那里动态更改其中的一些参数。