새로운 DRAMless 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 컨트롤러의 카탈로그에서도 일부 정보를 찾을 수 있습니다 .
커널 모듈에는 컨트롤러당 최대 HMB 크기를 제한하는 데 사용할 수 있는 매개변수 nvme
도 있습니다 .max_host_mem_size_mb
다른 nvme
모듈 매개변수를 use_cmb_sqes
사용하여 I/O SQ에 대한 컨트롤러의 메모리 버퍼 사용을 비활성화할 수 있습니다. 내가 이것을 올바르게 이해한다고 가정하면 이는 모든 NVMe가 DRAM 없는 시스템처럼 작동하도록 만드는 데 사용될 수 있습니다.
에서 모듈 매개변수의 현재 값을 확인할 수 있으며 /sys/module/nvme/parameters/
, 거기에서 일부 매개변수를 동적으로 변경할 수도 있습니다.