谭婧
别怪我沒提醒,云计算的虚拟化,和前几代虚拟化,大为不同。
前几代产品与DPU隔着一条深不见底的天堑,跳过去,就是通天大道。
问题来了,怎么跳?
从2012年开始,亚马逊云团队,尤其是EC2虚拟化就开始思考:
那个叫做Hypervisor的“超级管理员”,得胆子再大一点,能力再强一点。那么问题来了,世间能做出比纯软件架构更好的超级管理程序吗?
这是我能找到的,安东尼在外媒采访中谈到的,亚马逊云关于DPU思想萌芽最早的时间点。
但那个时候还没有Nitro的影子。
后来,把Nitro System曝光于公众面前的,是一次知名的收购案。
被收购的公司叫做Annapurna Labs,也就是安娜普尔纳峰实验室,公司在以色列和美国都设有研发中心。
登山爱好者,瞅这个名字很眼熟。
巧了,喜马拉雅山最高十峰之一,安娜普尔纳峰。
角峰锐利,山体挺拔,线条凌厉,冰雪覆盖,云海猛烈翻滚,在向全世界的登山者搔首弄姿:“你过来呀~”
又巧了,公司两位创始人Billy和Nafea也是登山爱好者,以攀登此峰为荣。虽未抵达,但心已至,他们将角峰设计成LOGO,印在了封装好的芯片上。
登山是个人英雄主义,DPU是团队实干集体主义。
安娜普尔纳峰实验室对于亚马逊云来说,就是上天恩赐的礼物。国内云厂商一开始有这个好买卖,半夜睡觉都笑醒。
收购这件事情,光有钞票不行,好的“收购目标”极其罕见。
这家“登山爱好者”公司,除了登山,还有几个绝:”其一,Graviton芯片,云厂商第一颗Arm芯片;其二,是一种虚拟机抄近路小能手的技术,ENA。
这种技术讲究的是四两拨千斤,使得虚拟机绕过软件(内核和用户空间网络处理程序),直接操作硬件(网卡),如此这般,提升了网络效率。
昔日寂寂无名的ENA,成为亚马逊云网络虚拟化的关键技术,日后是大名鼎鼎的Nitro的一部分。
2015年,收购价3.5亿美元。别看当时花了多少,要看日后省了多少。这是一场几乎完美的收购,每年都为亚马逊节省大把美金。
因为DPU的特长之一就是很能打,打败虚拟化损耗,不在话下。损耗少了,当然省钱。
安娜普尔纳峰实验室开发的这张卡,不仅卸载了VPC网络功能,还卸载了EBS 存储网络功能。
这就是前文提到的,“任务卸载”技术。
据网飞公司技术高管(Brendan Gregg)的说法,Nitro的性能损耗非常小(不到1%),Nitro的虚拟化性能接近裸设备。
亚马逊的文化里,有单向门和双向门决策的说法:“单向门”的任务,像电影《鱿鱼游戏》,大抵是干活时被人用枪指着脑袋。只要任务失败,就“嘣”一枪。
“双向门”就是这个场景用得不好,搬到别的地方,说不定还能用上。
DPU是专用的,“专用”意味着,拿到别处“没用”。
Nitro 系统开发的时候,枪和脑袋的距离,几毫米。
研发团队在描述艰难的开发岁月的时候,像个文科生,一口气用了四个形容词。他们说:“这次我们做决定,有条不紊,谨慎,缓慢,深思熟虑。”
这不是普通的任务,其要求已经超出了传统虚拟化技术的能力。因为打破传统,就是浴火重生。
研发团队在技术博客里写下:“只有创新才行,但我们没有急着拍脑袋。整个探索的旅程历经五年,仔细、反复试验,每一步都很小心,验证我们前进的方向是正确的。”
喜大普奔的2013 年,亚马逊云研发团队推出了第一款Nitro 卸载卡(C3 实例类型),将网络进程卸载到硬件中。
马不停蹄的2014 年,将 EBS 存储卸载到硬件中(C4 实例类型),这次研发团队首次与一家名为安娜普尔纳峰实验室的公司合作。
Nitro研发团队谈到了研发的时间节点:“2017 年,我们卸载了最后的组件,包括控制面和剩余的 I/O,我们引入了一个新的管理程序,具有 C5 实例类型的完整Nitro系统。”
代码长什么样子,如今已经记不清了,但工程师依然记着当时的心情:“这是投入的挥金如土,是身心的殚精竭虑,是承诺的使命必达,是不可思议的时刻。当Nitro 系统推出时,五年辛勤,此生难得。”
Nitro给亚马逊云带来什么?
Nitro的迭代推动亚马逊云最核心的EC2产品家族不断往更大、更快、更安全、更稳定、更多类型、更高性价比方向演进。
Nitro 系统让亚马逊云有能力提供 100 Gbps 增强型以太网网络的云,支持更高吞吐量或受网络限制的工作负载(如 HPC 应用程序)。
借助 Nitro 系统,将虚拟化功能卸载到专用硬件上,将 EC2 的架构分解为更小的块。这些块以多种不同的方式组装,能够灵活地设计和快速交付 EC2 实例,并提供越来越多的计算、存储、内存和网络选项。
亚马逊云 CTO 沃纳·威格尔(Werner Vogels)曾经说过,“在亚马逊云,90%到95%的新项目,都是来自于客户给我们的反馈,剩下的5%也是从客户角度出发所做的创新尝试。”
而Nitro 系统正是这种项目之一,它诞生于2013年,成熟于2017年,到现在还在不断进化中,2021年已经迭代到第五代。
最重要的一点,亚马逊云科技的团队看到了,阿里云神龙团队也看到了。
安东尼看到了,张献涛也看到了。
把传统的虚拟化技术直接移到云计算,缺陷极其明显,毕竟不是为了云计算的服务器而生的。
2016年左右,张献涛博士,天天都在思考同一个问题:什么样的虚拟化技术,才适合云计算?
得从根本上解决传统虚拟化应用到数据中心里面存在的缺陷(也就是性能、资源、隔离方面所有的问题)。
他脑中的“神龙系统”慢慢清晰。
那一年里,张献涛博士密集、低调往返于北京和杭州两地,意在劝说多位大咖级芯片主架构师加入阿里云。
有这样一句话,很打动人心,日后实现的时候,更激动人心:“外界无法理解互联网公司要做DPU的决心,这件事情绝对是前人没有做过的,它可以改变云计算里面最核心的技术。”
神龙芯片给阿里云带来什么技术价值?
张献涛认为,第一,解决CPU和内存完全隔离的问题。这里的隔离有两个层面意思,一个是安全方面的隔离,一个是性能的隔离。
第二,IO链路上最容易出安全漏洞。QEMU这个模拟器是从传统的虚拟化带过来的,在神龙芯片第一代的那个时间点上,它是完完全全过时了。
所谓的过时了,包括两点。其一,代码是开源的,人人皆可见。其次,安全漏洞多,常发生一些虚拟机逃逸的情况。
在公共云的世界里,“虚拟机逃逸”五个字,还没有说出口,就有一群人扑上去,捂住你的嘴——虚拟机逃逸=绝对不允许。
DPU解决了性能,同时也解决了安全方面的问题。
神龙芯片一开始就想好了,多张卡解决问题,强调多合一,多种功能在一张卡上实现,复杂度下降,稳定性增强。
两架马车,解决的问题一样,实现的思路不同。
DPU的一个关键就是,“从哪里切”与“切到何处”,答案充满玄机和禅意。这让人想起庖丁解牛,若要回答:骨在哪,肉在哪,骨肉相连又在哪;恐怕要稔知全牛结构,全凭手感,刀法在脑海里,在肌肉里。
这还不够,难题在于,每一家云厂商的软件是不一样的:怎样处理分布式存储和分布式网络的软件接口?哪些应该放在控制路径?哪些放在数据路径?
如果不懂虚拟化,你就不知道怎么切,或者切完后性能也不好。
DPU团队表面生气,心里憋闷,谁出的破题?再或者,有的DPU团队,还没有看到牛在哪里。
DPU这个东西,光有硬件思路,或光有软件思路,一定会出大问题。
当故事讲到这里,虚拟化的知识就不够用了,要细聊张献涛在英特尔的另一段经历。
上海虹桥作为著名的交通枢纽,周边房价,一直看涨。
2005年的时候,张献涛刚到英特尔实习,工资不高,钱包不鼓,在大虹桥地段找房子住,选来选去,选了仙霞路附近的茅台路,一个叫做天山五村的老式小区。
大虹桥的房价,逼得张献涛和师兄合租了一个单间,逼仄的房间里,摆了两张单人床,已经够局促了。没想到,更局促的在后面。
一进英特尔,张献涛的压力值就爆表了。
为什么?他发现,六年的计算机专业白读了,妈耶,英特尔大牛们说的话,居然听不太懂。原因是他们讲的那些东西,都牵涉到芯片内部的专业知识。
能主宰一个时代的门派,半导体产业链的顶端,还是有很多秘籍的。脑袋混沌了几天之后,张献涛那股子不服输的劲儿,上头了。
《英特尔系统编程手册》(System Development Manual)是这样一种存在,你看第一遍,包你根本看不懂。
照理说,计算机的操作系统,是按此写出来的。比如,英特尔的64位处理器用的是IA 64,配套的《手册》有好几卷。
《手册》也诚不我欺,卷卷厚如板砖,就不信你能读完。
晚上,师兄睡了,张献涛不敢开大灯,从枕头下面摸出一样东西,手电筒。于是,咳嗽放屁都在一个被窝里,用手电筒的光,照着看《手册》。
老旧小区的黑瓦和夜色融在一起,楼层里闪烁着零星的光,从窗口的方格里冒出来,张献涛屋里的光,从被子里透出来。
开了头才知道,痛苦是一层套一层的套娃。每日不辍的翻读,还要看操作系统的内核代码。这行代码为什么这么写,他要到编程手册里找答案。这还不够,要看Linux和Xen的代码。
看不懂怎么办,英特尔还有一个“师兄帮扶”机制,类似学霸红领巾,不懂问师兄。
左手一本软件编程手册,右手一本硬件编程手册,外加Linux内核代码,一行一行去理解。再看不懂怎么办,去找美国的工程师请教。张献涛吃一口编程手册,蘸几行Linux内核代码,成为每日的例行动作。
日復一日,张献涛对CPU、对操作系统的理解,加深加深,再加深。
在英特尔公司,张献涛知道了一个“冷知识”。
任何一颗芯片,从英特尔公司“走”出来之前,内部员工可能提前三到五年就已经拿到了“未出厂的芯片”。
工程师们要把 CPU所有的新功能用软件“用”起来。
说白了,到手的芯片还没有正式量产。芯片里面会有各种各样的毛病。你要去理解“问题”来自于软件,还是硬件。
不了解这点,你永远不会怀疑CPU会出问题。
DPU的技术领袖,需要对芯片、对芯片组、对PCIe总线、对操作系统、对虚拟化的了解,到达一种境界,关灯取物,如同开灯取物一样自如。
看似行云流水的判断,是在日复一日、年复一年、无声无息中形成的,就像火山爆发后,热风里从早到晚飘落的火山灰,把一切技术难点都掩埋。从火山灰中醒来,看到一个重塑的新世界。
DPU的部署,无异于完成了给高速飞驰的列车换防风材料,给深海作业的潜艇换防水材料。
2017年到2021年,亚马逊云和阿里云均已跑步进入了DPU产品迭代良性循环的新世界。
2021年的夏天,张献涛博士对我说:“以前,没有人相信互联网公司需要芯片技术。现在,大家都相信了。”
裁判一声长哨,男主持人富有磁性的声音播报:观众朋友们,这里是数据中心赛场,IaaS层终场,云计算基础设施最后一场比赛。
当优秀DPU问世的时候,国内云计算厂商在IaaS层,这轮的战斗,宣告结束了。
自研出DPU的云计算厂商说:“我摊牌了,我赢了。”
哪怕五年前,放眼找工作的网站,就算云计算厂商“放出”招芯片专家的岗位,谁敢去?去干啥?再资深的HR一看岗位说明,都懵了,就没接触过搞芯片的人。
软件开发周期何其快,硬件开发周期何其慢。旁人都说,这恋情看上去就不长久。
老牌芯片公司一扭头,眼角余光里都是质疑。云厂商只擅长软件,如何面对芯片 云厂商面对的场景极其复杂,用芯片怎么搞定?
问题是复杂中的复杂,需求是刚需中的刚需。
很抱歉文章科普得迟了,DPU是一种云上服务器的专用芯片。
这句话,有两个关键词,“云上服务器”和“专用芯片”。
先讲,云上服务器。
云上服务器有些像公共澡堂,可以一个人用,也可以多人共用,麻烦都是“一起用”带来的。
可口可乐和百事可乐要在一朵云上,还能互相看文件,立马就翻脸了。
那怎么办?
答案是:得插DPU,而且是每台服务器都得插。十万台服务器,插十万张DPU。杀毒软件是用软件保护安全,DPU的作用之一是用硬件保护安全。
说到安全,硬件比软件更能打。
再讲,专用芯片。
提到专用芯片,挖矿炒币赚到钱的人兴奋了,抢着说:“我最内行。”因为不同的加密货币,要不同的矿机。矿机越对口,挖币越赚钱。
金钱的铜臭味,告诉我们:专门的事情,让專门的芯片去做。
现在还有争议,但是未来,会看得清楚,DPU是云计算的标配。
摩尔和登纳德两位老先生,无情指出“现实之无奈”,CPU成了最昂贵的“打工人”。
所以,DPU作为专用硬件,除了安全,还要来给CPU减负。
几条街之外,都能听见DPU的唠叨:“哎呦,CPU我的祖宗,快放下,您哪敢动这,可不能把资源浪费在网络和存储的负载上。”
CPU则说:救救孩子吧。我太难了。
CPU大声呼救的原因是:CPU既要处理大量的上层应用,又要维持底层软件的基础设施,还要处理各种特殊的IO类协议,不堪重负。
把“负担”从CPU上卸载下来,DPU将有望成为承接这些“负担”的代表性芯片。CPU也很高兴DPU的出现,你行,你上呀。
的确,有人夸DPU是继CPU和GPU之后的“第三颗”主力芯片。
不要因为鲜花和掌声太多,就对DPU的能力有什么误会。
CPU稳坐“主咖”宝座,CPU可以当DPU用,CPU也可以当GPU用,但是反过来不成立。
DPU的事情CPU能做,但是,CPU比DPU昂贵老多了。牛刀太贵,杀鸡的人自然不舍得。
云厂商想实现“一起洗澡(一起用)”,得靠虚拟化技术。虚拟化虽好,但是会引发一堆“糟心事儿”,比如性能损耗,甚至有人把这种损耗比喻成“交税”,搞不定当然多交税。
这种损耗也相当于,还没有开始洗澡,一半水在水管里就浪费光了,肥皂沫都没有来得及冲掉。
技术问题越难,极客们越兴奋,不自觉扬起了手里的小皮鞭。
虚拟化是DPU的精髓,虚拟化的历史几乎和计算机一样悠久,是计算机科学史上最伟大的思想之一,造就了伟大的云计算技术和市场。
“制造假象”“隐藏细节”(给上层应用提供一种假象,降低上层应用使用下层资源的复杂度)。
我们天天在用的操作系统,也是一种虚拟化的“思想”,是对硬件资源的虚拟化。PC机的虚拟化,把计算的核心“变成”进程。把存储介质“变成”文件系统。
云计算的硝烟战火中,虚拟化这个喷涂了迷彩伪装的弹药库,终于藏不住了。