DPU怎么就火了
有多火?目前在这个领域的玩家或者潜在玩家有Broadcom、Intel、英伟达、Netronome、Pensando、Fungible和Xilinx,还包括云供应商三大巨头,国内也有很多玩家。
但是cloud3认为真正和DPU沾边的就两家,其他的都是在玩智能网卡,打着DPU的旗号干着加速的事儿。
DPU是什么
DPU是什么?
最早提出“数据为中心”Data-centric计算时代这个概念的是硅谷创业公司Fungible。在数据为中心的架构中,让计算更加靠近网络,即在流量产生或者到达的地方,通过增加一个SoC的方式Offload掉Host CPU对流量处理的开销。
目前DPU是没有一个明确的定义的,虽然大家都强调以数据处理为主,但实际上做的都是Smart NIC的事情。
两个典型:
Fungbile的出发是以网络架构为中心,以网络安全为手段的技术路线,本质上是一个L4(协议层)的公司在试图解决L2/L3(Fabric和路由)的问题。
Nvidia是以设备为中心,以GPU数据加速为手段,本质上是一个L1(设备层)的公司在解决L2/L3(Fabric和路由)的问题。
两个典型代表Fungbile和Nvidia,一个以网络架构为核心,一个以设备为中心。两者的技术路线虽然不同,但却是是最接近DPU的玩家。
本文主要聊聊DPU为什么会出现。
1.冯诺依曼的缺陷
没有完美的架构。
冯·诺依曼架构为计算机大提速铺平了道路,却也埋下了一个隐患:在内存容量指数级提升以后,CPU 和内存之间的数据传输带宽成为了瓶颈。
CPU永远处于饥渴状态,执行组件永远等待指令执行,提供的指令始终喂不饱CPU。这是冯诺依曼架构的最大缺点,也是永远无法解决的问题。
一个通用的解决思路是从CPU Centric到Offload Computing的过程,这个过程中伴生出了基于GPU的异构计算、基于网络的计算(In-Network-Computing)或者基于内存(In-Memory-Computing)或者基于存储的(In-Storage-Computing),都是将计算逐渐的Offload到各个扩展卡上处理。
但是最终的目的是为了什么呢?让计算在最靠近数据的地方发生从而降低通信量,进而规避冯诺依曼架构的瓶颈。
2.协议栈放哪
网络协议栈该放在哪里?
Linux内核在TCP/IP网络的海量数据处理时已经成为瓶颈,一个完整的TCP连接,中断发生在一个CPU核上,但应用数据处理可能会在另外一个核上,不同CPU核心处理,带来了锁竞争和cache miss。
所以人们想了些其他的办法,例如intel的DPDK使用内核旁路技术,开发者得以编写自己的网络协议栈,让协议栈功能变得更加灵活,专注于某些高级特性,并且针对性能进行优化。可见,用户态网络协议栈最大的特点就是 “自定义”,针对特定的业务需求来实现数据流量转发控制以及性能提升。
还有一个办法就是协议栈的Offload,把协议栈的处理放到专门的网卡上处理,这不就是现在Smart NIC的功能嘛。但是网络数据肯定不会止于Offload,应用最终要从Socket编程逐渐演化到其它形式的内存访问上。
3.合久必分,分久必合
哪些东西是属于CPU的。
我们在CPU的发展历史中可以看到出现过大量的PCIe加速引擎,例如加速存储、加解密等,这其实就是一下做Offload的芯片,而后来这些模块又在某个阶段内置到CPU中了。
在DPU时代,本质上我们应该把CPU更多的解释为ControlPU,而DPU则是处理大规模Data的PU。说到底就是把流程控制还保留在CPU中,而数据处理要从CPU中拿出,放到DPU中去做。
如果让你设计计算机,DPU上有多少功能可以被CPU吸纳,CPU上又有多少功能可以被拆分到DPU中?
4.如何在击败CPU
转变思路。
如果想通过蛮力在性能上击败传统的CPU,结果注定会失败,这样做既没有竞争力,也无法扩展。如果说一颗CPU尚且无法以每秒100 Gbit的速度处理数据包,如何能期望一个嵌入式CPU做到?
换个思路,如果有个设备足够强大和灵活,可以处理所有网络中的数据,而嵌入式CPU则被用来做控制路径的初始化和异常情况处理,一切就都解决了。
5.不交流量税
还算力给用户。
根据Fungible和AWS的统计,在大型数据中心中,流量处理占到了计算的30%左右,即数据中心中30%的计算是在作流量处理,这个开销被形象的叫做数据中心税(Datacenter Tax)。
以数据为中心的计算时代,让计算在最靠近数据的地方发生从而降低通信量进而规避冯诺依曼架构的瓶颈。让真正的算力留给用户,用户不交流量税。
6.DPU不是智能网卡
DPU不是智能网卡。
DPU区别于Smart NIC最显著的特点,DPU本身构建了一个新的网络拓扑,而不是简单的数据处理卸载计算。
最开始Fungible就是因为发展了自己的TCP协议,极大的降低了以太网互联的延迟和抖动问题,从而定义了DPU芯片。
DPU和Smart NIC的区别如下:
DPU可以构建新的协议,Smart NIC一般只是加速协议处理。
DPU可以构建总线拓扑,Smart NIC是一个设备,无法构建新的总线拓扑。
DPU可以作为中心芯片(可以直接控制SSD等设备),而Smart NIC无法直接控制SSD、GPU等。
DPU可以脱离host CPU存在,而Smart NIC不行,这个本质的区别就是DPU可以构建自己的总线系统,从而控制和管理其他设备,也就是一个真正意义上的中心芯片,第三颗芯片。这个也是为什么Smart NIC出来这么多年,只有Fungible可以说他们的芯片是DPU。
最后
还是那句话。
CPU用于通用计算,GPU用于加速计算,而数据中心中传输数据的DPU则进行数据处理。天下大势,分久必合,合久必分。
关于DPU就讨论到这里。