日前,ASPLOS 2020公布了计算机界最新科技成果,其中包括阿里云提交的名为《High-density Multi-tenant Bare-metal Cloud》的论文,该论文阐述了阿里云自研的神龙服务器架构如何解决困扰云计算行业多年的虚拟化性能损耗问题,打破物理机的性能神话,让云服务器突破性能极限。
此次入选意味着全球计算机顶会对阿里云自研技术的认可,也意味着中国创新技术在全球计算机界争得了一席之地。
ASPLOS 是综合体系结构、编程语言和操作系统三个方向的计算机系统领域顶级会议,从1982年创办至今推动了多项计算机系统技术的发展,一般论文录用率在20%左右。
阿里云本次入选的论文题为《High-density Multi-tenant Bare-metal Cloud》,由阿里云研究员张献涛带领的神龙技术团队撰写,详细解读了神龙架构的技术优势:超越传统物理机100%的算能、分钟级交付能力、安全物理隔离和云平台全系打通等。
虚拟化是云计算的基础,它将物理服务器虚拟化成想要的计算单元,进而拥有最大的弹性,然而却会导致性能损耗。如何解决这样的矛盾?阿里在2017年推出了“神龙架构”,弥补虚拟化的性能损耗,同时拥有云的弹性和运维优势。
2019年杭州云栖大会上,阿里云发布了第三代神龙架构,全面支持ECS虚拟机、裸金属、云原生容器等,在IOPS、PPS等方面提升5倍性能,可帮助用户降低50%的计算成本。去年双11核心系统100%上云,神龙大放异彩,成功扛住了54.4万笔/秒的订单创建峰值,与同配置物理机相比,不仅业务系统性能提升20%,而且抗高负载压力表现更好,整个业务性能非常平稳和线性。
不仅如此,神龙还是目前最流行的容器技术的最佳拍档。基于神龙架构的阿里云容器服务对比物理机有10%-30%的性能优势。
目前,神龙架构已大规模应用于淘宝、天猫、菜鸟等业务,用于解决高峰值的性能瓶颈问题。 本次入选ACM ASPLOS论文题目为《High-density Multi-tenant Bare-metal Cloud》,由阿里云研究员兼创新产品线总负责人张献涛、阿里云高级技术专家郑晓、阿里云资深技术专家杨航及其他神龙团队共同撰写。
该文首次全面解析了时下流行的裸金属云计算服务、神龙架构内涵。将作为新一代虚拟化技术发展方向的神龙,与现有架构作对比,详细阐述了两者在软硬件、核心计算性能、虚拟化开销的异同。论文中对多种业务表现上面的性能数据充分揭示了神龙裸金属架构的特有优势。以下为该论文的详细解读。
摘要:
虚拟化是云计算的基石,多租户(Virtual Machines)共享一个物理服务器,提高了数据中心服务器的利用率,使得云计算服务商可以提供更经济高效的服务。但是,虚拟化下多VM共享物理服务器的技术会引入不少安全问题,尤其是最近的侧通道攻击等。此外, CPU、内存和 I/O 在虚拟化性能方面会产生不可忽略的开销。为此,物理服务器租赁已成为公共云中新兴的服务类型,物理服务器租赁为用户提供了强大的隔离性、对硬件的全面和直接访问以及更可预测的性能。但是物理服务器租赁的方式也有其缺点:它只能针对单租户,且不具备可扩展性、成本又高,适应性弱。当前物理服务器租赁只能将整个物理服务器租给单个用户,并且在租用服务器后用户无法方便的替换镜像,存储等云计算的基本服务。
在本文中,我们提出了一种创新的高密度多租户共享弹性裸金属服务器的设计,也就是阿里云神龙弹性裸金属架构(论文中为了满足评审的要求称为BM-Hive)。在阿里云神龙高密裸金属架构中,每个裸金属实例都运行在一个单独设计的计算子板上,该计算子板带有专有的 CPU 和内存模块。BM-Hive为每个计算子板配备了硬件/软件混合 virtio I/O 系统,使客户实例能够直接访问阿里云网络和存储服务。BM-Hive 可在单个物理服务器中托管多达 16 个裸金属实例,显著提高裸金属服务器的实例密度。此外,BM-Hive 在硬件级别严格隔离每个裸金属实例,以提高安全性和隔离性。神龙弹性裸金属高密方案已经在阿里云的公共云部署。它目前同时为数以万计的用户提供服务。
介绍
物理服务器租赁的出现是为了满足对性能或者安全性有非常苛刻要求的客户。但对于单租户,低密度的物理服务器却存在成本高的问题。公共云上面的大多数客户是中小规格客户。我们统计云服务上面的各个规格的VM的vCPU数量,对于需求小于32Core 的VM占到了95%以上。而现有物理服务器的CPU规格最小也有64Core,最高达到128Core。这些中小客户别无选择,要么放弃物理机级别的性能与安全性,采用传统虚拟化的VM,要么租赁整个服务器,而放弃性价比。这也是不具备弹性的裸金属公共云尚未成为主流的重要原因之一。
为此,我们设计了神龙高密度弹性裸金属架构:一个可扩展的,支持多租户的弹性裸金属硬件虚拟化方案。该裸金属框架(BM-Hive)既能保证CPU和内存拥有本地物理机运行时的性能,又实现IO设备的硬件虚拟化,同时具备云计算的分钟级计费、弹性扩容等最重要功能。BM-Hive由三个模块组成:计算子板,IO-Bond,BM-hypervisor。计算子板包含了可替代的裸金属实例的CPU与内存;BM-hypervisor运行在我们的基础物理服务器上,它可以托管最大16个计算子板;IO-Bond是连接计算子板与BM-Hypervisor的纽带。我们在后续章节将会详细介绍这三个部分。
采用BM-Hive的方案显著优点:
- 经济实惠:采用了高达16个裸金属实例共享一个物理服务器,能显著降低客户成本
- 单线程性能优异:裸金属实例可以自由采用高主频CPU,比如i7 4.2GHz
- 兼容当前运维体系:客户可以像使用其他非裸金属实例一样操作裸金属实例,包括制作镜像、更换系统盘、添加/删除云盘等云计算特有便捷操作
对比当前公共云上多种不同实例优劣如下:
神龙裸金属架构是软硬一体化的虚拟化架构
神龙裸金属软硬一体虚拟化架构是对现有虚拟化的一个自然演进与升级换代。入下图所示,在整体架构上面,BM-Hive与传统虚拟化方案在CPU/内存方面、运维体系接入、多租户复用等方面非常相近。神龙裸金属开发了一套适合裸金属共享方案的软硬件一体BM-Hypervisor来处理计算子板的IO子系统。
当前虚拟化主要面临如下问题:
在详细探讨神龙裸金属架构之前,我们先来看看当前云计算虚拟化面临的一些问题。而神龙裸金属软硬一体虚拟化方案很好的解决了这些问题。
- 虚拟化开销无法满足高性能需求
- 虚拟化性能存在无法控制的抖动,从而无法满足对性能极致要求的场景
- 虚拟化的安全隔离性达不到特定行业要求
- 嵌套虚拟化的性能无法满足客户需求
虚拟化开销:
当前虚拟化的基本原理决定了CPU必须要在vCPU环境与物理CPU环境下来回切换(VM-Exit)。频繁的切换会导致严重的VM性能问题。比如一个典型的直通设备中断,在虚拟化下处理流程就非常长。KVM hypervisor下面一个虚拟化切换至少需要几千个时钟周期,开销有可能会达到~10us。一般情况下VMExit(比如中断)达到5K左右,VM的性能将开始受影响。还有各种原因导致的VMExit,比如IPI,EPT violation,MMIO访问,等等。
我们采样了30万个虚拟化实例的运行数据,发现每秒1万次以上VM-Exit的实例达到3.82%,甚至还有不少每秒超过10万切换的实例。
神龙裸金属BM-Hive由于采用了计算子板直接运行实例,避免了任何传统CPU/内存虚拟化的开销。
虚拟化的性能抖动:
由于客户实例与系统服务都共享同一个CPU,这就导致了当宿主机系统服务繁忙时可能影响到客户实例的运行。我们采样了2万个实例在运行中CPU被抢占的情况,发现在共享性实例上,有200个以上的实例,在运行中被系统占用的CPU利用率超过2%。也就是说这200个实例的实际CPU性能是98%而不是100%,同样的情况在独享型的实例也有发生。毕竟中断等处理是一定需要CPU在宿主机系统中才能处理的。而在BM-Hive下的实例,系统服务在BM-hypervisor下运行,与计算子板的CPU为不同的物理CPU,所以神龙裸金属实例根本就不存在任何抢占计算资源的问题。
虚拟化的安全性:
这个不是一个新问题,我们都承认安全级别从低到高的形态:进程->容器->虚拟化->物理机。今年发生的侧信道攻击等都说明,虚拟化下实例并非牢不可破。而神龙裸金属实例运行在独立的计算子板之上,是天然的物理隔离,不存在这些安全问题
嵌套虚拟化性能问题:
一般来说KVM嵌套虚拟化的性能损失在20%以上,尤其是遇到一些IO操作更频繁的场景。因此当前云计算实例上很难在满足客户二次虚拟化的要求。而神龙裸金属实例却可以运行客户在实例内部再次运行他们自己喜欢的各种硬件加速的虚拟化方案。
神龙裸金属架构系统设计
为了解决传统虚拟的诸多问题,BM-Hive的设计考虑目标为:
- 多租户
- 物理机隔离安全性
- 入现有运维体系
- 物理机性能
- 低成本
图3显示了BM-Hive的整体系统架构。我们把神龙裸金属实例称为:BM-guest。把基于传统虚拟化的实例称为:VM-guest。每个裸机服务器由底座和多个计算子板构成。该底座本质上是一个简化的基于 Xeon 的服务器。每个计算子板都有一个PCIe 扩展板连接到底座。其主要组件包括 CPU、内存、PCIe 总线和 IO-Bond。IO-Bond 是用FPGA实现的硬件接口。它连接底座和计算子板的PCIe总线,功能类似与PCIe的透明桥功能。IO-Bond在计算子板的PCIe总线上,它模拟多个virtio设备并由标准virtio内核驱动程序支持。IO-Bond充当bm-guest/virtio前端与后端BM-Hypervisor的桥梁。目前,IO-Bond 支持 virtio 设备网络和存储(块设备)。它可以很容易地扩展支持其他virtio设备。
实验数据分析
我将对BM-Hive的CPU/内存系统的性能与传统虚拟化做对比,同时也对网络、存储等IO子系统做数据性能的分析。最后会我们会提供神龙裸金属实例在真实业务场景下的性能表现。
神龙裸金属实例的CPU与内存性能分析
裸金属实例的本地CPU和内存性能对用户至关重要。图7和8呈现了相同配置下,裸金属实例与虚拟化实例在运行SPEC CINT 2006测量的CPU性能差异,用STREAM工具测试内存性能的差距。
上图数据做了归一化的处理,可以看到裸金属实例的CPU性能与物理机几乎没有区别,甚至有些项还优于物理机,而虚拟化实例下CPU性能一般有0-4%的损失。内存方面也类似,虚拟化实例的内存带宽是裸金属实例的98%左右。
IO子系统的性能分析
BM-guest和VM-guest均基于virtio的I/O路径接入阿里云VPC网络与云存储系统,他们的区别在于BM-Hive的virtio具有硬件-软件混合设计。在本节中,我们将BM-Guest与VM-guest的网络与存储子系统做性能对比。我们两种实例产品定义的网络访问最大发包速限定于4M PPS,带宽最大为 10Gbit/s,存储限制为 25 IOPS和300MBps。因此,我们测试的目的在于两种实例是否都能达到设计目标。
PPS:我们看到BM-Guest/VM-guest都能达到设计的4M UDP PPS目标,但是VM-Guest更加平顺,这个可能是由于BM-guest经过的软硬件接口的路径要比VM-guest长得多导致。
Latency:在延时方面,通过三种测试工具得到VM-guest的网络延时要稍优于同类型的BM-Guest,差距不大。
Storage IO:存储IO的性能上面BM-Guest则要全面优于VM-guest。随机读写的IO访问延时方面BM-guest优于VM-guest,而在长尾数据方面BM-guest数据优于VM-guest 50%以上。
客户典型应用方面
通过对真实应用场景的对比,我们更能发现裸金属实例的优势。比如我们对比了两种实例在分别在网络服务器nginx,数据库mariaDB,以及内存型数据库Redis等数据差异。
Nginx:大多数客户选用的网站服务类型。BM-guest的每秒请求数与每请求处理时间等方面都要优于VM-guest 50%以上
MariaDB:MariaDB是一个标准的测试数据类型,集成在sysbench之中。BM-guest的读取性能超过VM-guest15%以上,而在写性能上更是超出50%以上
Redis:是内存型数据结构读取数据库。Redis被广泛应用于提高服务器性能与服务能力。BM-Guest在Redis测试表现也全面优于VM-guest。如图15与图16。此处不再累述。
一些思考
IO-Bond的性能优化:IO-Bond处于IO系统的关键性能路径之上。当前由FPGA实现。在将来我们可以通过ASIC芯片的方式实现,从而进一步提升网络与存储、性能
热迁移与热升级:热升级在裸金属实例上面是可以实现的。我们在升级底座BM-Hypervisor的同时可以做到对客户实例无感知。我们在2019年ASPLOS的论文中就有详细介绍实例热升级的技术《Fast and Scalable VMM Live Upgrade in Large Cloud Infrastructure》。热迁移理论上,裸金属实例也可以实现,我们做过一些尝试。目前也正在开发中。
SGX支持:SGX的支持在裸金属实例上面没有任何问题。相反由于去掉了虚拟化的阻碍,SGX的支持更容易。
总结:
我们介绍了神龙高密度裸金属云服务 BM-Hive 的设计、实施和测试数据。实践证明,作为行业下一代虚拟化的发展方向,神龙裸金属软硬一体化方案在兼容现有虚拟化优点的前提下,全面提升了性能与安全性。在此,我们由衷感谢阿里云创新产品团队全体成员的努力付出。