一种基于空间复用的虚拟化方法与系统与流程

文档序号:12664819阅读:238来源:国知局
一种基于空间复用的虚拟化方法与系统与流程

本发明涉及高性能虚拟化领域,特别是涉及一种基于空间复用的虚拟化方法与系统。



背景技术:

作为云计算的核心技术之一,虚拟化为系统软件的发展提供了新的契机。虚拟化实现了资源抽象与隔离共享,引入了弹性按需、在线迁移等的特性,广泛应用于数据中心。但是与传统操作系统相比,虚拟化的性能开销是一个不可回避的问题,尤其对于高性能科学计算、高通量数据分析等的计算与数据密集型应用而言,虚拟化造成的性能降低、资源共享竞争导致的性能不稳定使得此类应用难以在云中获得理想。造成虚拟化性能开销的主要原因是:虚拟化要求严格的权限分离以及客户虚拟机(VM,Virtual Machine)之间的隔离,所有特权级操作都需要陷入虚拟机监视器(VMM,Virtual Machine Monitor)进行降级处理;严格的隔离机制为多个虚拟机共享服务器资源提供了安全保证。

在私有环境下,对安全性的要求相对较低,而高性能计算与大数据分析等的应用对性能比较敏感。此类场景更加需要虚拟化的弹性按需、灵活部署的特性来简化管理并提高生产力,并不需要在线公有云的严格隔离;另外,降低虚拟化开销、提高性能不仅可以满足高负载应用的需求,也有助于提高效率、降低成本。

减少虚拟机监视器的介入并降低虚拟机监视器的处理开销是优化虚拟化性能的主要手段。半虚拟化(Paravirtualization)技术通过超级调用(Hypercall)简化了特权指令的降级处理,但此种方式需要修改客户操作系统,且由软件进行虚拟机与虚拟机监视器之间的上下文切换开销较大。硬件完全虚拟化不需修改系统,得益于硬件的支持,客户机与宿主机之间执行环境的切换开销大幅降低,但无法避免消除,且虚拟机监视器仍旧需要进行大量的特权操作授权与模拟;实际上,主流商品硬件平台新产品虚拟化性能的优化大都以减少客户虚拟机退出(VMExit)为主。

随着多核处理器的快速发展与日益普及,单个服务器节点的处理器核心资源越来越丰富,处理器核心的成本也逐步降低,因而没有必要再以牺牲性能为代价去追求时间维度上的资源共享。而空间维度上的资源复用,既能保证隔离性需求,又能有效减少虚拟化的性能开销。



技术实现要素:

为了解决上述技术问题,本发明目的在于通过空间复用取代时分复用以降低虚拟化的开销,提高虚拟机性能并改善性能稳定性,满足高性能计算与大数据分析类应用的需求,拓展云计算的适用领域。

具体来说本发明提出了一种基于空间复用的虚拟化系统,其中该虚拟化系统包括虚拟机监视器、系统平台和多个虚拟机,其中:

系统平台,包括多个逻辑分区和I/O设备资源,每个该逻辑分区均包含CPU资源、内存资源和特殊硬件资源,且每个该逻辑分区均对应运行一个虚拟机;

虚拟机监视器,用于根据整体该虚拟化系统的应用程序运行情况,对该逻辑分区中的内存资源做动态调整,并处理I/O虚拟化;

虚拟机,用于运行应用程序,且其一虚拟机为特权虚拟机,其余虚拟机为非特权虚拟机,该特权虚拟机运行的应用程序为控制程序,用于参与控制全部该非特权虚拟机,并为全部该非特权虚拟机分配共享内存,虚拟机间通过复用共享内存内容实现相互通信。

该虚拟化系统,其中该I/O设备资源由该特权虚拟机中的控制程序和该虚拟机监视器共同管理,该非特权虚拟机通过虚拟机监视器向特权虚拟机发起I/O请求,并由特权虚拟机代理完成I/O操作。

该虚拟化系统,其中每个该虚拟机都有页表、内存管理数据结构,该内存管理数据结构,用于监控该虚拟机中的页表情况,以产生缺页中断和更新该页表。

该虚拟化系统,其中该虚拟化系统还包括内存分配模块、第一判断模块、内存申请模块和第二判断模块,其中:

内存分配模块,用于在系统启动时,为每个该虚拟机分配固定数量的内存,特权虚拟机管理剩余所有内存资源;

第一判断模块,用于在该非特权虚拟机发生缺页中断时,判断当前内存资源是否存在空闲,若存在,则调用第二判断模块,若不存在,则调用内存申请模块,并尝试于本地分配空闲内存页面或于缓存内存池中寻找尚未归还的空闲内存页面;

内存申请模块,该非特权虚拟机向特权虚拟机申请一定数量的内存,该特权虚拟机根据当前内存空闲情况,决定是否满足该虚拟机的请求;

内存建立模块,该非特权虚拟机得到空闲内存,动态地在本地建立管理结构,独占使用该段内存;

第二判断模块,该非特权虚拟机判断空闲内存是否为本地空闲内存,若是,则直接释放,若不是,则调用内存归还模块;

内存归还模块,用于判断该非特权虚拟机当前空闲内存是否已经大于等于用户设定阈值,若是,则立即主动归还该空闲内存至特权虚拟机,若不是,则于本地内存池中缓冲该段内存,延迟归还,直到该非特权虚拟机空闲内存已经大于等于该用户设定阈值。

该虚拟化系统,其中该虚拟化系统还包括特权虚拟机启动模块、拷贝模块和代码执行模块,其中:

特权虚拟机启动模块,用于启动特权虚拟机,使该特权虚拟机根据配置文件或参数确定非特权虚拟机物理内存地址区间并为之划分共享内存;

拷贝模块,用于将非特权虚拟机的启动参数和跳板代码拷贝至专用内存页面中,并将该非特权虚拟机的操作系统映像拷贝至该非特权虚拟机所属物理内存分区的起始位置;

代码执行模块,用于通过CPU的高级可编程中断控制器通知非特权虚拟机的CPU执行该跳板代码,非特权虚拟机从特权虚拟机获得自己的CPU标识及物理内存地址区间,然后进行CPU的初始化,并配置临时页面以访问分配的物理内存区间,该跳板代码跳转到非特权虚拟机的操作系统映像位置执行,由用户操作系统继续初始化虚拟机并完成启动。

本发明还提出了一种基于空间复用的虚拟化方法,其中该虚拟化方法包括:

分配运行步骤,将一个系统平台,分配为包括多个逻辑分区和I/O设备资源,每个该逻辑分区均包含CPU资源、内存资源和特殊硬件资源,且每个该逻辑分区均对应运行一个虚拟机;

调整处理步骤,将一个虚拟机监视器,根据整体该虚拟化系统的应用程序运行情况,对该逻辑分区中的内存资源做动态调整,并处理I/O虚拟化;

复用通信步骤,将多个虚拟机,运行应用程序,且其一虚拟机为特权虚拟机,其余虚拟机为非特权虚拟机,该特权虚拟机运行的应用程序为控制程序,用于参与控制全部该非特权虚拟机,并为全部该非特权虚拟机分配共享内存,虚拟机间通过复用共享内存内容实现相互通信。

该虚拟化方法,其中该I/O设备资源由该特权虚拟机中的控制程序和该虚拟机监视器共同管理,该非特权虚拟机通过虚拟机监视器向特权虚拟机发起I/O请求,并由特权虚拟机代理完成I/O操作。

该虚拟化方法,其中每个该虚拟机都有页表、内存管理数据结构,该内存管理数据结构,用于监控该虚拟机中的页表情况,以产生缺页中断和更新该页表。

该虚拟化方法,其中该虚拟化方法还包括:

步骤S410,系统启动时,为每个该虚拟机分配固定数量的内存,该特权虚拟机管理剩余所有内存资源;

步骤S420,在该非特权虚拟机发生缺页中断时,判断当前内存资源是否存在空闲,若存在,则执行步骤S450,若不存在,则执行步骤S430,并尝试于本地分配空闲内存页面或于缓存内存池中寻找尚未归还的空闲内存页面;

步骤S430,该非特权虚拟机向该特权虚拟机申请一定数量的内存,该特权虚拟机根据当前内存空闲情况,决定是否满足该虚拟机的请求;

步骤S440,该非特权虚拟机得到空闲内存,动态地在本地建立管理结构,独占使用该段内存;

步骤S450,该非特权虚拟机判断空闲内存是否为本地空闲内存,若是,则直接释放,若不是,则执行步骤S460;

步骤S460,判断该非特权虚拟机当前空闲内存是否已经大于等于用户设定阈值,若是,则立即主动归还该空闲内存至特权虚拟机,若不是,则于本地内存池中缓冲该段内存,延迟归还,直到该非特权虚拟机空闲内存已经大于等于该用户设定阈值。

该虚拟化方法,其中该虚拟化方法还包括:

步骤S510,启动该特权虚拟机,完成对物理系统资源的初始化,该系统资源包括:该CPU资源、该内存资源和该特殊硬件资源;

步骤S520,特权虚拟机根据配置文件或参数确定该非特权虚拟机的虚拟处理器数目以及内存大小,并进一步确定该非特权虚拟机物理内存地址区间并为之划分共享内存;

步骤S530,将该非特权虚拟机的启动参数和跳板代码拷贝至专用内存页面中,并将该非特权虚拟机的操作系统映像拷贝至该虚拟机所属物理内存分区的起始位置;

步骤S540,通过CPU的高级可编程中断控制器通知该非特权虚拟机的CPU执行跳板代码;

步骤S550,该非特权虚拟机从该特权虚拟机获得自己的CPU标识及物理内存地址区间,然后进行CPU的初始化,并配置临时页面以访问分配的物理内存区间;

步骤S560,该跳板代码跳转到非特权虚拟机的操作系统映像位置执行,由用户操作系统继续初始化虚拟机并完成启动。

本发明有益效果在于:

1.通过对硬件资源的空间复用取代时分复用,避免了对CPU和内存管理特权指令的虚拟化,提高了虚拟机的性能并改善了性能稳定性;

2.通过一种基于租赁的内存共享协议在不同虚拟机之间动态平衡内存资源,提高硬件资源的使用效率;

3.本发明不需要特殊硬件支持,适用面广,同时轻量级的设计也降低了虚拟机监视器的开发调试难度。

为让本发明的上述特征和效果能阐述的更明确易懂,下文特举实施例,并配合说明书附图作详细说明如下。

附图说明

图1为本发明的虚拟化系统结构的示意图;

图2为本发明的内存虚拟化的示意图;

图3为本发明的单一物理节点中网络虚拟化的示意图;

图4为本发明的基于租赁的内存共享协议的流程图;

图5为本发明的虚拟机启动的流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种基于空间复用的轻量级虚拟化方法进行进一步的详细说明。应当理解,此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。

本发明的一种基于空间复用的轻量级虚拟化方法,面向数据中心环境,通过尽可能的绕过虚拟机监视器,使虚拟机监视器只处理I/O虚拟化,其它所有特权指令均无需由虚拟机监视器处理,直接以最高特权级运行,避免了对CPU和内存管理特权指令的“陷入-降级-返回”的处理开销,提高了虚拟化系统的性能。此外,通过对资源分配的一次性绑定,减少虚拟资源与物理资源之间映射的变动,满足对性能有严苛要求的应用的需求。

随着多核、多处理器技术的发展与成熟,处理器与内存已不再是稀缺资源,且不同于I/O设备,处理器与内存可通过空间复用,由多个操作系统实例访问;此外,处理器与内存的性能远高于I/O设备,受虚拟化性能开销的影响更为明显,而I/O设备属于慢速部件,受虚拟化性能影响较小。为了获得更好的性能,通过空间复用代替传统的时分复用,并只对I/O进行虚拟化处理,是本发明的核心思想。

本发明所述系统主要包括多个虚拟机、一个系统平台和一个虚拟机监视器,其中系统平台包括多个逻辑分区和I/O设备资源,每个逻辑分区均包含CPU资源、内存资源和特殊硬件资源,每个逻辑分区均对应运行一个虚拟机,且该虚拟机独立管理与其对应的逻辑分区中的系统资源,该系统资源包括:CPU资源、内存资源和特殊硬件资源;虚拟机监视器,用于根据整个系统的应用运行情况,对逻辑分区中的内存资源做动态调整,并处理I/O虚拟化;虚拟机,用于通过客户操作系统,运行应用程序,若该虚拟机中客户操作系统运行控制程序,则该虚拟机为特权虚拟机,负责参与系统资源的管理,其余虚拟机为非特权虚拟机,即本发明中的虚拟机包括非特权虚拟机和特权虚拟机。其中该I/O设备资源由该特权虚拟机中的控制软件和该虚拟机监视器共同管理,非特权虚拟机需要通过虚拟机监视器向特权虚拟机发起I/O请求,并由特权虚拟机代理完成I/O操作。其中每个虚拟机管理与其对应逻辑分区中的内存资源,包括对内存资源分配一部分共享内存,即公共通信缓冲区,用于虚拟机之间的高效通信。

具体来说,系统平台,包括多个逻辑分区和I/O设备资源,每个该逻辑分区均包含CPU资源、内存资源和特殊硬件资源,且每个该逻辑分区均对应运行一个虚拟机;虚拟机监视器,用于根据整体该虚拟化系统的应用程序运行情况,对该逻辑分区中的内存资源做动态调整,并处理I/O虚拟化;虚拟机,用于运行应用程序,且其一虚拟机为特权虚拟机,其余虚拟机为非特权虚拟机,该特权虚拟机运行的应用程序为控制程序,用于参与控制全部该非特权虚拟机,并为全部该非特权虚拟机分配共享内存,虚拟机间通过复用共享内存内容实现相互通信。如图1所示,本发明的实现主要涉及具有多CPU处理器、内存、I/O设备等的系统平台110。系统平台110分成多个逻辑分区111,每个逻辑分区111包括若干CPU资源112、足够的物理内存资源113以及可通过本地访问的特殊硬件资源114,如内存管理单元等。每个逻辑分区111对应运行一个虚拟机130,虚拟机130于自己的资源分区内独立管理物理CPU资源112、内存资源113以及特殊硬件资源114,从而实现性能的隔离与稳定。各个逻辑分区111的内存资源113可由虚拟机监视器120动态调整,可根据整个系统的应用运行情况进行负载均衡调度。逻辑分区111并不要求特殊硬件(比如硬件虚拟化)的支持,而只需以CPU 112为中心,分配出运行客户操作系统131所需的必要资源即可。若虚拟机130的客户操作系统131中运行控制软件132,则该虚拟机130被称为特权虚拟机,整个系统只有一个特权虚拟机存在,负责参与系统资源的管理;其他的虚拟机130’的客户操作系统131中运行应用程序133。系统的I/O资源由特权虚拟机130中的控制软件132和虚拟机监视器120共同管理,非特权虚拟机130’需要通过虚拟机监视器120向特权虚拟机130发起I/O请求,并由特权虚拟机130代理完成I/O操作。

本发明直接在各个逻辑分区111中以最高CPU特权级运行虚拟机130,当虚拟机130的数目小于等于逻辑分区111的数目时,每个虚拟机130独占分区内部的本地CPU资源112,不需要进行虚拟机调度。每个客户操作系统131都运行在最高特权级,除I/O操作之外的所有特权指令和异常处理,都由本地CPU 112处理。当虚拟机130数目大于逻辑分区111数目时,需要进行虚拟机调度,即暂停正在运行的虚拟机130并调度至后备存储,并从后备存储选择合适的虚拟机130加载至CPU执行。本发明面向私有环境下的注意性能的应用场景,不以牺牲性能为代价来换取虚拟机的动态切换,故只在虚拟机结束或崩溃时才启动新的虚拟机。

如图2所示,每个虚拟机,包括特权虚拟机220和非特权虚拟机220’,都有自己的页表221和内存管理数据结构222,该内存管理数据结构,用于监控虚拟机220/220’中的页表221情况,以产生缺页中断和更新该页表,这样虚拟机220/220’的缺页中断和页表221的更新都直接在本地处理,并不需要虚拟机监视器的参与。虚拟机监视器只需要管理虚拟地址空间和物理地址空间,并不需要像传统系统虚拟机那样,维护三个地址空间——即客户虚拟地址-客户物理地址-宿主物理地址——之间的映射,极大地降低了复杂度,提高了内存管理的性能与效率。虚拟机220/220’除了映射自己的内存分区之外,还需要映射一块公共通信缓冲区210-II,用于实现虚拟机220/220’之间的高效通信。由于x86体系结构的限制,特权虚拟机220还需映射物理内存0~1MB的区域210-I,负责平台中所有非特权虚拟机220’的启动管理。

对于同一物理节点中的虚拟机之间的网络通信虚拟化,本发明将共享内存操作封装为符合消息传递语义的通信原语,进而实现虚拟机之间的消息传递功能,并支持各种网络协议。基于共享内存的通信性能远远高于通过I/O设备的通信性能;同一物理节点中的虚拟机之间的通信,均是通过共享内存之间的直接拷贝完成,并不像传统虚拟化方案,经过软件网桥、链路层防火墙和授权页面拷贝的漫长执行路径,有效降低了网络虚拟化的开销。如图3所示,基于共享内存的网络虚拟化包括共享内存管理模块31、端口地址映射模块32、消息传递模块33、消息探寻模块34。其中,共享内存管理模块31用于负责于系统启动时初始化缓冲区、计算并注册内存段等,并在系统运行过程中对共享内存(缓冲区)进行控制与更新;端口地址映射模块32负责目标虚拟机与相应目标共享内存的地址映射;消息传递模块33负责封装内存拷贝,并根据目标地址完成数据传递;消息探寻模块34负责探询是否有新消息到达。

如图4所示,为了整个系统的平衡,本发明提供的系统还包括如下模块,用于使内存资源在各个分区动态流动,

内存分配模块,用于在系统启动时,为每个虚拟机分配固定数量的内存,特权虚拟机管理剩余所有内存资源;

第一判断模块,用于在非特权虚拟机发生缺页中断时,判断当前内存资源是否存在空闲,若存在,则调用第二判断模块,若不存在,则调用内存申请模块,并尝试于本地分配空闲内存页面或于缓存内存池中寻找尚未归还的空闲内存页面;

内存申请模块,如果内存不足,非特权虚拟机向特权虚拟机申请一定数量的内存,特权虚拟机根据当前内存空闲情况,决定是否满足该虚拟机的请求;

内存建立模块,非特权虚拟机得到空闲内存,动态地在本地建立管理结构,独占使用该段内存;

第二判断模块,非特权虚拟机判断空闲内存是否为本地空闲内存,若是,则直接释放,若不是,则调用内存归还模块;

内存归还模块,用于判断非特权虚拟机当前空闲内存是否已经大于等于用户设定阈值,若是,则立即主动归还该空闲内存至特权虚拟机,若不是,则于本地内存池中缓冲该段内存,延迟归还,直到该非特权虚拟机空闲内存已经大于等于用户设定阈值。

特权虚拟机只维护内存是否存在空闲的位置,而由非特权虚拟机独立建立该段内存的管理结构,保证了系统的安全性和隔离性;最后,特权虚拟机规定了每个虚拟机所能占用的最大内存数量,避免了恶意程序对其它虚拟机的性能干扰。这种由特权虚拟机决定内存资源分配的集中式内存共享协议,避免了分布式内存共享协议所带来的内存抖动、内存借用等复杂问题,简化了系统设计。

本发明提供的系统还包括如下模块,用于在系统开始运行时启动虚拟机,

特权虚拟机启动模块,用于启动特权虚拟机,完成对系统资源的初始化,该特权虚拟机根据配置文件或参数确定非特权虚拟机的vCPU(虚拟处理器)数目以及内存大小,并进一步确定非特权虚拟机物理内存地址区间并为之划分共享内存(通信缓冲区);

拷贝模块,用于将非特权虚拟机的启动参数和跳板代码拷贝至0~1MB内存段的专用内存页面中,并将该非特权虚拟机的操作系统映像拷贝至该非特权虚拟机所属物理内存分区的起始位置;

代码执行模块,用于通过CPU的高级可编程中断控制器(Advanced Programmable Interrupt Controller,APIC)通知非特权虚拟机的CPU执行该跳板代码,非特权虚拟机从特权虚拟机获得自己的CPU标识及物理内存地址区间,然后进行CPU的初始化,并配置临时页面以访问分配的物理内存区间,该跳板代码跳转到非特权虚拟机的操作系统映像位置执行,由客户(用户)操作系统继续初始化虚拟机并完成启动。

以下为与上述系统实施例对应的方法实施例,本实施方式可与上述实施方式互相配合实施。上述施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在上述实施方式中。

如图4所示,为了整个系统的平衡,本发明还提供了一种基于租赁的内存共享协议,使内存资源在各个分区动态流动。协议工作过程如下:

步骤S410,系统启动时,为每个虚拟机分配固定数量的内存,特权虚拟机管理剩余所有内存资源;

步骤S420,在非特权虚拟机发生缺页中断时,判断当前内存资源是否存在空闲,若存在,则执行步骤S450,若不存在,则执行步骤S430,并尝试于本地分配空闲内存页面或于缓存内存池中寻找尚未归还的空闲内存页面;

步骤S430,如果内存不足,非特权虚拟机向特权虚拟机申请一定数量的内存,特权虚拟机根据当前内存空闲情况,决定是否满足该虚拟机的请求;

步骤S440,非特权虚拟机得到空闲内存,动态地在本地建立管理结构,独占使用该段内存;

步骤S450,非特权虚拟机判断空闲内存是否为本地空闲内存,若是,则直接释放,若不是,则执行步骤S460;

步骤S460,判断非特权虚拟机当前空闲内存是否已经大于等于用户设定阈值,若是,则立即主动归还该空闲内存至特权虚拟机,若不是,则于本地内存池中缓冲该段内存,延迟归还,直到该非特权虚拟机空闲内存已经大于等于用户设定阈值。

特权虚拟机只维护内存是否空闲的位置,而由使用者即非特权虚拟机独立建立该段内存的管理结构,保证了系统的安全性和隔离性;最后,特权虚拟机规定了每个虚拟机所能占用的最大内存数量,避免了恶意程序对其它虚拟机的性能干扰。这种由特权虚拟机决定内存资源分配的集中式内存共享协议,避免了分布式内存共享协议所带来的内存抖动、内存借用等复杂问题,简化了系统设计。

如图5所示,虚拟机的启动管理包含如下步骤:

步骤S510,启动特权虚拟机,完成对物理系统资源的初始化;

步骤S520,特权虚拟机根据配置文件或参数确定非特权虚拟机的vCPU数目以及内存大小,并进一步确定非特权虚拟机物理内存地址区间并为之划分通信缓冲区;

步骤S530,将非特权虚拟机的启动参数和跳板代码拷贝至0~1MB内存段的专用内存页面中,并将非特权虚拟机的操作系统映像拷贝至该虚拟机所属物理内存分区的起始位置;

步骤S540,通过CPU的高级可编程中断控制器(Advanced Programmable Interrupt Controller,APIC)通知非特权虚拟机的CPU执行跳板代码;

步骤S550,非特权虚拟机从特权虚拟机获得自己的CPU标识及物理内存地址区间,然后进行CPU的初始化,并配置临时页面以访问分配的物理内存区间;

步骤S560,跳板代码跳转到非特权虚拟机的操作系统映像位置执行,由客户操作系统继续初始化虚拟机并完成启动。

通过结合附图对本发明具体实施例的描述与说明,本发明的其它方面及特征对本领域的技术人员而言是显而易见的。应当注意,这些实施例应被认为只是示例性的,并不用于对本发明进行限制。在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明做出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1