首页 > 系统相关 >nvmet_rdma_offload_mem_start 预留内存

nvmet_rdma_offload_mem_start 预留内存

时间:2024-02-25 17:13:17浏览次数:24  
标签:offload mem start rdma 内存 nvmet

要在 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 目标的性能需求,又不干扰系统的正常运行。

标签:offload,mem,start,rdma,内存,nvmet
From: https://www.cnblogs.com/longbowchi/p/18032607

相关文章

  • memset
    void*memset(void*str,intc,size_tn)memset用来初始化数据,但是需要注意,memset是按照字节初始化的。对于char类型,可以随便设置,如果是int等大于1个字节的数据,只能设置0和-1,设置其他的值是无法满足需求的。比如设置1,memset会对每一个字节设置为1,但是如果是int类型,有4个字节,......
  • ../inst/include/Eigen/src/Core/MathFunctions.h:487:16: error: no member named 'R
    Asmentionedin conda-forge/r-base-feedstock#163(comment),IsuccessfullyinstalledsctransforminMacsiliconM1Maxbyfirstrun exportPKG_CPPFLAGS="-DHAVE_WORKING_LOG1P intheterminalandtheninstallthepackageinR.......
  • SciTech-Mathmatics-Trigonometric Identities you must remember: 需要记住的三角函
    TrigonometricIdentities(Revision:1.4)TrigonometricIdentitiesyoumustrememberThe“bigthree”trigonometricidentitiesare\(\large\begin{equation}\sin^{2}t+cos^{2}t=1\tag{1}\end{equation}\)\(\large\begin{equation}\sin(......
  • Go 100 mistakes - #62: Starting a goroutine without knowing when to stop it
       ......
  • 玩转SpringBoot:动态排除Starter配置,轻松部署
    引言在软件开发中,进行本地单元测试是一项常规且必要的任务。然而,在进行单元测试时,有时需要启动一些中间件服务,如Kafka、Elasticjob等。举例来说,我曾经遇到过一个问题:项目中使用了Redisson锁,但由于Redisson版本较低,在Mac环境下偶尔会报错#RedisConnectionException:Unabletoin......
  • Go - memory model
     Receivingfromanemptyunbufferedchannelcausedthechildgoroutineexit.  ......
  • Qt程序执行报错:"This application failed to start because not Qt platform plugin c
    Qt编译的exe程序执行时报错:出现以上错误的原因是由于的系统环境路径缺失或者exe程序目录下缺少对应的dll导致。以上为缺少对应的Qtplatformplugin。在Qt的安装目录下将platforms整个目录拷贝到exe所在目录下,即可执行。如果提示缺少对于的xxx.dll直接将对应缺失......
  • Go 100 mistakes - #41: Substrings and memory leaks
        WeneedtokeeptwothingsinmindwhileusingthesubstringoperationinGo. First,theintervalprovidedisbasedonthenumberofbytes,notthenumberofrunes. Second,asubstringoperationmayleadtoamemoryleakastheresultings......
  • 华为二面:SpringBoot如何自定义Starter?
    SpringBoot的自动配置机制为开发人员提供了一种轻松集成和配置各种功能的便捷方式。然而,随着项目的复杂性增加,更好地组织和分享通用功能变得至关重要。自定义Starter成为了理想的解决方案,旨在简化项目的依赖管理和自动配置,使开发者能够迅速而灵活地集成特定的功能模块。本文将深......
  • IDEA、Pycharm等所有JetBrains产品同时报错:Internal error. Please refer to https://
    IDEA、Pycharm等所有JetBrains产品同时报错:Internalerror.Pleaserefertohttps://jb.gg/ide/critical-startup-errors错误Internalerror.Pleaserefertohttps://jb.gg/ide/critical-startup-errorscom.intellij.ide.plugins.StartupAbortedException:Cannotstartap......