[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fnIuXnvOfTgUKU9f1vg8kg3N0OJ0bbEq3j5dl24zsTjk":3},{"item":4,"related":44},{"id":5,"type":6,"title":7,"slug":8,"summary":9,"body":10,"coverUrl":11,"productScreenshots":12,"productLinks":13,"authorName":14,"authorUrl":15,"authorSubject":16,"category":17,"tags":22,"sourceLabel":35,"sourceName":36,"sourceUrl":37,"status":38,"seoTitle":7,"seoDescription":9,"canonicalUrl":35,"isFeatured":39,"sno":40,"sortOrder":41,"publishedAt":42,"updatedAt":43,"createdAt":43},"56b94746-1551-4111-a1e9-6dc7e62e1604","article","RDMA：两台机器能否让网卡直接搬运注册内存？","rdma-registered-memory-and-remote-access","RDMA 让网卡在授权和注册内存范围内处理远端数据搬运。本文解释内存注册、访问权限与完成队列，避免把它误解为完全没有 CPU 参与。","RDMA（Remote Direct Memory Access，远程直接内存访问）常被描述为“让一台机器直接读写另一台机器的内存”。这句话抓住了方向，却省略了重要前提：通信两端需要受支持的网卡与软件栈，内存区域通常要先注册，访问权限要明确配置，并通过队列、键值和完成通知管理操作。\n\n把它想成两座仓库之间的自动传送系统。普通网络程序可能让 CPU 频繁参与收包、复制和协议处理；RDMA 则让网卡承担更多数据搬运工作，应用可以提交操作并等待完成，从而减少某些路径上的 CPU 参与和数据复制。对于高性能计算、分布式存储和低延迟集群，这种设计可能非常有吸引力。\n\n以常见的 verbs 接口为例，程序先注册一段内存区域，内核与网卡据此建立必要映射和权限。不同类型的操作具有本地或远端访问要求，远端读写还会涉及远程键等授权信息。接收方并非无条件暴露所有内存；注册范围和访问标志限定了允许操作的边界。硬件传输完成后，程序仍要处理完成队列、错误和数据一致性。\n\n因此，RDMA 并不意味着“CPU 永远不参与”，也不意味着“绕过网络就没有协议与故障”。连接建立、缓冲区注册、内存保护、队列管理、拥塞处理和应用层一致性依然存在。若缓冲区生命周期管理错了，或应用在另一端尚未安全使用数据时就重用内存，仍会产生严重错误。远端 DMA 的安全设计必须把密钥、权限和隔离当成第一等问题。\n\nRDMA 也不是任何网络应用的即插即用升级。设备成本、网络互通、部署运维、错误排查和编程复杂度都需要纳入评估。最有说服力的判断方式，是测量实际应用的 CPU 消耗、吞吐和尾延迟，并将注册与管理开销一并计算，而不是只比较理想状态下的一次数据传输。\n\n它的真正价值，是让网卡能按受控授权直接处理注册内存中的数据，减少某些传统数据路径的中间步骤。越接近硬件，越要把资源生命周期与安全边界设计清楚。\n\n来源：[Linux `ibv_reg_mr(3)` 手册](https:\u002F\u002Fwww.man7.org\u002Flinux\u002Fman-pages\u002Fman3\u002Fibv_reg_mr.3.html)","\u002Fuploads\u002F2026-10-06\u002F86d526f9-9a46-46aa-8c81-1efd4aae1284.jpg",[],[],"Foundit","https:\u002F\u002Ffoundit.cn","foundit-ai-editorial",{"id":18,"name":19,"slug":20,"description":21},"6179d3b6-dc34-4483-9ded-3cd9f1b37a47","科普","abbreviation","介绍各领域新兴概念",[23,27,31],{"id":24,"name":25,"slug":26},"7c76bfc2-f80f-4ee0-a95d-27bd8708b434","技术","slug",{"id":28,"name":29,"slug":30},"8d35e42e-9f5b-4dd9-b30f-dc2c53d06096","硬件","hardware",{"id":32,"name":33,"slug":34},"4c2bbea6-eab7-40a8-8447-1de478ff7749","分析","analyse",null,"Linux ibv_reg_mr(3) Manual","https:\u002F\u002Fwww.man7.org\u002Flinux\u002Fman-pages\u002Fman3\u002Fibv_reg_mr.3.html","published",false,49,0,"2026-10-06T00:00:00.000Z","2026-10-06T07:51:32.204Z",[45,54,63],{"id":46,"type":6,"title":47,"slug":48,"summary":49,"coverUrl":50,"authorName":14,"sno":51,"publishedAt":52,"createdAt":53},"d4a1ef13-fa42-41f3-a9d2-635f47d801d0","RISC-V PMP：处理器怎样给不同特权级划出内存禁区？","riscv-pmp-physical-memory-protection","RISC-V PMP 由高特权级软件配置物理内存区域访问规则，并由处理器在较低权限代码访问时执行检查。本文区分 PMP 与虚拟内存，介绍它在固件和嵌入式安全中的作用及实现边界。","\u002Fuploads\u002F2026-10-13\u002Fecfdd306-c8d2-4bfa-984e-7f579fd86f61.jpg",41,"2026-10-13T00:00:00.000Z","2026-10-13T02:13:39.212Z",{"id":55,"type":6,"title":56,"slug":57,"summary":58,"coverUrl":59,"authorName":14,"sno":60,"publishedAt":61,"createdAt":62},"67ba2085-7ee6-4379-9d0c-6372fed783ae","Intel TDX：云服务器管理员也看不到虚拟机里的数据吗？","intel-tdx-confidential-vm-explained","Intel TDX 通过处理器支持的隔离机制，将虚拟机运行环境划成受保护的 Trust Domain，降低宿主软件直接读取或篡改其内存的机会。本文说明机密计算解决什么信任问题，也谈远程证明、侧信道和来宾系统自身的风险。","\u002Fuploads\u002F2026-10-17\u002Ff8891699-ca7f-4edb-b64d-1b4db6421b0e.jpg",50,"2026-10-17T00:00:00.000Z","2026-10-17T03:08:39.718Z",{"id":64,"type":6,"title":65,"slug":66,"summary":67,"coverUrl":68,"authorName":14,"sno":69,"publishedAt":42,"createdAt":70},"366cdfd1-a8d3-4be8-893a-a298f1a45d23","Erasure Coding：不用存三份完整副本，也能扛硬盘故障吗？","erasure-coding-data-resilience-storage","纠删码将数据与校验信息分片存储，在符合恢复条件时重建丢失数据，以存储效率换取额外计算和恢复成本。本文用 Ceph 说明关键取舍。","\u002Fuploads\u002F2026-10-06\u002Fb60f1262-88da-48f5-972d-075b96d0020a.jpg",54,"2026-10-06T07:51:46.328Z"]