关于DPU的性能提升,市面上有很多宣传数据,动辄声称提升数倍甚至数十倍。但真正在业务环境中部署过DPU的人都知道,性能提升的大小高度依赖于具体场景,不是一张嘴说多少就是多少。这篇文章从CPU卸载的基本原理出发,结合实际测试中观察到的数据,聊聊紫金DPU在性能上到底带来了多少提升,哪些场景受益最大,哪些场景提升有限。
CPU卸载的基本逻辑
先理清一个概念:CPU卸载不是简单的"把活从CPU移到DPU上",而是一个系统工程。它涉及到数据通路的重构、中断处理的优化、内存访问模式的改变等多个方面。
在传统架构中,网络数据包从网卡到达应用内存,要经过网卡硬件、内核网络协议栈、套接字层、用户态应用这条路径。每一跳都涉及CPU的参与:网卡收包产生中断,CPU响应中断并处理协议栈,数据在内核态和用户态之间拷贝,最后应用才能读到数据。当网络吞吐量达到几十Gbps时,光是处理网络协议栈就能吃掉好几个CPU核心的全部算力。
紫金DPU做的第一件事,就是把网络协议栈的处理从CPU搬到DPU上。DPU芯片内部有专用的处理器核心和网络加速引擎,可以在硬件上完成协议栈解析、数据包过滤、流量调度等工作。数据从网卡直接写入应用内存,CPU只需要在数据到达后做业务处理,中间的搬运工作由DPU包揽。
这个机制带来的性能提升主要体现在两个指标上:一是CPU利用率下降,二是网络延迟降低。两者的提升幅度在不同场景下差异很大。
实测数据对比
在天翼云环境中做了一组对比测试,分别在有无紫金DPU加速的情况下,跑相同的网络密集型负载。测试场景包括大流量网络转发、高并发短连接、长连接大文件传输三种典型模式。
大流量网络转发场景下,测试了25Gbps和100Gbps两种网络规格。在没有DPU加速的情况下,25Gbps的网络吞吐大约消耗4到5个CPU核心的全部算力用于协议栈处理。开启紫金DPU加速后,同样吞吐量下的CPU消耗降到了1个核心以内。也就是说,仅网络处理这一项,DPU就释放了3到4个CPU核心。在100Gbps规格下,差距更加悬殊:没有DPU的情况下CPU基本被打满,网络吞吐反而上不去;有DPU的情况下CPU消耗仅在2到3个核心,网络线速跑满。
高并发短连接场景模拟的是Web服务的典型负载。在没有DPU的情况下,每秒处理约5万次新建连接时,CPU利用率已经接近80%,其中大部分用于连接建立和销毁时的协议处理。开启DPU加速后,同样的连接速率下CPU利用率降到了30%左右,而且随着连接数增加,DPU的优势更加明显。这是因为DPU上的连接管理引擎可以批量处理连接建立和销毁,效率远高于CPU逐个处理。
长连接大文件传输场景的提升相对温和。在这种场景下,CPU的开销主要在数据拷贝上。DPU通过零拷贝技术减少了数据在内存中的来回搬运,传输延迟降低了约15%到20%,CPU消耗减少了约30%。这个提升幅度虽然不如前两个场景那么夸张,但对于需要大量数据传输的业务来说,仍然是实质性的改善。
哪些场景提升最大
从测试数据可以看出,DPU性能提升最显著的场景有两个特征:一是网络吞吐量大,二是连接频繁创建和销毁。这两种场景下,CPU在网络处理上的开销占比很高,卸载后的收益自然就大。
反过来说,如果业务是计算密集型的,网络流量不大,连接数也不多,那么DPU带来的CPU节省可能只有几个百分点,提升效果有限。对于这类业务,DPU的价值更多体现在网络延迟的降低和安全隔离的增强上,而不是CPU资源的释放。
还有一个常被忽略的维度是存储IO。在分布式存储场景下,数据通过网络传输到远端存储节点,这个过程涉及网络协议栈和存储协议两层处理。紫金DPU同时加速了网络层和存储层,叠加效果下,存储IO的延迟可以降低20%到30%,吞吐量提升更加明显。对于依赖分布式存储的业务来说,这个提升是实打实的。
综合来看,紫金DPU的性能提升不是简单的倍数关系,而是取决于业务的网络、存储负载特征。在匹配的场景下,提升幅度可观;在不太匹配的场景下,也有延迟和安全性方面的改善。理解这一点,才能合理评估DPU对自身业务的价值。