欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

阿里云CIPU技术深度解析,万字精华分享!

最编程 2024-02-05 07:51:49
...


网络异常,图片无法展示
|


2023年7月26日,阿里云弹性计算团队与智东西公开课联合出品的系列课程【阿里云弹性计算技术公开课】第四节正式播出,阿里云资深技术专家杨航带来了主题为《阿里云CIPU技术解析》的课程分享,本期课程在阿里云官网、智东西官网、钉钉视频号、阿里云微信视频号、阿里云开发者微信视频号、阿里云创新中心直播平台&视频号等多平台同步播出。


2022年6月,阿里云发布了云基础设施处理器CIPU(Cloud  Infrastructure Processing  Unit),将其定义为取代传统CPU的新一代云计算体系架构的核心。在这个全新体系架构下,CIPU向下对数据中心计算、存储、网络等底层基础设施快速云化并进行硬件加速,向上接入飞天云操作系统,将全球数百万台服务器构建为一台超级计算机,实现资源的灵活编排和调度,给用户提供高质量弹性云计算算力集群。

杨航_阿里云CIPU技术解析 | 课程回放


本篇文章根据杨航的课程整理而成,供读者阅览:


网络异常,图片无法展示
|


一、什么是云计算:计算和云计算是什么关系


网络异常,图片无法展示
|



什么是云计算?2009年美国的伯克利大学对云计算做了精确的定义:


1、云计算可以按需使用无限量的计算资源。这句话可以看出云计算与计算的巨大差别。比如传统IT,线下我们在HP/Dell买服务器,它不是按需的。传统IT是on premise,需要把这些服务器、交换机、存储,在使用前就要在线下机房构建好。云计算的服务是按需使用所需,而且计算资源是无限的,而不是买了两台,最大就只有两台,想扩容和缩容,想伸缩都是比较难的。


2、消除云用户的预先承诺。即用户在任何一个region区域或AZ可用区,只需要用支付宝或信用卡付费,付费成功即可按量使用计算存储网络的资源。用户并不需要跟CSP(Cloud Service Provider)云提供商预先承诺要在哪一个地方部署多少资源。


3、根据实际需要支付短期使用计算资源的费用。即用户不需要承诺他购买的计算资源的预期使用时间。用户购买后即使只用一分钟也可以,对于云计算所使用的容器或者函数,计时单位可以精确到毫秒级,哪怕使用几十毫秒都可以,只要用户希望如此使用即可;当一个计算资源必须让用户使用四年、五年或者整个生命周期,即说明它不是云计算,而是IDC(服务器托管),或者说是一个私有云。在此引用王坚院士的比较极致的说法:严格意义上来说,私有云不是云,只有公有云的公共计算资源池才是云。


4、通过规模经济显著降低成本。即我们希望通过使用超大的数据中心,通过规模经济,放大供应链效益,摊薄研发成本。规模经济很重要,例如芯片,大家一定知道,没有规模是一定不能做芯片的,因为其研发成本太大。软件产业、芯片产业或者整个IT行业,核心的逻辑就是规模经济,通过无限低的复制成本,来把初研发成本等摊到零。


5、通过资源虚拟化技术简化操作并提高资源使用率。我们希望通过资源虚拟化做到什么呢?把客户使用的资源虚拟化,把计算、存储、网络抽象后,达到简化操作,提升资源利用率的效果。在此不展开具体细节,大家可以自行搜索相关信息。比如VMware的一些经典论述,虚拟化是可以有效地提升比如CPU利用率、内存利用率,IO利用率以及网络利用率。这点我不展开,大家可以把它当作结论。


6、通过多路复用的方式运行来自不同组织的负载,提高硬件资源利用率。核心是多路复用。因为公有云的池子,比如淘宝在双11使用公有云的计算资源池;而到了春节,大家使用12306抢火车票的时候,12306也使用同样的公有云计算资源池。这样就可以削峰填谷,通过多租户使用同一套的计算资源池,保证此公有云的硬件的资源利用率显著提升。


按照伯克利的定义,只要满足这六点,就是云计算。不满足这6点就是“忽悠的云计算”,这是我的看法。当然我想讲的主旨是什么呢?今天我们可能被很多的短期行为,有很多所谓的转售服务器、转售CDN或者转售GPU卡,事实上它们不是云计算,没有通过技术创造社会红利,也没创造客户价值。从长期来看它们是不可持续的,这就是为什么我要在开篇的时候重新recap伯克利在2009年提出的云计算的定义。


网络异常,图片无法展示
|


相信大家比较关心云计算与计算的关系 --- 它们是正交关系,不是替代关系。比如,目前AI分布式系统中,我们希望AI分布式系统横向scale  out后,它的加速比能保持1。微软开源了deep speed,它做的是计算维度的事情;比如我们构建Hadoop和Spark是在构建计算,但是云计算还有一个很重要的目标,就是把云的资源池放在一起,做到弹性极致的伸缩,然后再做到多租。


多租就是整个资源池,可以给淘宝用,也可以给12306用,这个才是我们真正想要的云计算。当然弹性多租需求发生在IaaS层,就需要做虚拟化;到了PaaS层,比如大数据,演进出存算分离等需求。


总的来说,计算和云计算这两个维度是正交关系,不是替代关系。但从长远来看,我们会看到计算一定会演进到云计算。比如NVIDIA,现在的NVIDIA市值1万亿美金在做加速计算没有问题。我们要持续地增强计算能力,还需要云厂商把计算通过弹性多租,让计算更具普惠化和高效,然后让创新的成本变得很低。


网络异常,图片无法展示
|


而从阿里云的角度看待云计算,我们认为是四个目标:稳定、安全、性能,成本。


稳定和安全是所有事情的1,性能和成本都是后面的0。当然不是说性能和成本不重要,如果只有稳定安全的1,是没有竞争力的;如果没有后面的0,前面的1也没有价值,所以说他们是相辅相成的。


其实大家可能会发现,如果没有在稳定和安全上交过学费,便得不到这样的认知。因为稳定和安全被认为是售后,售前大家永远关心的是性能和成本,这是云计算的大目标。


可能大家会有疑问:稳定、安全、性能和成本事实上是计算的目标。


其实更严格来看云计算的目标还需要加两点:弹性和可持续。可持续指什么?我们的环境可持续。因为我们的计算资源逐步部署于云后,这些绿色计算,还有与之相关的,包括我们的架构可持续也是很重要的事情。


当然弹性和可持续,也是云计算厂商的目标。我们以客户视角列出如上稳定、安全、性能和成本四个目标,更完整的是把弹性和可持续加上去,云应该是有六个目标。有了这六个目标呢,我们就会分IaaS、PaaS、SaaS。


SaaS做的最成功的就是微软的Office 365,还有Salesforce。PaaS层,就是大家会看到的大数据、AI和数据库,典型就是这三个业务。这三个业务主要是数据智能、数据治理相关的。然后再到下面,狭义的云主要是指IaaS,就是基础设施即服务。


二、 公有云IaaS有哪些业务痛点


网络异常,图片无法展示
|


基于弹性计算上下文,我主要讲公有云的IaaS有哪些业务痛点。我们已经讲清楚阿里云如何看云计算:还是从客户视角,是否安全、是否稳定的性能、是否有竞争力、成本是否有竞争力。


1、安全,做过几年云计算后,会发现安全是我们如何做业务决策的规则。这个规则是什么呢?核心是因为什么呢?公有云这个大的计算资源池,计算、存储、网络都是多租户使用的。多租户场景中数据安全永远是最重要的。因此对于公有云来说,没有数据安全,就没有公有云,安全永远是第一位的。


在此展开,在没有CIPU、DPU、IPU、神龙之前,我们遇到什么问题?


第一,大家对虚拟化都有一些了解,QEMU里面有大量的冗余的设备仿真代码。它不是仅仅仿真virtio,它还仿真了很多很多设备,其代码量是很大的。当代码量大的时候,这些安全攻击敞口无法收敛,所以我们就会看到大量的注入攻击。这种注入攻击,特别是c代码缓冲器溢出等问题,是很难根本性解决的,根本性解决方法就是把这部分被攻击的代码删除掉。


第二,在公有云里,数据在计算、存储、网络等子系统流动,需要把它们完全的加密。因为一旦安全被击破,这个云公司能否生存都是问题。


第三,我们看到很多客户,不论是内部客户还是外部客户,他们希望在云上构建安全容器。传统Xen和KVM架构是无法实现的,事实上就是安全上,我们看到传统的非神龙、AWS Nitro、IPU、IPU或者CIPU这些架构下会遇到什么样的挑战。


2、稳定,稳定一定是数据驱动的,我们通过线上的监控和诊断,线上的数据采集,采集后就可以针对稳定性做提升。比如我们对至强CPU的DDR系统里面,采集到单比特DDR失效这样的数据之后,是可以预防性地对VM做热迁移,这只是举个例子。


更通用的原则是什么呢?我们希望看到计算网络存储芯片的实现细节,可以拿到更多的稳定性数据,在系统在变得不可用之前能预先诊断。那么我们就可以提前把这个机器热迁移,或者宕机迁移,或者提前让客户做主动运维。若我们不深入做这个软硬件系统的时候,是很难实现更极致的稳定性。


3、性能,大家都知道,在公有云中一定要网络虚拟化。拿阿里云举例,在Xen时代的网络虚拟化在内核做,网络虚拟化时延做到了150微秒,时延抖动是很大;在KVM时代基于DPDK,网络时延做到50微秒。在线业务对时延抖动是相当敏感的。Xen架构网络转发pps,要承载企业级业务,也有一些关键性瓶颈。


更进一步,我们今天的数据密集型,不管是大数据、 AI,还是数据库系统,它们对高IO和网络带宽的全程零拷贝需求强烈。为什么要零拷贝呢?因为当带宽达到50G全双工,100G全双工,甚至400G全双工的时候。当有数据拷贝,至强或者GPU系统的缓存子系统和内存子系统,它们的性能会遇到很大挑战。比如2×100G,要在XEON的LLC缓存或者DDR里面拷贝数次,那么IO、DDR和缓存子系统都会出现严重的性能瓶颈。


4、成本,当今很热的大规模AI分布式训练,需要高带宽的RDMA互联。而在各种HPC业务对长尾时延和静态时延都有严格要求。在这种情况下,我们对性能实际上是有很高的要求。我们做IaaS的虚拟化,拿阿里云举例,在Xen时代,DOM0耗掉了一半的CPU;到KVM时代,我们耗掉了10%的计算资源和内存资源,还要加网卡来做IO的虚拟化。这个成本实际上是需要进一步做优化的。


总的来说,公有云的IaaS业务痛点总结为:要解决安全问题,进一步提升安全需求,稳定性如何进一步提升?性能如何做到极致的高,成本如何做到极致的低。


三、 什么是CIPU,以及CIPU解决什么问题?


幻灯片7.JPG


1. CIPU从何而来?


CIPU ( Cloud Infrastructure Processing Unit),即云基础设施处理器。它并不是新技术,我认为CIPU主要的源头是两点。


第一点,以intel VT-d 作为一个典型的代表,它代表IO硬件虚拟化技术的成熟。因为这项技术的成熟,才会有CIPU,DPU,IPU,所以这是前置条件。Intel VT-d 等IO虚拟化技术的成熟,会推动PCIe社区做标准化,比如PCI社区里面有SR-IOV技术,MR-IOV技术等的标准化。


第二点,和CIPU、DPU、IPU很相近,对于做通信的同学,一定会觉得很似曾相识,它的近亲是NPU,即网络处理器(network processing unit)。它是很早的技术,国内第一波做网络处理器的可能是2001、2002年开始的。


网络处理器的用途是可编程,处理网络效率高,但它不是算力加速和offloading,它是让网络研发同学精确控制各种访存有多少个Cylce和访问次数,所以它其实是对内存使用的机制优化。可编程的网络处理器把缓存一次性剥掉,就可以形成many core架构。


2012年,最先是AWS在Xen这套系统在处理IO遇到了性能瓶颈,AWS便开始引入比如Cavium的LiquidIO,还有82599外连网线做直通。不止AWS,Broadcom、Cavium、Freescale、ezchip、 intel iXP等也在开始在2012年左右关注这个市场。如果站在博通、思科或者华为做通信的视角,它是一个智能网卡。但今天它确实不再是智能网卡了。


在2012年通信市场,最火的技术之一是SDN和NFV。那时希望把网络设备、网元通过类似云的技术,通过虚拟化的技术,使通信设备硬件软件解耦合。软件独立运行,独立开发,不与硬件耦合,因为硬件的铁盒子不是关键,软件才是灵魂。


当年SDN和NFV流行的时候,通信行业已经在设想通过NFV,通过云化的设施承载无线核心网络甚至基站。那时,通信在网络虚拟化也遇到了大量的问题。自然就想到把网络处理器放在网卡里面来做。


所以在2012年时,云上的IT和通信形成了合流。最终通信领域的网络处理器,或者称之为智能网卡的技术进入了云的视野。


此后,2015年AWS收购了以色列的Annapurna Labs。当然阿里云也开始的比较早,从2015年起,阿里云和上文提到的供应商,比如博通、英特尔都有不少的接触。在那个时间点大家对技术发展的预见是一致的。


2014-2015年,阿里云在预研,到了2016年开始真正的大规模投入,2017年神龙发布,此时AWS也发布了同样产品。当然,我们也不必为此震惊,因为只要有足够大的规模,遇到了相同的问题,一定会找到相似的解法,这纯粹是业务驱动的问题。


幻灯片8.JPG


阿里云CIPU的诞生,完全是业务驱动的结果。2015-2016年,我们并不知道原理,也不知道计算机体系结构,纯粹基于解决业务痛点改进了系统架构。2009年,阿里云开始做云;2013年做飞天单集群5K;2017年,发布神龙架构; 2022年,发布了CIPU。


幻灯片9.JPG


阿里云内部做了三代神龙。第一代神龙发布于2017年10月,这一代只想做一件事情,就是弹性裸金属。在上图第一个截图可以看到这个弹性裸金属的性能,比如网络可以做到450万PPS,存储可以做到20万IOPS,接口做到20GbE。


第二代神龙发布于2018年9月,在网络、存储、接口性能大幅提升,到2018年底2019年初,我集团的全部业务从ECS切换到神龙架构,比如淘宝、天猫、菜鸟、高德和饿了吗等。如今阿里云新增的每一台计算服务器其实都是在神龙和ECS。


第三代神龙发布于2019年9月26日,这一代我们做了一些存储网络快速路径的芯片加速。你会看到它的IOPS在上升,PPS在上升,延迟在下降。


其实,当PPS超过1000万的时候,再提高PPS意义并不大,所以我们就会看到AWS Nitro V5做到20Mpps就够了。再提高PPS也只是在做内卷,网络上真正重要的是解决丢包、抖动、时延的问题,这些对业务真正重要的。


神龙走到今天,它的核心逻辑是要规模化,没有规模,无法实现垂直整合,因为研发成本并不低。


幻灯片10.JPG


CIPU是为云而生的,没有云,CIPU便如同废铜烂铁,毫无价值。只有在云的环境下它才有价值,因为它解决云的弹性、多租户问题。它把存储资源、网络资源、CPU资源,全部通过CIPU纳管,就是物理资源加上CIPU后就是一个云化的虚拟计算资源池。


我们希望通过构建虚拟计算资源池,虚拟网络资源池,虚拟存储资源池,把通用的计算集群,AI弹性计算集群,大数据弹性计算集群和各种数据库系统,统一到一套池子里来解决他们安全诉求、稳定性诉求、性能诉求,成本诉求、同时这套架构富有极致弹性并且是可持续的。


幻灯片11.JPG


上图是CIPU的展示,它通过硬件加速,比如上图中的VPC、EBS、Elastic RDMA都于硬件加速,还有硬件相关的,比如安全可信根、存储处理引擎、安全加密等,都在实现在芯片里,通过软件跟硬件的深度融合来实现更高效率。对外,我们可以生产安全容器沙箱,也可以生产虚拟机,也可以把裸金属直接卖给客户让其生产自己的安全容器。


我们可以把云原生简单理解成一个容器,用户可以生产安全容器的沙箱,它可以50毫秒快速启动,一台机器可以生成2000个这样的容器。同时IO速度是极致的,比如50M PPS, 300万IOPS。EBS 300万IOPS,4Kbyte per IO request的话,可以做到128Gbps存储IO带宽。


对我们的业务来说,长尾时延是真正重要的。当然平均时延也很重要。在这一代,本地盘的虚拟化也得到了根本性的提升,我们希望本地盘虚拟化,比如带八个盘,一个盘是50Gbps IO带宽,八个盘就400Gbps。我们希望这400Gbps都能分给安全容器和虚拟机使用,我们希望能达到八个盘800万IOPS。


当然安全在云中永远排在第一位,所以持续加强数据加密、硬件可信、固件验签等是云的底线。因为没有这些,一个云公司但凡在安全上出了问题便是灭顶之灾。后面我会继续展开介绍弹性RDMA,这就是第四代神龙,已经大规模上线了。第五代、第六代正在研发之中。


幻灯片12.JPG


总结起来,CIPU系统根本性要解决十个业务痛点:


第一,IO硬件设备虚拟化。我们不希望自己造一套设备模型,对于阿里云ECS和AWS EC2来说,OS太多了,有Windows、Linux;Linux有CentOS6、7、8,有ubuntu,有FreeBSD,维护这些驱动会把绝大部分公司搞崩溃。所以我们选择用virtio,核心是要靠生态。因为对于ECS和EC2,生态永远是第一位的。没有生态,性能和成本是毫无价值的。


具体实践上,IO硬件设备虚拟化,包括这些设备虚拟化的可编程的弹性,BD Ring的池化。网卡中断汇聚,如何做到性能和时延的平衡,这里面有大量细节,不是简单的事情。网络的丢包和时延抖动等,要做大量持续打磨。


第二,VPC overlay 网络硬件数据加速。我们希望把三层或者3.5层的VPC,将它的转发做成硬件路径。硬件路径不仅仅卷pps,今天第四代神龙做到50Mpps,就是5000万pps,已经远远超过需求,但是你要把它P50时延,P99长尾时延,抖动,丢包这些解决好,才是真正意义上的竞争力。


第三,EBS分布式存储接入硬件数据加速。EBS也是一样,比如P999长尾时延如何,P50平均时延如何?这些平均时延和长尾时延决定了数据库系统真正运行时的状态。


第四,本地存储虚拟化硬件数据加速。主要是在计算机头做缓存,核心竞争力是性能,比如BPS、IOPS,P50平均时延,P999长尾时延。


第五,弹性RDMA。大带宽双向200Gbps,也就是400G的满线速要处理,以及延迟是能够做到多少。对于HPC来说,静态延迟和长尾动态延迟都是十分重要的,而AI分布式训练场景,更重要的是带宽,带宽双向打满的需求。


第六,安全硬件数据加速。所有200Gbps的数据是要加密的,因为安全出问题,对公有云来说是极其严重的问题。


第七,云可运维能力支撑。可运维是所有组件要能热升级,虚拟机要能热迁移。同时数据可采集,可以以数据驱动来提升稳定性。


第八,弹性裸金属支持。比如安全容器、AI分布式训练需要极致性能。单是计算和内存虚拟化就有3~5个点的性能开销,而在很贵的GPU服务器上的话,这个开销就会更为显著。


第九,CIPU池化能力。我们希望更充分的使用CIPU的资源,这本身就包含池化逻辑。比如200Gbps带宽通常情况下是用不完时,我肯定希望通过CIPU池化技术,提升CIPU本身资源的利用率。


第十,计算虚拟化支撑。