深入浅出系统虚拟化:原理与实践
上QQ阅读APP看书,第一时间看更新

1.2.2 趋势展望

自2005年Intel首次提供了针对CPU的硬件辅助虚拟化技术VT-x后,硬件辅助虚拟化已经成为主流的虚拟化方法,在CPU、内存和网络等资源配置上获得了成功。自2014年人们开始研究新型异构设备,新型硬件设备虚拟化抽象效率进一步得到提升。目前新型的虚拟化架构(如亚马逊的Nitro架构、阿里云的神龙服务器和华为的ZERO架构)都基于单节点弹性资源(“一虚多”)横向扩展架构,然而随着新型计算、存储和网络硬件的不断出现(例如,Optical Fabric网络带宽为400Gbps且延迟仅为100ns,与内存总线的带宽差距缩小到一个数量级以内),虚拟化架构也在不断演进。Intel首席架构师Raja Koduri提出:“晶体管尺寸每缩小1/10,就会衍生出一种全新的计算模式”。跨越数量级的硬件性能提升使得当初设计虚拟化系统的两大基本假设发生变化,孕育出虚拟化新架构,具体体现如下。

基本假设一:单节点资源以CPU为中心。新型异构硬件作为CPU的附属设备,由CPU集中化控制,造成频繁上下文切换,不仅增加了虚拟化开销(例如GPU与CPU的虚拟化页表同步占据了24.43%~79.45%不等的开销),同时设备与CPU紧耦合也限制了新型异构硬件的可扩展性。当前硬件平台趋向于异构化和去CPU中心化,GPU、FPGA等新型硬件成为算力输出的重要甚至主要部分,例如单个Nvidia V100 GPU的性能可能是CPU性能的100倍。单台服务器可能同时配置CPU与GPU/FPGA处理器、具有RDMA特性的InfiniBand网卡、普通内存和NVM内存以及SSD等外存,同时,Gen-Z、CCIX等新的缓存一致互联协议可以让新型去中心化分散硬件资源(Disaggregated Hardware Resource)(例如GPU、FPGA以及其他异构加速硬件)相互通信,并独立发起资源访问请求与CPU解耦。因此,各个分散硬件资源通过高速总线和网络相互通信,并具备一定的自主性,能够独立访问其他硬件资源,导致了分散硬件资源的去CPU中心化。

基本假设二:跨节点资源以横向扩展为主。早期由于硬件性能的限制,倾向于将各个节点虚拟化后在客户机操作系统上构建分布式系统,将计算和数据进行分区,虚拟化架构以多节点横向扩展为主。近年来,随着硬件性能跨数量级提升,出现了纵向扩展的硬件资源聚合趋势,例如内存聚合有Infiniswap[NSDI 2017(学术会议论文)]、Remote Regions[ATC 2018]、Leap[ATC 2020]、Fastswap[EuroSys 2020]、Semeru[OSDI 2020]和AIFM[OSDI 2020]等,I/O资源聚合有ReFlex[ASPLOS 2017]、PolarFS[PVLDB 2018]等。因此,利用新型硬件实现多硬件多特性的虚拟化聚合与抽象,提升硬件性能甚至突破单一硬件的物理极限,也是目前学术界和工业界的重要探索方向。

这两个基本假设的改变对虚拟化和系统软件的发展产生了深远影响。目前云业务对算力的需求越来越高,单个服务器往往已经无法满足算力需求,形成了机架规模(Rack-Scale)的分散式可组合基础设施。目前内存遭遇12nm的工艺瓶颈,工艺设计成本约占整体的2/3,新型持久性内存(如Intel傲腾)填补了内存纵向扩展的空白,高速网络互连使得远程内存访问不再是障碍,以内存为中心的系统虚拟化新架构正在兴起(如MemVerge分级大内存可以将深度学习性能提升20倍)。2017年惠普公司基于Gen-Z总线,推出了The Machine原型系统,以内存语义访问远程NVM存储池,构建了160TB的共享内存池,并支持多种异构加速硬件共享该大内存资源。IBM公司在2020年8月发布的IBM POWER 10处理器借助Memory Inception突破性新技术,允许集群中任何基于IBM POWER10处理器的服务器跨节点访问和共享彼此的内存,从而创建PB级聚合内存资源,最多支持2PB内存,并且节点之间的延迟为纳秒级。OSDI 2018最佳论文中提出了LegoOS分布式操作系统,将单一内核分解成独立的去中心化CPU、内存和I/O组件,并通过高速网络连接进行消息通信,在操作系统层面进行了前沿性探索。加州大学洛杉矶分校(UCLA)、麻省理工学院(MIT)等大学的学者在OSDI 2020论文中提出了基于分散内存(Disaggregated Memory)的Java运行时管理方法Semeru,能够通过统一的虚拟地址空间跨节点透明访问多个服务器的内存。而在虚拟化软件层面,高性能计算领域的先驱戈登·贝尔(Gordon Bell)等提出了硬件资源虚拟化聚合的方法,试图同时实现横向扩展的硬件成本优势和灵活性,以及纵向扩展固有的简单性。

因此,通过虚拟化构建弹性资源池(计算、存储和I/O相结合),实现纵向/横向灵活扩展,资源按需聚合/分散,面向领域垂直整合巨型虚拟机/微型虚拟机,能够便捷共享集约化硬件资源,高效抽象具有多样性的硬件设备,通过虚拟化提供更为轻量化、细粒度的资源和接口抽象,现有的硬件、操作系统、应用程序生态可以继续演化,实现软件和硬件的松耦合及协同优化是虚拟化技术不断发展的方向。