Linux
如何在 Linux 上檢查/更改 NVME HMB?
新的 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/
,還可以從那裡動態更改其中的一些參數。