以下为张献涛演讲实录:
各位朋友们大家好,我是张献涛,花名旭卿。我于2014年加入阿里云智能,当前在阿里云负责弹性计算团队。加入阿里云之前,我在英特尔从事虚拟化相关工作。过去十几年,我基本专注在虚拟化领域。
今天要与各位分享的,是过去三四年间,阿里云智能在新型计算架构方面的一个探索——神龙计算架构,以及阿里云计算架构演进的相关实践。
我今天分享的内容分成四部分:
第一部分是关于神龙架构的背景——阿里云为什么要做神龙,神龙解决了云计算哪些业务痛点。
第二部分介绍神龙架构相关的演进——第一、二、三、四代神龙之间有什么异同点,它们一步一步解决了哪些业务诉求,为用户带来哪些核心价值;
第三点主要介绍的神龙架构的实践——它能给云计算的客户带来哪些价值,比如像刚才叔同老师讲的,神龙结合容器能够提供比在物理机上还要好的性能。
一直以来,从事虚拟化的技术人员都是物理机的性能作为优化目标,研究怎么样能把虚拟化后的能力无限接近物理机,比如做到90%,91%、92%、93%、95%,做到97%、98%可能就做不下去了——它只能无限接近物理机。今天用神龙这种新型计算架构的服务器,再加上阿里云的容器,就可以提供比物理机高百分之几十的性能,收益非常高。
最后我简单介绍一下神龙架构的未来。
一、神龙架构的背景
在介绍神龙架构的背景之前,这里面有几个数字,来自一个大项目。我相信在线的很多网友都参与过这个好几千亿的项目,每年可能都有机会参与一次,就是天猫双十一。
在2019年的天猫双十一,我们又创造了很多新的历史记录,比如说全天交易额达到了2684亿,相比去年有比较大的提升。第二个数字是54.4万笔每秒,这个代表在0点清空购物车时,每秒钟能够处理交易的笔数。12.92亿个包裹意味着几乎人均一个包裹。
一个个的天量数字背后,都是在阿里云公共云上完成。我们去年达成了一个里程碑事件——整个阿里巴巴经济体业务,全面迁到公共云上面来,100%核心交易系统全面在阿里云上完成。
在三四年之前,没有今天讲的这个神龙架构之前,其实是做不到的。因为双十一上云对公共云平台的挑战非常大,线下也饿徐用物理机去堆是可以的。但是使用公共云的基础设施,要承担阿里巴巴经济体,比如电商、金融、物流相关交易,并且是双十一这种天量的交易,是极大的挑战。
今天我们做到了。背后是神龙服务器在起作用。
我们通过这张图简单直接看一下,左边的照片是2017年10月的云栖大会,我们发布第一代神龙服务器的时刻。在这个时期起,神龙架构开始成为整个阿里云智能最核心的竞争力之一。
为什么它能够承担起像阿里巴巴双十一这样复杂的业务?
第一、因为神龙能够充分地利用云基础设施的力量,也就是这里展示的高弹性。单台服务器,或者一个集群,在线下其实很难利用云基础设施的能力,而神龙云服务器能和云基础设施融合在一起,提供高弹性的资源。比如,你需要更多的存储、更多的网络资源、甚至更多的数据库,你不用停机、你也不用去插硬盘,系统会根据你的管控命令,自动进行资源伸缩。
第二是高稳定,尤其是性能的输出,需要非常稳定。对于笔记本、PC这可能无所谓,但是对于企业级用户所用的服务器来说,性能输出需要是一个稳定的值。
为什么?可能做过业务规划或者容量规划的同学能理解,如果计算性能处于波动的状态,那很难规划业务需要多少台服务器支撑。比如说在线直播,八千人需要多少台服务器,一万人又需要多少台服务器?这些需要精准规划,所以对性能的要求是非常稳定的,神龙服务器可以完美满足,它在双十一的性能表现非常平稳。
第三是高性能。这个是本质的,如果性能不足够高的话,或者连物理机甚至虚拟机都达不到的话,做这样一款服务器,一个新型的计算架构,其实是没有意义的。
这几点,是我们做神龙服务器的一些思考。就像主持人所说,我其实已经做了十几年的虚拟化技术,谈到神龙每一次必须要谈到的就是虚拟化技术。
虚拟化技术历史
我是2004年开始做虚拟化,我当时还在读博士。当时在整个业界,在整个世界范围内真正是做虚拟化技术研究的不多,全球可能加一块来还不到一百人。我当时一直在想,我毕业之后到底能不能找到工作,因为这个择业范围太小了。
在那个时间点上,虚拟化基本上都是一些高校在研究,比如说斯坦福大学、剑桥大学,微软、VMWare等公司,还有我的老东家英特尔。
我们回顾历史,其实虚拟化的历史要比2004年还要早很多,不过一直都是在科研机构、大型IT公司里做研究。
第一个时间点是1974年。最早的理论成立,1974年有一篇论文《Formal Requirement for Virtualizable Third Generation Architecture》,这篇论文为未来40多年的虚拟化技术的快速演进奠定了理论基础:定义了什么样的技术才能叫做虚拟化,什么样的条件才能满足虚拟化的定义。
第二个时间点就是1997年。1997年,斯坦福大学的教授创立了VMWare公司。这家公司的成立,真正地把虚拟化技术的理论研究,落实到应用。
VMWare做了一个叫二进制翻译技术的创新
为什么要做这个?
不得不说,英特尔X86架构,对虚拟化技术是不友好的。因为整个X86的演进,从4位、8位、16位到32位、64位。这样的过程,其实天生就和一些大型机、和虚拟化是不一样的。大型机最早就是为了多操作系统运行而设计的,要从指令集的设备层面去虚拟化。
而X86是逐渐演进的过程,最早从一个很小很小的PC市场开始做起。PC是没有虚拟化要求的,所以X86指令集对虚拟化不友好。一定程度上,二进制翻译技术可以在指令执行的过程中,动态扫描对虚拟化不友好的条件,一个个切换指令执行情况。这种方法的弊端是性能不太好。
在这个阶段,VMWare主要还都是在PC上面运行虚拟化,还不是今天所讲的云计算数据中心的虚拟化技术。云计算数据中心的虚拟化技术推行,是2005年。当年,英特尔发布了VT-x和VT-d技术,这是英特尔和AMD两家芯片公司为首发布的。他们觉得自己的X86的架构对虚拟化不友好,就扩展了指令集、扩展CPU的设计,让它能够更好地支持虚拟化技术。
这个技术加速了虚拟化进入数据中心,能够服务于云计算。
2009年,阿里云成立,云计算不太可能使用VMWare这样的商业化软件,所以就采用了当时比较流行的开源虚拟化软件Xen,后来我们到2014年切到了KVM。当时阿里云是深度定制化的KVM和Xen,做了产品化开发的。
我是2007年参与KVM研发的。在2014年之前,云计算行业里,大家想的都是,怎么样能够把当前CPU提供的能力、Xen、KVM等虚拟化的软件应用好,却没有发生多大变革。除了VMWare提供这个二进制翻译技术,还有PPT里没有展示的,剑桥大学提出的准虚拟化技术paravirtualization——除了这两个,没有太大的创新。
2014年、2015年,阿里云面临要服务大B类市场的时候,我们要解决成本问题,提升我们的服务能力。
当时我们的虚拟化技术,已经满足不了云计算发展的步伐。尤其在那个时间点上,我们也在探讨,怎样能够把阿里巴巴经济体的业务也迁移到云上面来,这遇到了很大的难题,我们需要去变革虚拟化技术。
于是, 2015年我们开始探索,2016年开始立项,到2017年,X-dragon神龙架构问世了。它真正使用软硬融合、软硬件协同设计的模式,改变了传统虚拟化技术和当前的计算架构不友好的地方。
以前虚拟化技术的设计思路,前提都是服务器和计算架构都已经定了,如何通过软件适配计算架构。
我们做神龙则是反其道而行之。我们觉得今天的虚拟化已经发展得非常好了,那我怎样能设计一种新的计算架构,让虚拟化运行得更好?它代表着云计算、云数据中心、虚拟化技术带来一个变革,它也给我们云计算、阿里云的高速发展带来了更坚定的信心。
传统虚拟化架构的缺陷
要设计这样一种新型架构,我们需要简单来看一下云数据中心的传统虚拟化架构是怎么样的、它有什么样的优缺点、我们为什么要变革它。
这张图是非常典型的虚拟化组织架构图。
我们可以看到,底层是大型的物理机集群,每一台物理机上面其实都会运行着Hypervisor——即虚拟化的系统软件,还有一个宿主机,比如Xen里面的Domain0。基本上是这样的模式。
在云计算里面,客户买到的都是虚拟机,虚拟机的计算能力、平稳性、弹性由下沉的虚拟化软件——而不是虚拟机——来完成的。比如说计算的虚拟化,虚拟一个CPU、虚拟内存、虚拟中断都会由Hypervisor软件来完成;虚拟存储,基本都由host的虚拟化实现模块来完成,即通过软件来做;网络也是,我们会引入虚拟交换机、虚拟路由器这些的虚拟网络。
这是一个非常典型的架构。在神龙出现之前大家都是这么用的,也没有觉得它有多么的不好。但阿里巴巴经济体,在把自身业务,以及部分大B类的客户上云时,我们发现了很多方面的问题。
我给大家简单介绍一下这些问题。
1、资源争抢、隔离性弱:这张图中,虚拟机就是客户的系统,宿主机就是我们的虚拟化管理系统。它们之间共处一室,会导致有资源的争抢。它们之间资源的争抢就会带来虚拟机计算能力的波动。
2、算力损失、成本高:宿主机和Hypervisor都要消耗CPU和内存方面的资源,这就没法把这台机器的资源全部给到客户,意味着成本的提升。比如说,我买了一个32核的物理服务器,我只能把16核或者20核给到客户,那剩下的12核可能就是一个浪费。但是没有它还不行,因为它要帮助虚拟化存储、虚拟化网络。资源的浪费就导致了成本的提升。
3、性能瓶颈明显:还有整个存储、网络的虚拟化,如前所述,都是由软件实现。软件实现方案优点是灵活和有一定的扩展性,但是缺点也很明显——性能、稳定性会比较差。这是它最大的问题。
**
4、难以支持裸机服务**:因为物理机里面已经运行了这样一套Hypervisor软件,我们难以云的方式提供裸机、提供存储网络的弹性。即便云计算越发普及,部分企业还是有物理机的诉求,云厂商没有办法提供。如果提供只能提供物理机托管了,这就不是云计算了,而是回到了传统IT。
架构的缺陷带来了很多产品挑战。我们要解决这些问题。
带着这些问题,我们先去分析一下,客户到底要什么?
分析完之后,我们发现客户真正买我们计算型产品的时候,他需要更强的计算性能、需要更快的网络接入、更高的存储读写能力,存储的IOPS要高、网络的PPS要高、网络的带宽存储能力要高。这意味着说,我要有更高的更好的QoS(服务质量),网络、性能不能忽高忽低;还要更加安全;要有更低的成本。这就是客户的诉求。
我们拿着诉求,再对照虚拟化技术的缺点,进行技术探索和创新,看如何解决这些方面。
神龙就应运而生了,神龙是为云而生,是软硬融合的虚拟化技术。
神龙服务器性能关键的部分全部用芯片用硬件去实现,性能非关键的比如控制面部分,都用软件去做。最后带来灵活性和性能完美有机的结合。它和传统的虚拟化相比,代表了云数据中心虚拟化新一代技术,可以真正解决掉我们刚才说的问题。
二、神龙架构的演进
我们进入第二部分。
第一代神龙:裸金属虚拟化的先行者
第一代神龙,更多的是解决上云后如何支持裸机服务,说得直接点就是物理机,但是又不能是传统的物理机,需要充分和云计算基础设施融合。比如,它可以充分利用池化过的云存储资源、网络资源、数据库等。
在这种情况下,第一代神龙诞生了。我们叫bare metal virtualization,裸金属虚拟化。我们在业界第一个发布类似的产品。
它的体验可以用下面的一句话来总结,就是:超越物理机的性能,有虚拟机的体验。
什么是虚拟机的体验?我们知道,虚拟机整个运维全部都是自动化的,所有的资源都是池化过的,这其实是非常好的一种模式。传统虚拟化技术,有优势也有问题。如果说我们能够通过新技术,解决劣势保留优势——这是我们做第一代虚拟化的初衷。我们也做到了。
在这种架构下面,我们进行深层次的探索,设计了神龙MOC卡。
MOC卡里,有一个神龙芯片做高速数据面的转发;有一个芯片加速引擎,存储EBS、网络,所有管控面的东西,都下沉到芯片中;整个生命周期的管理、所有的接口都和虚拟机保持一致。比如,存储都是用virtio-blk,网络都是virtio-net的接口,其他设备也和虚拟机保持一致。
如此一来,它可以和虚拟机无缝兼容,可以和虚拟机在同样的VPC里、可以挂载云盘,跟虚拟机使用体验一样。
我们设计了X-dragon Hypervisor和自研神龙芯片,提供了安全可靠可信、计算无损的服务。神龙支持弹性的存储,可以支持挂16块EBS云盘,并且每一个EBS云盘都可以高达32G;它也可以提供31个ENS动态、弹性的网络接口,可以动态地插进去一些网卡。一个物理机,它的网络接口可以动态增加和减少。
芯片加速的IO引擎,支持无缝接入VPC,无缝接入EBS存储,支持免装机,直接一个芯片就可以启动,一两分钟就交付了裸机服务。
第一代的特点是,一张芯片其实解决了所有问题,物理机可以使用云存储、VPC网络、挂载本地盘的问题。所有系统管理也都在这张卡里面做。我们加入了安全芯片的能力,可以让弹性、稳定性、性能和成本完美地结合。虚拟化下沉到这张卡,就是本质。
第二代神龙:融合虚拟化的践行者
第二代的神龙叫融合虚拟化的践行者,这就是阿里云线上第六代实例大规模使用的技术。
和第一代相比,整个神龙芯片能力进一步增强,不但可以支持的裸金属系统,它还可以支持虚拟机。
我们为虚拟机设计了一个超薄的Hypervisor,叫Dragonfly,就是让神龙能够飞起来的Hypervisor。它几乎不占用任何的资源,可以支撑很多的虚拟机系统,所有的计算资源都可以给到客户,资源和性能无损;并且每个虚拟机之间,是通过硬件的队列进行隔离的,虚拟机和虚拟机之间,虽然共处一室但各行其道,没有任何共线的干扰。
我们做到了:
① 技术的融合、资源的并池,就是一套软硬件支持容器、虚拟机和裸金属三套服务。
② Dragonfly Hypervisor超轻薄,能够让整个虚拟机资源的占用接近于0。
③ 直通型的硬件IO设备,比如提供512个网络队列,最高提供512个ENI,存储有512个队列,至少能够下载几十块云盘。它的能力会进一步的增强。
④ 最难做的是全组件的热迁移,包含芯片、FPGA组件全部做热升级。解决了热升级的问题,我才解决整个研发上能够快速迭代的难题。
刚刚一直提到的Dragonfly Hypervisor有以下特点:
超轻薄,资源零损耗。内存占用大概每个虚拟机不到1 MB,但是CPU占用小于0.1%
超平稳,接近零抖动。100万个数据包可能会有一个抖动。业界可能做得最好的是10万级别的。我们做到100万。
超平滑,兼容原架构,和KVM无缝兼容,能够解决掉资源池之间互相热迁移的难题。
第三代:极致性能的追求者
第三代神龙架构,它是极致性能的追求者。我们在去年的云栖大会发布。整个性能处于业界最高的水平。相对于同行的类似架构,我们性能大概在5倍之多,存储、网络等关键性能指标,都是他的5倍以上。
第三代神龙的最大变化,就是
① 所有的数据面路径全面芯片化,存储、网络、数据都芯片化,性能大幅提升。
② 提供了硬件级、电信级QoS的管理,比如存储、网络每秒钟需要多少数据包、多大的带宽,都超级精确,精确到了一个数据包。原来只有电信级的设备里才有。我们在云数据中心服务器里实现了。
③ 增强型融合网络,可以提供接近裸机的低延时网络。
④ 增强型硬件队列,支持1千个1024存储队列和1024网络队列,队列和队列之间的隔离性进一步增强。
三代神龙拓展了弹性计算产品的边界。第一代发布于2017年10月份,第二代在2018年9月份发布,第三代是去年的9月26号上午发布。
我们整个的网络性能,单机做到了2500万PPS,这个相当于友商大概5倍左右。存储做到了100万IOPS。现有的弹性计算产品在提供这些特性,有一些实例里大家能够感受到明显提升。接下来我们会全面切到第三代。
神龙发展到今天,去年,不仅仅集团经济体的业务全面迁到了神龙,整个公共云的计算类服务,也全部都迁到神龙架构。阿里巴巴、阿里云新增的任何一代服务器,全部都是神龙架构:X86通用实例——G系列、T系列和R系列全面升级,异构计算以及高性能计算相关实例全部都切到了神龙,可以提供刚刚讲到的第三代神龙的能力,比如说100万数据包才会有一个抖动。
三、神龙架构的实践
最后,我简单介绍一下神龙到目前的一些实践。
刚才叔同老师也介绍了,神龙和容器之间有一种双剑合璧效果。
我们为容器设计了一个特别的网络,叫Terway network ,它和VPC(virtual private cloud)能够天然融合。每一个容器都会有一个VPC的IP,它们之间全部网络和存储,都是一个硬件队列来进行相对隔离。
在去年的双十一,很多典型的应用,容器加神龙表现出了非常好的能力。
这里展现的是我们电商里的某一个很关键的应用,也是我们每次下单都要用到的应用,它整个QPS提升了30%,RT下降了96%。
在极限压力情况下,它还有这么好的表现。客户资源的利用率,CPU利用率最高可以提升到80%。
为什么会有这种效果?
图里蓝色这根线是传统的物理机,红色这跟是同规格的——就是CPU、内存相关等所有的东西都一样的——神龙架构的物理机。
它们两个在云上运行业务的时候,我们可以看到蓝色这个,可能CPU利用率到40%的时候,业务延迟就会增加了,超过50%、60%,整个业务就出现崩盘了。但是神龙,当CPU利用率即使高到接近100%的时候,业务延迟增长还是非常少。
平均下来,一般的服务器能压到百分之二三十的CPU利用率,就已经不错了。神龙可以压到百分之五六十,都有非常线性、平稳的业务表现。有很多的客户都开始使用我们的神龙服务器。
另外一个神龙的用处,就是能够把VMWare的私有云,迁到公共云上。我们知道,线下有很多数据中心,都使用都了VMWare私有云。很多客户会用龙都把线下的VMWare的私有云迁上来。没有神龙,这实现不了,因为传统云计算实例,没法支持VMWare这种虚拟化软件。
如果用了OpenStack,底层使用了KVM,想把你整个线下OpenStack的私有云搬到云上面来,神龙裸金属服务器也可以解决。
最后,近段时间新冠病毒爆发了之后,阿里云为十几家公共科研机构提供算力直吹。这背后就是用神龙裸金属搭建的高性能计算能力。
四、神龙架构的未来
前几天,我们神龙架构的论文,在计算机系统的顶会ASPLOS 2020做了分享。
论文介绍了裸金属虚拟化相关的整体规划,和我们未来要做的东西。兴趣的朋友,可以到这个地址去下载我们的论文,也有视频讲解。
未来,我们也会继续在神龙架构持续创新,大家如果对这个领域有什么疑问或者想法,欢迎联系我们。
谢谢大家!
【END】