有人说它叫DPU(dataprocessing units),也有人说它叫IPU(infrastructureprocessing units),我们不妨用“数据基础设施”一词来一个和稀泥式的命名,因为它的出现本就是数据基础设施领域近年来的一大创新。
为了方便起见,本文还是把它叫做DPU。
经典的传统服务器架构中,CPU在处理各种业务工作负载的同时,还要负责包括网络、存储、安全以及虚拟化软件等非业务型工作负载,由于CPU需要承担很多非工作型负载,导致可用于运行业务负载的空间大大压缩,DPU的出现就是为了缓解这一问题。
DPU与SmartNIC智能网卡有千丝万缕的关系,有人说DPU就是SmartNIC的加强版,在一些语境下两者就是一回事儿,在下文讲出具体的区别之前,我们谈两者的共同点,那就是,都能用卸载来减少CPU资源消耗,从而提升服务器乃至数据中心的运行效率。
英伟达的黄仁勋曾表示,在虚拟化和微服务等技术的推动下,数据中心CPU要处理的任务越来越多,在每年出货的大约3000万台服务器中,有三分之一用来运行数据中心的软件定义的网络堆栈,他认为必须将这部分工作负载卸载掉。
来自谷歌和Facebook的研究也表明,CPU周期里有22%到80%都用来处理各种微服务工作负载。
我们可以粗暴地认为,如果能把这些工作负载交给别人来做,数据中心在CPU资源方面的投入,可以省下22%到80%。
许多研究数字表明,卸载的效果将非常诱人,然而,这场关于卸载的创新与变革,历经近二十年时间才完成。
01虚拟化技术的创新,将CPU卸载进行到底
1998年的VMware x86虚拟化完全由软件独立完成,由于缺少硬件支持,全靠软件模拟,其性能损耗堪称灾难,以至于没多少人能看出这有什么用。
2005年以来,Intel VT-x和AMD-V技术的出现,解决了CPU和内存的硬件虚拟化问题,从而提升了整个虚拟化系统的性能,越来越多的人开始注意到虚拟化技术的价值。
随着PCIe SR-IOV以及IntelVT-d等技术的兴起,I/O硬件虚拟化,包括网络和存储的硬件虚拟化方面都取得重大进步,在性能和灵活性上都有极大提升。
从纯软件模拟的原始虚拟化阶段,到后来的半虚拟化阶段,虚拟化技术越来越多地利用硬件本身的能力,系统的性能和运行的效率也随之提升。
下图是技术大神Brendan Gregg汇总的亚马逊云(AWS) EC2虚拟化技术变迁的历史,同样也记录了整个虚拟化技术的发展历程。
发展历程中,值得划重点的历史时刻是2017年。
这一年,亚马逊云发布Nitro系统,同年,阿里云也宣布有类似功能的神龙架构。
回看过去,我们可以将这一年称之为DPU元年,直到三年后英伟达将其命名为DPU之后,才有了一个统一的叫法。
亚马逊云的Nitro系统有专有的硬件,不仅完成了I/O的硬件虚拟化,更重要的是,它还将虚拟化管理程序Hypervisior从原来的CPU卸载到了专用硬件上,于是,虚拟化技术的性能损耗趋近于零,CPU的能力几乎完全用来运行业务负载。
从使用的角度看,亚马逊云Nitro不仅为云主机带来了虚拟化技术的灵活性,还带来了近似裸金属的性能,鱼和熊掌兼得。
从经济的角度看,当宝贵的CPU资源能被充分利用,同样的成本可以得到更多性能,整个工业界为之震撼。
从虚拟化技术的角度看,虚拟化技术的性能损耗问题,因为有了专有硬件的卸载而取得了巨大进步,同时,也意味着cpu的卸载也进入了新阶段。
02DPU燃起来的三把火
虽然,此前也有过一些把存储和网络以及安全等能力卸载到专用硬件上的做法,但直到2020年英伟达发布BlueField-2并将其命名为DPU之后,DPU一词才真正走进了大众视野。
尽管有争议,但DPU的名字能叫起来说明还是有些道理的,那么,到底什么是DPU?DPU的命名者英伟达是怎么区别SmartNIC和DPU的呢?
上图可见,英伟达认为基于SoC的智能网卡就是DPU,DPU是功能最强大的SmartNIC,DPU新增了虚拟化,网络功能虚拟化(NFV),安全,存储等功能,这种说法也基本符合我们看到的趋势。
维基百科上解释,DPU通常包含做通用计算的CPU、NIC网卡和可编程数据加速引擎,使得DPU同时具有通用计算能力和可编程性,而且,在网络数据包、存储IO处理方面的效率都非常高。
所以,我们可以认为,做网络、安全、存储以及虚拟化的专用系统都算是DPU。
DPU话题热度非常高,DPU被称作是CPU、GPU之后的第三个主力芯片,市场空间不难想象的大,国内市场上芯启源、中科驭数、星云智联、云豹智能都受到了很高的关注,包括资本市场的青睐。
DPU之所这么火,说起来有不止三把火的助攻。
2020年英伟达BlueField-2的发布点燃了DPU的第一把火。
上图是英伟达对DPU加速卡的介绍
BlueField-2集成了Mellanox的网卡和ARM处理器,可以将包括Hypervisor、网络、安全以及存储方面的工作负载从CPU迁移到DPU上。
英特尔对IPU定位的描述
英特尔的入局则是点燃了第二把火。
2021年,英特尔发布了2个IPU卡和一个代号为MountEvans的IPU SoC,IPU卡基于FPGA和低功耗至强,Mount Evans则是基于ASIC和ARM核心,总之都是打破原来由CPU扛下所有的模式,将一部分工作负载交给了专有的设备(未来支持Hypervisior卸载)。
2022年,AMD的入局算是点燃了第三把火。
这是AMD收购Pensando是DPU领域的又一大事件,Pensando的思路与前者没有太大区别,也做网络、存储以及虚拟化的卸载,它用的也是ARM处理器,网络部分是强项,它带有一个P4可编程pipeline引擎。
除了英伟达、英特尔、AMD三家巨头的三把火,还能看见,Marvell也有基于ARM的Octeon10,Fungibled有基于MIPS架构的F1,Broadcom也有基于ARM的Stingray,做的事情大体上一样,局部有不同的侧重点,可以粗暴地认为,都是在抢战DPU市场。另外,DPU的背后还有2个不可忽略的大佬。
第一个是ARM,不难发现,多个DPU方案都用到了ARM核心,ARM在数据中心市场的门口辗转了好些年,终于被DPU以一种更容易接受的方式,正式抬进了数据中心的大门。
另外一个是VMware,VMware的Project Montery支持让ESXi Hypervisior软件运行在除CPU以外的更多设备上,帮DPU卸载Hypervisior,已有多家DPU厂商参与了Project Montery。
03DPU会任由几家大厂吃独食吗?
可以肯定的是,DPU绝对不会像通用计算CPU那么聚集,也绝对比GPU市场更加多元化,从构成上来看,就分为基于ASIC的和基于FPGA的两大类,ASIC和FPGA两者已经共存多年,可见的未来两者必将长期存在。
从功能上来看,除了卸载存储、网络、安全以及虚拟化以外,还有许多方案提供用于机器学习等加速功能,也就是说,做网卡和智能网卡的厂商,以及许多做机器学习加速芯片的厂商都可能以各种形式参与到DPU的混战中。
但最终想取得成功,得看用户需求,DPU兴起于亚马逊云等大型公有云服务商,目前最大的用户群体仍然是大型互联网公司、大型公有云服务商以及大型电信运营商。
大型公有云都多少有自己的DPU,比如亚马逊云有自己的Nitro系统,阿里云有自己的神龙架构,此外,华为云、腾讯云也都有一些功能相对少一些的智能网卡。
谷歌与英特尔合作推出了Mount Evans,微软的Catapult v3用的其实是英特尔的FPGA。
UCloud和国内另外一个规模较小的公有云服务商也使用了英伟达的DPU方案,百度同时使用了英伟达和英特尔的DPU方案。
云服务商对技术很开放,完全不介意几种方案并存,未来市场上,如果有谁宣布采用了多种DPU解决方案将非常正常,因为云厂商相互间内卷得非常厉害。
比如,云厂商的云主机类型就非常多样,很多公有云主机同时使用英特尔、AMD的x86和ARM处理器,按照不同场景又分为不同的类型,比如内存优化型、计算优化型和网络优化型等,分门别类多种多样。
有不同侧重的DPU将帮助云服务商提供更丰富多样的云主机。
比较典型的是亚马逊云,亚马逊的Nitro卡插在服务器上就能很快让服务器变成云主机,Nitro卡成了亚马逊云实例类型丰富的重要推动力。
多样化的云主机类型将帮助云服务商构建差异化的服务,免于在同质化的竞争中遭受价格战,从这一角度看,无疑是有利于云行业发展的。