ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

DPU是什么?从CPU卸载到数据中心基础设施加速

2026/9/21 7:06:46 拓冰建站 浏览量
DPU是什么?从CPU卸载到数据中心基础设施加速 简介这份PDF由字节跳动应用研究中心负责人张扬分享系统梳理从智能网卡Smart NIC到DPU的发展历程与技术动因面向云计算、网络虚拟化、数据中心基础架构方向的开发者和架构师适合快速建立对DPU演进和落地的整体认知。资源共包含1个PDF文件压缩包大小约1.84MB内容密度高便于下载后直接阅读。目前已有446人学习下载。报告从基础网卡的性能边界讲起分析多租户带来的网络性能/隔离要求以及Overlay网络、VxLAN、虚拟交换机、安全隔离等让数据平面复杂度剧增的挑战随后对比DPDKOVS、SR-IOV早期方案拆解Smart NIC的完全卸载、可编程性、生态兼容要求与典型硬件架构。在此基础上进一步说明DPU作为Smart NIC超集在弹性裸金属、虚拟化并池、IO加速、热迁移/热升级等场景的支撑能力并结合字节跳动落地实践展示通过DPU卡对接VPC网络、分布式存储以及用统一hypervisorByteVisor支撑虚拟机、容器、安全容器的工程方案兼具原理讲解与工程参考价值。1. 从CPU的疲惫到专用硬件的觉醒1.1 服务器CPU为什么越来越不堪重负先从一个大家可能都经历过的场景说起。深夜两点公司核心业务流量上来你盯着监控面板CPU占用率已经冲到95%业务却还在报超时。让人最膈应的是——你的数据库、应用进程哪个都没吃那么多CPU真正把CPU耗干的是网络数据包。处理网络数据包的每一步从接收队列到中断处理再到协议栈解析、内存拷贝、上下文切换都是CPU在硬扛。你要知道CPU那点缓存和乱序执行能力本是用来跑业务逻辑的结果大量算力都被“搬数据”这种体力活吃掉了。尤其在万兆乃至更高带宽的网卡普及后纯靠CPU处理网络IO已经完全不现实光一个内核态协议栈就能耗掉几个核。这相当于什么呢你请了一位顶尖的大厨结果他每天都在洗菜、切配、刷盘子根本没时间掌勺。服务器CPU的处境就是这么尴尬。于是大家开始琢磨能不能把网络、存储、安全这类基础设施层面的脏活累活单独交出去做1.2 DPU到底是什么和SmartNIC是什么关系DPUData Processing Unit之所以能在2019年前后正式成为独立品类核心推动力不是网卡厂商而是云厂商自己先扛不住了。当时云计算已经普及虚拟机、容器、SDN这些技术把网络变得无比灵活但代价是服务器CPU被虚拟网络、虚拟存储、安全组这些基础组件吃掉了大量算力。AWS在2014年前后收购Annapurna Labs自己做起了Nitro智能网卡VMware当时也在做类似的事情通过把虚拟化网络功能从CPU卸载到专用硬件上把CPU还给租户业务。等到NVIDIA在2020年提出“DPU”这个概念时市面上已经有了不少“SmartNIC”形态的产品。SmartNIC字面意思就是智能网卡带处理器的网卡可以干一些加速、卸载的活。DPU和SmartNIC的边界时至今日仍然有争论我个人的理解是SmartNIC更像“网卡可编程处理器”主要优化网络数据路径DPU则是“基础设施级处理器”除了网络还覆盖存储、安全、虚拟化下沉并且有独立的应用编程环境。认真讲对一个不搞底层硬件的开发者来说没必要在名词定义上死磕。你只需要记住一个判断标准这块卡能不能把CPU里面那些基础设施软件的开销卸载掉能它就是干DPU这个活儿的。1.3 DPU的三大核心能力卸载、加速、隔离很多首次接触DPU的同学容易把它理解成“高级点儿的网卡”这个认知偏差要纠正。DPU的完整价值是围绕“卸载、加速、隔离”三个词展开的。先说卸载。虚拟化场景里虚拟交换机、防火墙、负载均衡这些网络功能原本都跑在宿主机CPU上。DPU介入后这些数据通路完全在网卡侧完成CPU这边基本感知不到。我在生产环境里做过对比开启部分卸载功能后同规格虚拟机的网络PPS性能提升了接近一倍宿主机CPU使用率从70%掉到30%以下。再说加速。存储场景很典型NVMe over TCP或者NVMe over RDMA这类协议对数据搬运动作的吞吐和延迟要求极高。DPU里有专门的DMA引擎和加密引擎可以把数据的复制、校验、加密解密全部流水线化处理。一次数据从磁盘读到网络发出CPU只在起点和终点各碰一下中间全程不经过内核。最后是隔离。这个能力在大规模云平台里利用率极高说的直白点就是让租户之间彻底隔开。网络策略、存储访问控制、密钥管理全部由DPU这块独立硬件承载。就算宿主机的操作系统被攻破了攻击者想横向移动去访问其他租户的资源也过不了DPU这层隔离。2. 为什么需要DPU数据中心里的三个现实问题2.1 存储网络的数据搬运之痛很多人觉得存储就是把数据写到磁盘里但分布式存储系统真正最耗CPU的其实是网络收发。你写一份数据副本要复制到另外两台机器每台机器都要完成一次完整的收包、校验、写入、应答流程。传统模式下这份工作由CPU和内存系统配合完成。网卡收到数据先放进内核缓冲区CPU拷贝到用户态再交给存储进程存储进程做完副本分发之后还要走一次内核网络栈发出去。这一趟下来内存总线被多次搬运CPU晶振被大量浪费掉。DPU能做的是把这份数据搬运整个卸载到DPU子卡上面。DPU去访问存储节点的内存直接通过高速总线拿到要传输的数据经过RDMA协议封装、加密后直接从网口发给对端。存储软件在主CPU上只需要做控制面的协调数据面一块字节都不用碰。有一个参数值得记住传统TCP服务端在8核CPU上跑到60Gbps带宽时CPU基本饱和。换RDMA跑同样的业务80Gbps带宽下CPU使用率甚至都低于10%。差距就是这样残酷CPU确实做不了数据搬运这种高吞吐低价值的动作。2.2 虚拟化网络的安全与性能困境只要是做过OpenStack、KVM这类虚拟化环境的人应该都见过这几个现象宿主机的OVS进程CPU飙到100%迁移虚拟机时网络抖动到掉线安全组规则一多网络吞吐骤降。为什么会这样因为虚拟机之间通信原本是一张虚拟交换机在宿主机里做二层转发每个数据包都要经过宿主机内核的Bridge或者OVS模块。一旦有加密隧道、SDN控制、安全组防火墙的规则叠加每个包经过的检查点会成倍增加碰到大流量时CPU直接成为瓶颈。DPU在处理这类业务时的最大优势是近线速处理数据从物理网口进来在DPU芯片内部的硬件流水线里完成VXLAN封装解封装、转发决策、访问控制列表匹配全程不需要把数据发到系统内存走一圈。这才是硬件卸载的核心逻辑数据处理路径上尽量少的CPU干预让数据面彻底脱离通用处理器。当然也不是所有场景都适合把网络功能下沉到DPU上。如果是小流量、延迟敏感的控制消息走DPU转发反而会增加一跳。做架构设计时得清楚哪些流量走数据面硬件卸载哪些流量保留在CPU物理网卡路径不能一概而论。2.3 分布式应用的“快慢之争”RDMA的价值分布式数据库、高性能计算、AI训练集群里节点间的通信延迟和带宽直接决定上层能不能跑起来。DPU的另一大用途就是让分布式应用享受到RDMA通信的高性能。RDMA远程直接内存访问字面意思是允许一台机器的网卡直接读写另一台机器内存里的一段缓冲区不需要双方操作系统参与收发过程。这背后省掉的是中断、上下文切换、内存拷贝这些开销延迟可以做到微秒级带宽也能直接吃满网卡线速。但RDMA早期的最大问题是组网复杂、成本高还需要专用的交换机来配合无损网络配置。DPU的加入把这个门槛降了不少DPU可以以硬件方式承载复杂的RDMA协议处理不用应用程序自己管理队列和缓冲区同时DPU侧可以配合软件的拥塞控制、重传机制让整个集群在普通以太网上就能获得接近无损网络的效果。所以现在很多AI训练集群的组网方案已经是CPU配一个DPUDPU对外走RoCEv2链路。墙上的话不多说了DPU在AI基础设施里的角色已经从一个可选配件变成了事实上的标配组件。3. DPU的产业生态与选型指南3.1 主流玩家和产品格局截至现在DPU这个赛道里玩家不算多但每一家都有自己明确的定位和打法。NVIDIA BlueField系列是目前认知度最高的产品线。从BlueField-2到BlueField-3再到BlueField-4它集成了Arm处理器核心、RDMA网卡、可编程数据路径并与NVIDIA自家的DOCA软件框架深度绑定。好处是整个生态成熟、文档丰富、案例多代价是你要从NVIDIA的GPU生态捆绑去考虑成本单卡价格不便宜。Intel的IPU产品线基础设施处理器思路和DPU类似但定位更宽。Intel的优势在于它有自己完整的服务器平台IPU和Xeon处理器之间的PCIe、CXL互连路径可以做深度优化。如果你对Intel熟上手IPU的体验会相对平滑。AMD在收购Pensando之后用Pensando El Dorado系列进入到这个市场主打听从软件定义网络到安全加密、存储加速的一体化方案。Pensando的产品底层采用P4可编程流水线灵活性很高中信银行、中科大这类用户也有公开案例在金融政企领域算有一席之地。国内厂商的进度同样值得关注。中科驭数、大禹智芯等公司都有DPU产品定义和落地案例整体的生态还在快速完善中。对于国内团队来说选择国产品牌的优势是本地化支持响应快、合规风险低。3.2 选型时最值得盯住的四个参数我折腾过几块不同厂商的DPU卡踩过不少坑。如果要给一个刚接触DPU选型的人建议优先盯四个参数就够了。第一接口类型和速率。DPU卡有多种速率版本25GbE、100GbE、400GbE对应不同规模的业务。一般要求预留未来三年的带宽需求买高不买低换卡是件非常折腾的事。第二可编程数据路径能力。有些卡固定功能做得很好但你要自定义一个新的转发规则时发现硬件流水线根本不能改。如果你是在做云计算、SDN这类业务尽量选择用P4或者C语言可编程的DPU芯片。第三内存和计算资源。DPU自身也带CPU核心和内存这部分资源的规格直接决定了你在卡上跑复杂存算逻辑的能力上限。例如数据压缩、加密卸载这类工作对DDR容量的消耗远高于你的预期。第四软件生态成熟度。硬件强但驱动半残的产品买回来就是给自己挖坑。调研时重点看三件事官方有没有活跃的社区论坛、有没有当前内核版本的驱动、文档里能不能找到生产环境部署案例。3.3 从P4到DOCA生态成熟度的分水岭判断DPU生态成熟不成熟就看一件事上层应用开发和底层数据面编程到底隔了几层。不完全可编程的DPU你只能用厂商提供好的套件比如加解密的命令、转发模板改不了数据面逻辑。这种卡退化成“增强网卡”都算好的更麻烦的是当业务逻辑有特殊诉求时你根本没有实现的入口。而真正可编程的DPU会让你用P4语言定义数据包处理流水线或者用C/C直接跑在DPU侧的CPU核心上配合SDK里提供的硬件抽象层去访问加速引擎。NVIDIA DOCA套件就是最典型的一套体系它把底层差异化全部封装成API开发者只需要按框架写业务逻辑。选型时我个人建议优先看那条“软硬件协同”的完备度有没有成熟的中间件库有没有现成的负载均衡或存储网关参考实现有没有从示例代码到生产运维的完整闭环。如果一套生态还需要你怎么做SDK的二次打包才能上手那说实话现阶段的生产环境适配成本会很高。4. 从了解到实践几个接地气的小经验4.1 性能测试别只看带宽DPU的性能指标网络上铺天盖地都在讲带宽。你得清楚带宽只是吞吐量的一种表达方式真正影响用户体验的是PPS每秒处理数据包数和在不同包大小下的实际转发能力。我见过某款DPU标称100Gbps结果在64B小包场景下PPS只能跑到标称值的六成。原因很简单MCAM查找、包头处理这些流水线逻辑在小包场景下消耗的资源更多。而数据中心里音乐游戏为主的业务恰恰就是小包居多像QUIC、DNS、缓存请求这类数据包很少有大包的情况。做选型对比时最好按小包、中包、大包和混合包四类典型业务流量分别打一轮基准测试。同时务必要把DPU卸载的数据面流量和CPU的UNDP控制面流量分开测否则数据会被三层网络协议栈混在一起根本看不出DPU的性能到底如何。4.2 上线前过一遍自查清单我每次准备把DPU方案放到生产环境前都会对着这份清单过一遍踩过太多次因为低级忽视导致的故障这份清单已经成了团队的安全线。网卡固件和HOST驱动的组合版本是否在官方兼容列表里DPU侧内存容量是否满足业务最大并发连接数下的队列需求是否在测试环境复现过大规模数据面流表的动态增删压力场景带外管理端口是否与业务网络隔离明确管理IP规划固件更新和回退机制是否经过完整演练存储介质是否有备份是否对DPU自身加载时间重启后到业务就绪时间做了容灾预算除此之外还有个容易被忽视的技术小细节在虚拟机热迁移场景下DPU侧同步的内存量是多少。如果迁移前后DPU上的内存映射没有做增量同步迁移完成后整个虚拟机的网络会话会全部瞬断这个问题非常隐蔽排查起来极其费劲。4.3 给新手的学习路径建议如果你所在团队准备切DPU但对这个领域毫无基础建议按这个顺序入门先看技术白皮书理解它在基础设施领域的定位再上手跑tinyBlueField这类低成本的模拟器把网络卸载、存储加速这些基本逻辑跑一遍等真正涉及真实硬件时不要一开始就搞复杂项目先用最基础的包转发模式把设备性和连通性验证通过最后再叠加虚拟化、RDMA、加密这类高级功能。这个过程至少要安排两周到一个月的时间。很多人忽略了一个事实DPU的复杂度不在于单点硬件而在于主机CPU、DPU芯片、控制管理面三者的协同设计。不亲自在真实项目里走一遍你是很难形成体系化理解的。从我前面这些经验来看DPU的未来不在某个单一场景而是会成为数据中心标配的基础设施处理器。一个团队如果能在这个拐点时期把技术体系建立起来之后的收获会远超你今天的付出。本文还有配套的精品资源点击获取