首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >2分钟论文:网卡直写磁盘,这项专利彻底绕过了 CPU!

2分钟论文:网卡直写磁盘,这项专利彻底绕过了 CPU!

作者头像
早起的鸟儿有虫吃
修改2025-07-25 16:51:01
修改2025-07-25 16:51:01
3760
举报

声明:文章涉及的数据和方案 均来官方公布的数据, 如有偏差,属于个人理解有误。

原文:https://mp.weixin.qq.com/s/0UQtJvBBxj5tmvENIYf0QA

基于一次只解决一个事情的原则 本文重点描述 专利:分布式存储数据的传输方法、装置、系统、设 备和介质

随着全闪技术的发展,闪存的容量做的越来越大,价格越来越低,全闪存储逐步成为大众客户考虑的范畴。

尤其是在人工智能(ArtificialIntelligence,AI)场景对于带宽和每秒操作数(OperationsPerSecond,OPS)要求比较高的高性能计算(HighPerformanceComputing,HPC)场景中,全闪更是成为首选。

在全闪存储产品中,远程直接数据存取(RemoteDirectMemoryAccess,RDMA)技术是比较常用的技术,数据跨节点传输卸载到RDMA网卡中,极大减少中央处理器(CentralProcessingUnit,CPU)接入,但是接收或者发送仍然需要主机内存的介入,落盘时由主机内存通过直接存储器访问(DirectMemoryAccess,DMA)方式拷贝到盘的内存里然后落盘。

image.png
image.png

image.png

在思考一个小问题: 你会怎么选?

你下单了一件 9.9 元的小东西,只是个数据线。

请问,你更愿意选择哪种送货方式?

A. 派一架专机、一个快递员全程护送,送货上门、签字确认,享受 1 对 1 至尊服务。

B. 凑满几件一起走菜鸟驿站,快递员批量处理,自己跑一趟拿,虽然累点,但不贵。

选择A.反常识 但对于系统设计者来说,这种思路就是在用极度昂贵的资源处理微小的数据请求

选 B 就是——批量处理、小数据聚合,统一落盘,延迟略高但系统资源利用更好。 缺点:但是累人呀,每天爬楼梯,夏天取快递。一个还好说,要是100件呢

unsetunsetA为什么这样设计?unsetunset

  • 减少了频繁的主机内存拷贝(对小数据来说特别浪费);
  • 避免了CPU频繁介入处理琐碎小请求;
  • 提高了系统吞吐(OPS)和整体资源利用率
  • 兼顾了低延迟(NVRAM 缓存)与高带宽(NVMe)的性能特征

unsetunset《CN117573043B》的解法:按“数据大小”走不同路径!unsetunset

这项专利提出了一个非常巧妙的数据分流机制

根据写入数据量的大小,选择不同的缓存层存储路径:

数据类型

存储策略

缓存设备

落盘时机

小数据(如元数据、日志、数 KB 级)

存入第一缓存设备(NVRAM)

类似“快递暂存点”

批量聚合后落入主存储

大数据(如模型文件、图像块)

直接写入第二缓存设备(NVMe 介质)

unsetunset一、前置知识unsetunset

unsetunset1.1 这是什么业务场景?文件跨网络传输unsetunset

机器A 从磁盘到网卡
机器A 从磁盘到网卡

机器A 从磁盘到网卡

机器B 从网卡到磁盘,图片没绘制
机器B 从网卡到磁盘,图片没绘制

机器B 从网卡到磁盘,图片没绘制

unsetunset1.2 如何理解虚拟内存?黑科技 把SSD当内存用unsetunset

  • 根据csapp 定义 虚拟内存让每个程序都觉得自己拥有独立的大内存,其实背后是操作系统偷偷把磁盘当成内存的一部分用 ,内存是磁盘缓存,ssd是hdd判断缓存
  • 在Linux下,使用SSD为HDD加速,目前较为成熟的方案有:flashcache,enhanceIO,dm-cache,bcache等,多方面比较以后最终选择了bcache。 bcache 是一个 Linux 内核块层超速缓存。它允许使用一个或多个高速磁盘驱动器(例如 SSD)作为一个或多个速度低得多的硬盘的超速缓存

unsetunset1.3 如何网卡控制器(NIC Controller)和磁盘控制器(Disk Controller)?磁盘有缓存(DRAM 或 CMB)unsetunset

类比角色

网卡

磁盘

像什么?

快递员

仓库

负责什么?

把数据从 A 搬到 B

把数据存起来、随时取用

有缓存吗?

有,供收发暂存用

有,供 IO 聚合用

掉电怎么办?

数据会丢

高端 SSD/CMB 有电容保电设计,避免丢数据

项目

网卡(NIC)

磁盘(Disk)

功能

网络通信(发送/接收数据包)

数据持久化存储(读写文件块)

控制器

网卡控制器(MAC + PHY)

磁盘控制器(SATA, NVMe 等)

总线协议

PCIe,Ethernet,InfiniBand

SATA,SAS,NVMe(PCIe)

数据源

来自 CPU/内存/其他主机的网络数据

来自主机进程的文件/块读写请求

访问方式

DMA 或 RDMA(远程)

DMA,NVMe queue,IO调度器

典型软件接口

socket / RDMA verbs

文件系统 / 块设备 / IO stack

常见延迟

微秒级

毫秒(HDD)~微秒(NVMe SSD)

目标

快速传输

安全落盘

控制器和缓冲区的差异

✅ 网卡控制器(NIC Controller)

  • 控制数据包收发、校验、队列;
  • 支持 DMA 或 RDMA 方式将数据从/写入内存;
  • 高端网卡支持 _zero-copy_,可绕过 CPU 和主内存(CMB、DDIO);
  • 没有持久化能力(掉电就丢)。

✅ 磁盘控制器(Disk Controller)

  • 管理 数据在磁盘介质(HDD、SSD)上的读写
  • 有内部调度队列、缓存(DRAM 或 CMB);
  • NVMe 控制器支持多队列、低延迟、高并发;
  • 数据最终会落盘(持久化),由 FTL(闪存转换层)或机械磁头调度

unsetunset二、专利简化理解unsetunset

场景: 两个数据中心节点(仓库A和仓库B)之间需要高速传输数据(搬运货物)。


unsetunset🚚 第一阶段:传统方式(慢速路径)unsetunset

image.png
image.png
  1. 数据从仓库A出发: 数据首先放在仓库A的内存中转区(黄色)。
  2. 装车: 仓库A的网卡把数据装车。
  3. 运输: 卡车通过高速路(InfiniBand)运到仓库B的网卡。
  4. 卸货到中转区: 仓库B的网卡把数据卸到仓库B的内存中转区(黄色)
  5. 管理员处理:CPU管理员(红色) 发现中转区有货,发出指令。
  6. 叉车搬运:搬运叉车(蓝色) 根据指令,把数据从内存中转区搬到最终大仓库/SSD(绿色)
    • 瓶颈: 步骤4和5需要时间和CPU资源,尤其当小包裹很多时(高OPS),管理员(CPU)和叉车(内存拷贝)忙不过来,造成拥堵延迟。
  7. 场景1:海量小包裹涌入 (高OPS场景)
    • 传统方式: 卡车源源不断到达仓库B门口。每辆车都要排队进中转区卸货,CPU管理员和叉车忙得满头大汗,处理速度跟不上,门口排起长龙(高延迟)。 传统方式: 卡车源源不断到达仓库B门口。 每辆车都要排队进中转区卸货,CPU管理员和叉车忙得满头大汗,处理速度跟不上,门口排起长龙(高延迟)。
    • 专利方式: 卡车到达后,网卡司机看一眼包裹大小(小件),立刻精准投递到旁边的小件快速处理区,然后马上掉头去拉新货。小件区快速接收、记录、备份。理货员在后台有条不紊地将攒够的小包裹批量送到大件区或大仓库。门口畅通无阻(高OPS,低延迟)。
  8. 场景3:AI训练 GPU -> 存储
    • GPU(高性能图形处理器,产生海量数据)需要快速保存数据。
    • 专利方式: GPU直接叫来网卡司机(调用驱动),告诉司机:“数据在我这里,地址是XXX”。网卡直接从GPU“装货”,然后通过高速路直达远程仓库的CMB临时存放区。完全不经过本地的CPU和内存中转区,GPU可以立刻继续计算。效率极高! 专利方式: GPU直接叫来网卡司机(调用驱动),告诉司机:“数据在我这里,地址是XXX”。 网卡直接从GPU“装货”,然后通过高速路直达远程仓库的CMB临时存放区。 完全不经过本地的CPU和内存中转区,GPU可以立刻继续计算。 效率极高!

unsetunset⚡ 第二阶段:专利方法(CMB直达快车道)unsetunset

image.png
image.png

🔧 关键升级:仓库B内部改造

  1. 直达临时存放区 (CMB): 仓库B在网卡旁边开辟了自带备用电源的临时存放区 (橙色)。仓库B的管理员(CPU)提前把这里的地址告诉了网卡司机。
  2. 智能理货员 (用户态驱动): 新增了一个高效的理货员(绿色),专门负责从临时存放区把货整理进大仓库。

🚀 高速直达流程

  1. 数据从仓库A出发: 仓库A网卡装车(数据可以直接从仓库A的CMB或内存出发)。
  2. 运输: 卡车通过高速路直达仓库B。
  3. 直达卸货!: 仓库B的网卡司机不再去中转区!它根据货物大小:
    • 小包裹: 直接送到小件快速处理区(CMB的一部分/NVRAM,见下文)。网卡卸完货立刻返回拉新货!
    • 大件货: 直接送到大件主存储暂存区(CMB的另一部分)。网卡卸完货立刻返回拉新货!
  4. 理货员处理:理货员(用户态驱动) 在后台工作:
    • 监控小件快速处理区,等小包裹攒够一车(达到条带大小),就打包送入大件主存储暂存区或直接搬进大仓库
    • 大件主存储暂存区的货物搬进最终大仓库/SSD(绿色)
  5. 仓库管理员解放: 仓库B的CPU管理员(红色) 只负责协调通知(比如告诉仓库A货在哪儿),完全不参与具体的卸货和搬运!工作量大大减少。
  6. 临时存放区复用: 货物搬空后,临时存放区空间被释放,等待新货物。

unsetunset三、 专利解决方案:CMB直达架构unsetunset

3.1 CMB直达架

  1. 硬件层:使用带电容保电的CMB内存(ssd盘上读写存储缓冲区),断电不丢数据。
  2. 路径层:网卡直连CMB,绕过主机内存和CPU
  3. 逻辑层
    • 分层缓存:CMB分为小数据区(NVRAM)和大数据区
    • 用户态驱动:异步处理数据落盘,不阻塞传输

关键步骤说明: ① 网卡直达CMB → ② 按数据尺寸分流 → ③ 后台落盘不阻塞

3.2 小数据区

image.png
image.png

功能: ✅ 极速响应(微秒级) ✅ 三副本容错 ✅ 专设元数据VIP通道(存储高频操作日志)

3.3 大数据

功能: ✅ 并行写入提升吞吐 ✅ 纠删码减少存储开销

指标

传统方式

专利方案

提升幅度

小数据延迟

100μs

20μs

5倍

CPU占用率

70%

<15%

80%↓

带宽利用率

60%

>90%

50%↑

OPS(每秒操作数)

50万

200万+

4倍

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-07-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 后端开发成长指南 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • unsetunsetA为什么这样设计?unsetunset
  • unsetunset《CN117573043B》的解法:按“数据大小”走不同路径!unsetunset
  • unsetunset一、前置知识unsetunset
  • unsetunset1.1 这是什么业务场景?文件跨网络传输unsetunset
  • unsetunset1.2 如何理解虚拟内存?黑科技 把SSD当内存用unsetunset
  • unsetunset1.3 如何网卡控制器(NIC Controller)和磁盘控制器(Disk Controller)?磁盘有缓存(DRAM 或 CMB)unsetunset
    • 控制器和缓冲区的差异
    • ✅ 网卡控制器(NIC Controller)
    • ✅ 磁盘控制器(Disk Controller)
  • unsetunset二、专利简化理解unsetunset
  • unsetunset🚚 第一阶段:传统方式(慢速路径)unsetunset
  • unsetunset⚡ 第二阶段:专利方法(CMB直达快车道)unsetunset
    • 🔧 关键升级:仓库B内部改造
    • 🚀 高速直达流程
  • unsetunset三、 专利解决方案:CMB直达架构unsetunset
    • 3.1 CMB直达架
    • 3.2 小数据区
    • 3.3 大数据
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档