nvmet_rdma_offload_mem_start 预留内存

要在 modprobe nvmet_rdma 时找到合法的 nvmet_rdma_offload_mem_startnvmet_rdma_offload_mem_size_mb 参数,你需要进行一系列步骤以确保选定的内存区域既未被系统其他部分使用,又适合于你的 NVMe over Fabrics (NVMe-oF) RDMA 目标配置。以下是一个示例流程,展示如何进行这一过程:

步骤 1: 检查系统内存布局

使用 /proc/iomem 查看当前系统的内存布局,以确定哪些物理内存区域已经被占用。

cat /proc/iomem

在输出中,你会看到类似于以下的条目,显示了系统中每个资源的物理地址范围:

00000000-00000fff : reserved
...
10000000-1fffffff : System RAM
  10000000-10ffffff : Kernel code
  11000000-11ffffff : Kernel data
...

步骤 2: 确定合适的内存区域

基于 /proc/iomem 的输出,你需要找到一个未被标记为 "System RAM" 或其他关键资源(如 "Kernel code" 或 "Kernel data")使用的地址范围。

例如,如果你发现从 200000002fffffff 的范围没有/proc/iomem 中列出,这可能意味着这段内存是可用的。

步骤 3: 使用 memmap 预留内存

通过在系统启动时使用 memmap 内核参数预留内存。例如,如果你决定使用从 20000000 开始的 256MB 内存,可以在启动时添加如下参数:

memmap=256M$0x20000000

这告诉内核在物理地址 0x20000000 开始预留 256MB 的内存。

步骤 4: 加载 nvmet_rdma 模块并指定参数

加载 nvmet_rdma 模块时,使用 modprobe 并指定 nvmet_rdma_offload_mem_startnvmet_rdma_offload_mem_size_mb 参数:

modprobe nvmet_rdma nvmet_rdma_offload_mem_start=0x20000000 nvmet_rdma_offload_mem_size_mb=256

这个命令加载 nvmet_rdma 模块,并告诉它使用从 0x20000000 开始、大小为 256MB 的内存区域进行 P2P 数据传输。

注意事项

  • 在实际部署之前,请确保通过彻底测试来验证所选内存地址的有效性和性能影响。
  • 在一些系统中,可能需要调整 BIOS 设置来禁用某些内存区域的系统使用,或者确保内存区域不被映射为其他用途(如显存)。
  • 请注意,这个过程可能因系统配置、硬件和操作系统版本的不同而有所变化。

总的来说,找到合适的 nvmet_rdma_offload_mem_startnvmet_rdma_offload_mem_size_mb 参数需要仔细规划和测试,以确保所选内存区域既满足 NVMe-oF RDMA 目标的性能需求,又不干扰系统的正常运行。

posted @ 2024-02-25 16:58  乌鸦嘴-raven  阅读(38)  评论(0编辑  收藏  举报