Linux

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

  • December 12, 2021

新的 DRAM-less NVME SSD 使用部分系統記憶體作為 HMB(主機記憶體緩衝區)。

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

(驗證它是否正常工作或改變其行為)

根據 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/,還可以從那裡動態更改其中的一些參數。

引用自:https://unix.stackexchange.com/questions/681131