CN104915151A - 多虚拟机系统中一种主动共享的内存超量分配方法 - Google Patents
多虚拟机系统中一种主动共享的内存超量分配方法 Download PDFInfo
- Publication number
- CN104915151A CN104915151A CN201510296348.4A CN201510296348A CN104915151A CN 104915151 A CN104915151 A CN 104915151A CN 201510296348 A CN201510296348 A CN 201510296348A CN 104915151 A CN104915151 A CN 104915151A
- Authority
- CN
- China
- Prior art keywords
- memory
- virtual machine
- internal memory
- machine
- virtual
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及一种虚拟化系统主动共享的内存超量分配方法。目前的虚拟化系统为了满足客户虚拟机的峰值性能,对内存常采用过量分配策略,易造成低负载下内存资源的浪费。本发明方法包含三部分的内容:基于平铺记录法和差量链表记录法的客户虚拟机内存页面标记方法、基于虚拟通道的主动内存共享方法和基于上述两个方法的多虚拟机内存超量分配方法。通过本发明提供的虚拟化系统主动共享的内存超量分配方法,可以在系统内存高度竞争的情况下有效缓解系统资源的竞争程度,显著提高整个多租户云计算环境下客户虚拟机系统的性能和服务质量。
Description
技术领域
本发明涉及虚拟化计算机系统中内存资源管理与分配的实现方法,尤其是大规模部署虚拟化技术的弹性云计算系统,如互联网数据中心及多租户云计算环境中虚拟机间内存资源的管理分配方法。
背景技术
在多虚拟机(Virtual Machine, VM)系统中,多个虚拟机共享同一个物理机(Physical Machine, PM)的硬件资源,如处理器、内存、磁盘和网络设备。随着虚拟机数量的增加,硬件资源总体上可能处于过量分配状态。而在多租户云计算环境下,由于不同虚拟机的负载高峰时间可能不同,为了承载最大的客户虚拟机,物理硬件资源的过量分配情况可能进一步加剧。然而,客户虚拟机负载的不可预测性,使得静态的资源分配方式无法适应于动态的变化的负载。因此,为了保证各个客户虚拟机的性能和服务质量,虚拟机监控器必须根据不断变化的外部负载为各个客户虚拟机动态地分配资源。
处理器的分时特性使其在虚拟化系统中成为最高效的组件,而磁盘由于其独占性,成为无法虚拟化的资源。而内存的计算性能介于磁盘和处理器之间,同时由于其线性特性,特别适合于虚拟化。因此,作为虚拟化计算系统的关键资源,内存资源分配的好坏决定了整个虚拟化计算系统的性能优劣。
但是,由于现有的虚拟化平台中内存管理的方式无法在物理机上分辨客户机内部内存页面的具体状态,客户机内存页面仅以被访问的频率和内容上的重复性的形式被物理机所感知,可能出现一些不合理的情况,各种现有的内存超量使用策略也都存在一定的局限和缺陷,存在内存资源浪费、回收不及时等问题,影响了整个虚拟化系统的性能。
发明内容
由于当前的虚拟机监控器软件无法识别其上层客户虚拟机的内存使用状态,不管其实际内存页面的具体状态,虚拟机监控器仅仅根据客户机内存页面被访问的频率和内容上的重复性的形式进行分配,无法最大化整个计算机系统的最佳效能。因此,本发明基于客户虚拟机的主动共享,将客户虚拟机不使用的内存及时回收,并可分配给需要内存资源的其它虚拟机,最终提高虚拟化系统的性能和服务质量。
该发明包含三部分的内容:基于平铺记录法和差量链表记录法的客户虚拟机内存页面标记方法、基于虚拟通道(Virtual Channel,VC)的主动内存共享方法和基于上述两个方法的多虚拟机内存超量分配方法。
(1)基于平铺记录法和差量链表记录法的客户虚拟机内存页面标记方法
针对已有的虚拟机监控器不考虑具体客户虚拟机内存使用状态的特点,本发明提出了分别基于平铺记录法和差量链表记录法的客户虚拟机内存页面使用状态标记方法,用来标记客户虚拟机的内存页面的使用状态。识别客户虚拟机的内存页面的使用状态,是进行内存主动共享的前提。
(2)基于虚拟通道的主动内存共享方法
虚拟通道用来发送和处理客户虚拟机和虚拟机监控器之间的通信数据的双向管道,其使用异步通信机制完成从虚拟机监控器到客户虚拟机的指令与数据通信。通过开辟单独的共享内存区域,通信发起端(即Offer端)打开虚拟通道,虚拟通道由其端口号表示,而通信接收端(即Receiver端)通过端口号和远端域ID来连接这个虚拟通道。Offer端进程初始化的同时,虚拟通道的端口号被写进共享内存页,这样Receiver端就可以读到端口号,并连接到虚拟通道,进行数据通信。虚拟通道为进行内存超量分配提供了执行通道和桥梁。
(3)多虚拟机间内存超量分配方法
根据客户虚拟机主动提出的共享内存页面请求,虚拟机监控器进行内存回收,并可分配给需要内存资源的其它虚拟机,或将该内存资源保留以待未来使用,提高虚拟化系统的内存使用效率。
本发明方法的具体步骤是:
步骤1.在客户虚拟机和虚拟机监控器之间建立虚拟通道,用来发送和处理客户虚拟机和虚拟机监控器之间的通信数据;
步骤2.客户虚拟机本地资源代理利用基于平铺记录法和差量链表记录法标记并保存本机的内存使用状态;
步骤3.客户虚拟机通过虚拟通道将本机主动共享的内存页面告知虚拟机监控器;
步骤4.虚拟机监控器通过虚拟通道接收客户虚拟机的主动共享的内存页面地址;
步骤5. 虚拟机监控器根据客户虚拟机提供的共享内存页面地址,将相应的内存页面回收,并可分配给需要内存资源的其它虚拟机,或将该内存资源保留以待未来使用,实现内存超量分配。
步骤6.周期性循环步骤1至步骤5。
通过本发明提供的基于主动共享的内存超量分配方法,可以在多虚拟机系统中动态调整内存资源的分配,有效缓解内存资源的竞争程度,显著提高整个虚拟化系统的性能和服务质量。
附图说明
图1是虚拟化系统主动内存共享的内存超量分配方法体系结构。
图2是虚拟机内存状态转移图。
图3是差量链表记录法内存页块释放优先级。
具体实施方式
以下结合附图对本发明作进一步说明,请参阅图1;图1给出了本发明提出的虚拟化系统主动内存共享的内存超量分配方法的体系结构。其中1为计算系统中的可供分配的物理内存,2为内存驱动器,3为统一内存分配器,负责全局内存资源的统一分配。4为物理机内核内存调度器,5为内存回收模块,6(虚线框内)为虚拟机监控器,虚拟机监控器除了具备基本的虚拟机管理其中又包括3、4、5、7四部分, 7为虚拟通道,3、4、5、7四部分均为驻留在虚拟机监控器中的软件程序。8、9、10、11、12、13分别为客户虚拟机中的内存,其中8、10、12为客户虚拟机非主动共享的内存,9、11、13为客户虚拟机主动共享的内存。14、15、16为本地资源代理,17、18、19为虚拟机上的应用程序集合,20、21、22为客户虚拟机系统示例。
下面分别介绍内存驱动器、统一内存分配器、物理机内核内存调度器、内存回收模块、虚拟通道和本地资源代理。
(1)内存驱动器
本方法中的内存驱动器为物理机操作系统内核具有的内存设备驱动,其实现的功能包括内存数据写入、数据读取、中断处理等。
(2)统一内存分配器
本方法中由单独的统一内存分配器用于分配整个计算系统的内存,包括物理机和客户虚拟机内存的分配、管理和实时数据收集,可以根据不同的客户虚拟机的实时内存使用信息及其主动共享的内存页面数据,动态的调整客户虚拟机的内存分配。
(3)物理机内核内存调度器
本方法中的物理机内核内存调度器主要负责虚拟机中非主动共享内存的管理,包括其内存页面映射、页面渲染、页面释放、地址空间管理等。能够基于用户指定的服务质量和性能要求或者系统设定的内存超量值,对内存使用情况进行统计排序,将最近较少使用的内存页面进行磁盘的换入(Swap)。
(4)内存回收模块
客户机主动共享的未使用内存由内存回收模块直接回收,不再参与物理机内核的内存调度。为区别客户机中曾经使用过的内存页面和首次使用(图2中的{Nh,Ng}状态)的内存页面,未使用内存回收的具体实现方式如下:
步骤1:在客户机系统内核中的释放物理页面的位置记录所释放页面的区间;
步骤2:基于效率的考虑,当次释放后此处连续空闲空间(为内存伙伴系统联合的方式形成,以避免区间重叠)达到所设的最大连续内存管理块才作记录,若在切换出客户机前已记录的空闲内存块再次被使用则撤销先前的记录;
步骤3:在内存回收模块中根据未使用内存区间的记录信息释放相应的内存页面,并清除客户机所做的记录。
(5)虚拟通道
本方法中设计的虚拟通道为客户虚拟机向将自己主动共享的内存向内存回收模块报告的专用通道,用于客户虚拟机和虚拟机监控器之间的内存回收数据的通信通道。由于内存硬件操作具有特权级别的限制,因此,客户虚拟机的所有内存回收请求,必须通过该虚拟通道,由驻留在虚拟机监控器中的内存回收模块单独处理。该虚拟通道可以记录虚拟机主动共享内存的起始地址、终止地址、页面状态、时间戳等。该虚拟通道实现异步的双向通信,所有的通信数据暂存在指定的物理内存区域中的一块环形缓冲区,客户虚拟机和虚拟机监控器均可以从该环形缓冲区中进行数据的读取。通过虚拟通道的接口定义,设计相应的操作规则。通信数据读取的计时及频率依赖于数据查询算法的控制或者自定义事件的触发。
(6)本地资源代理
本地资源代理为驻留在客户虚拟机内的软件程序,利用内存设备、处理器及硬盘提供的硬件指令接口,收集内存、处理器和磁盘的实时信息及使用状态,并进行存储。
请参阅图2,为了进行内存分配,本发明定义了虚拟化系统中内存资源具有的各种状态。内存的状态由两个字符组合表示,其中Y代表内存页面正在被使用,N代表未被使用,h代表物理机内核端的视角,g代表客户机内核端的视角。标号①为客户机首次使用某处内存;②为客户机释放或再次使用此处内存;③和④为客户机中气球驱动锁定某处内存,并先后在物理机和客户机上释放此处内存;⑤为本方法中对未使用内存的回收过程。
请参阅图3,本发明同时给出了差量链表记录法内存页块释放优先级。差量链表记录法可进一步根据物理机内存压力的情况决定从客户机中有序释放未使用但占用物理机内存的页块,其内存页块的还原优先级的控制粒度更细,如图3所示,虚线方向代表优先级的从高到低。本方法设计的差量链表记录法使得虚拟机可更高效地仅对差量链表中的结点页块进行处理,避免了平铺记录法中不论记录数值代表是否可以进行释放操作都进行读取判别,不必像平铺记录法那样计算从客户机物理地址到对应比特位位置的转换,因此可很容易地表达客户机物理内存页面可被释放的优先级。
本发明的实施过程适用于使用X86体系结构处理器的虚拟化计算机系统。所述虚拟化计算机系统包括至少一个硬件物理机,并且其上至少容纳有一个客户虚拟机和用于管理所述至少一个客户虚拟机的虚拟机监控器,在每一个客户虚拟机上运行有至少一个请求资源服务的计算机应用程序。
其实施方式为:通过在虚拟机监控器内核中增加新的软件代码,即可截取内存资源使用请求的申请和释放。在本发明的设计中,内存资源的主动共享策略和执行是分开的。即虚拟机根据自身的实时内存使用情况,通过虚拟通道向内存回收模块报告主动共享的内存;同时,在虚拟机监控器器中添加了自定义的统一内存分配器,统一内存分配器会根据动态的内存使用监控历史、分配时间和虚拟机的主动共享请求等因素进行判断,决定内存资源的回收及再分配,再分配信息包括哪些虚拟机可以使用哪些内存空间、内存使用的数量、时间等,具体的再分配策略则由本地的内存驱动器器实施,通过调用相应的硬件部件的函数或指令接口实现。
为了实现客户虚拟机、内存回收模块及虚拟机监控器之间的通信,本发明通过在虚拟机监控器中开辟一块单独的内存空间作为信息交换区,在客户虚拟机、内存回收模块及虚拟机监控器之间建立一个虚拟通道,通过虚拟通道进行数据交换和互操作。该虚拟通道包含两个共享内存空间用于两个方向上的通信,一个为发送通道,一个为接收通道,通道的两端设置排队记录和输出记录。
本发明提出的多虚拟机系统中主动共享的内存超量分配方法,不依赖于具体的客户虚拟机操作系统类型和版本号,不依赖于具体的程序设计语言。为了获得更好的可用性,除了兼容现有的其他内存超量使用策略外,只要原系统支持,本发明提出的方法还可兼容客户虚拟机内存热插拔技术和嵌套虚拟机技术。在不改动客户机操作系统的前提下,客户虚拟机通过在虚拟通道中写入相应的主动共享内存的起始地址和终止地址,在虚拟机监控器中即可通过内存回收模块动态获取客户机操作系统当前主动共享的内存的各种数据信息,计算出其待回收内存空间,从而直接在虚拟机监控器中通过统一的内存分配器动态按需的分配给不同的虚拟机不同的内存空间,避免多虚拟机共存系统的其它客户虚拟机系统的性能发生显著下降,提高其应用程序的服务质量。
在本发明的具体实施例中,多虚拟机系统中主动共享的内存超量分配方法的方法包含:收集与分析客户操作系统访问内存及磁盘交换的历史数据的装置、生成内存主动共享策略、以及实施该策略的软件程序。装置包括物理计算机及其上的虚拟机资源服务的控制逻辑和执行单元,所述的虚拟机资源服务控制逻辑在虚拟机监控器及其客户机之间转移对竞争内存资源的控制。所述执行单元用于执行指令以将内存资源从一个客户机的虚拟设备空间转移到另一客户虚拟机的虚拟内存地址空间中。本发明中所指的客户机中的未使用内存即客户虚拟机操作系统内核所见的空闲内存页面,而非用户空间中普通应用程序所见的包含缓冲区和缓存的可用内存。
本发明提出的多虚拟机系统中一种主动共享的内存超量分配方法,其实施步骤如下:
步骤1.在客户虚拟机和虚拟机监控器之间建立虚拟通道,用来发送和处理客户虚拟机和虚拟机监控器之间的通信数据;
步骤2.客户虚拟机本地资源代理利用基于平铺记录法和差量链表记录法标记并保存本机的内存使用状态;
步骤3.客户虚拟机通过虚拟通道将本机主动共享的内存页面告知虚拟机监控器;
步骤4.虚拟机监控器通过虚拟通道接收客户虚拟机的主动共享的内存页面地址;
步骤5. 虚拟机监控器根据客户虚拟机提供的共享内存页面地址,将相应的内存页面回收,并可分配给需要内存资源的其它虚拟机,或将该内存资源保留以待未来使用,实现内存超量分配。
步骤6.周期性循环步骤1至步骤5。
通过本发明提供的基于主动共享的内存超量分配方法,可以在多虚拟机系统中动态调整内存资源的分配,有效缓解内存资源的竞争程度,显著提高整个虚拟化系统的性能和服务质量。
下面分别对上述实施步骤进行详细说明。
(1)步骤1
物理机之上的各个虚拟机通过调用虚拟机监控器提供的操作指令接口,调用特权指令或硬件指定指令,在客户虚拟机和虚拟机监控器之间建立虚拟通道。
在虚拟通道中,通过与硬件设备的中断机制绑定起来,以进行控制信息的传递和相关消息的通知。而数据的传输则通过共享内存来实现。在X86虚拟化环境中,一个32位的客户虚拟机最多可以支持1024个通道,每个64位的客户虚拟机最多可以支持4096个通道。通过给每个通道唯一的编号(即端口号),并定义该虚拟通道的不同状态,即可进行数据的双向传输。本发明以AVAIL状态表示该通道可用,处于等待使用和分配的状态,RESVD表示该通道被系统保留,不参与分配的状态,NOBOUND表示该通道处于未绑定状态, INTRDMN表示该通道已经处于和其他虚拟机域绑定的状态,通过PHYIRQ、VRTLIRQ和VCPUIRQ则分别表示该通道绑定了某一物理中断、虚拟中断和虚拟处理器间中断。在建立虚拟机域A与虚拟机域B之间的域间通信时,虚拟域A要先分配一个未绑定的虚拟通道,并且授予一定权限给虚拟域B用来绑定它,当虚拟域B需要与虚拟域A通信时,虚拟域B就分配一个虚拟通道并绑定到虚拟域A的这个通道端口上。双向连接都建立完之后,双方虚拟域即可以向对方的端口发送事件通知。
(2)步骤2
客户虚拟机本地资源代理为驻留在客户虚拟机内的软件程序,利用内存设备、处理器及硬盘提供的硬件指令接口,收集内存、处理器和磁盘的实时信息及使用状态,动态截获虚拟机中申请和释放内存的函数,并记录下来,并收集内存空间使用率、内存高速缓存命中率、内存高速缓存缺失率信息。分析这些受监控函数,获取函数调用栈,更新虚拟机中各个应用程序占用内存资源的列表。如果是资源申请函数则增加内存占用信息,而资源释放函数则需要删除相应的内存信息。通过维护动态的内存资源使用和状态列表,详尽和全面地掌握被监控虚拟机使用内存资源情况。
由于客户机对内存页面访问的频率可以被物理机操作系统内核感知,客户机须要告知物理机关于内存使用情况最重要的信息就是那些曾经使用过,但当前不再使用的内存页面。本发明分别通过平铺记录法和链表记录法对客户虚拟机内存页面进行标记。
平铺记录法以二进制的0或1代表某客户机物理内存页块是否须要被释放,每个页块的大小为2的整数次幂字节,可根据需要决定基本页块的大小,大块可用多个比特位表示,该信息记录存储在客户机中,以解决与虚拟层对该信息的读写同步问题。
标记内存状态时,从使用状态到不用状态是在客户机中释放该内存页块后置1,并保证置位过程直接写入内存,不被客户机操作系统的虚拟处理器缓存,从不用状态到初始状态的过程须先锁定要释放内存的区域,以免与其他内存管理策略产生冲突。
链表记录法方法利用客户机内部空闲内存页块链表的结构描述客户机空闲链表信息。通过虚拟层上记录包含页块信息的差量链表,在新空闲内存页块产生后将其插入记录的差量链表中,记录包含页块起始地址页框号和页块大小信息的链表,可更高效地仅对差量链表中的结点页块进行处理,优化了平铺记录法中不论记录数值代表是否可以进行释放操作都进行读取判别,同时不必像平铺记录法那样计算从客户机物理地址到对应比特位位置的转换,可很容易地表达客户机物理内存页面可被释放的优先级。
(3)步骤3
客户虚拟机通过虚拟通道将本机主动共享的内存页面告知虚拟机监控器,将非主动共享内存信息直接发送到物理机内核内存调度器。
在虚拟通道中,一个虚拟机可以通过选择页面映射、页面传输、页面拷贝三种方式之一进行内存共享进行数据传输。页面映射即一个虚拟机提供共享内存页面并授权另一个虚拟机将内存页面映射到自己的地址空间。在整个页面映射的过程中,该共享内存页面的所有权一直归提供内存页面的虚拟域所有,另一个域只是根据收到的授权索引,将被授权访问的内存也映射到自己的地址空间。通过页面传输操作与页面映射操作大体上类似,都是将一个虚拟域的内存页映射到另一个虚拟域的地址空间中,但不同的是,在页面的传输过程中,提供内存页面的虚拟域丧失该内存页面的所有权,所有权转交给接收页面的虚拟域。页面拷贝方式是一个更加简便快捷的虚拟通道数据传输方式,它不像页面映射和页面传输一样以页为单位,而是以内存页中的一部分为操作对象,因此比较适用于小量数据的传输,这样可以减少页表更新操作的频率,降低系统的性能开销。
(4)步骤4
虚拟机的虚拟设备驱动在初始化时,通过传递驱动程序结构体信息向该树状结构进行注册,然后,虚拟机监控器通过虚拟通道接收客户虚拟机的主动共享的内存页面地址,记录主动共享的内存页面的起始地址、终止地址、页面状态、时间戳等,保存到一个树状数据存储结构中,并通过用户空间函数、内核接口、Unix套接字或内核API函数调用来查询其存储的数据。通过创建一个虚拟设备的本地管理端口,该数据即能被客户虚拟机使用前端设备驱动访问。这样,各个虚拟机的共享数据及其后端设备的状态不仅可以实时被监测,而且能够将前端设备与后端服务通过已经建立的虚拟通道进行通信。
(5)步骤5
虚拟机监控器根据客户虚拟机提供的共享内存页面地址,回收客户机操作系统中被释放的内存,消除该部分内存对物理机内存调度算法的干扰,减少了页面交换对磁盘I/O资源的占用,降低内存合并操作的计算量。为区别客户机中曾经使用过的内存页面和首次使用(图2中的{Nh,Ng}状态)的内存页面,未使用内存回收的具体实现方式如下:在客户机系统内核中的释放物理页面的位置记录所释放页面的区间,基于效率的考虑,当次释放后此处连续空闲空间(内存伙伴系统联合的方式形成,以避免区间重叠)达到所设的最大连续内存管理块才作记录,若在切换出客户机前已记录的空闲内存块再次被使用则撤销先前的记录;在虚拟机监控器中根据未使用内存区间的记录信息释放相应的内存页面,并清除客户机作的记录。在释放相应物理内存之前,本发明首先对该区间内存执行锁定操作,出于安全方面的考虑,释放物理页面前先对该区域内存进行清零,在释放操作后及时更新物理机的快表,最后再解除对该区域内存的锁定,从而实现了与其他超量使用内存策略的兼容。
客户机主动共享的未使用内存由虚拟机监控器直接回收,重新交给物理机操作系统内核内存管理单元的空闲链表中,不再参与物理机内核的内存调度,客户机中未主动共享的(使用中的)内存可与主动共享的(未使用的)内存进行状态互换,该过程的粒度可静态设定。
对于客户机中内存状态转换的记录信息通过如下控制机制,从而保证客户机与物理机切换时记录信息与实际内存状态的一致性,避免出现错误释放的情况:
(i) 在客户机物理内存释放后在相应标志位作记录;
(ii) 在客户机物理内存被使用前若相应标志位已有记录,则将该记录清除。
(6)步骤6
根据客户虚拟机得到资源服务后的外在性能表现和内存的可用性,决定未来的内存分配决策。如果根据客户虚拟机的资源需求的增加来增加其资源服务配额(如内存空间)会提高客户虚拟机的应用程序性能(如加快应用程序响应、增加应用程序吞吐量、减少处理器等待队列长度、减少磁盘输入输出等待队列长度等),则周期性循环步骤1至步骤6,继续回收主动共享的内存,并分配给目标客户虚拟机,直到其程序性能提高很少或开始下降。将回收的内存资源标记为可分配资源,形成一个内存资源池,以供合适的时候由虚拟机监控器重新分配给新加入的客户虚拟机或现有客户虚拟机。
Claims (4)
1.多虚拟机系统中一种主动共享的内存超量分配方法,其特征在于该方法包括如下步骤:
步骤1.在客户虚拟机和虚拟机监控器之间建立虚拟通道,用来发送和处理客户虚拟机和虚拟机监控器之间的通信数据;
步骤2.客户虚拟机本地资源代理利用基于平铺记录法和差量链表记录法标记并保存本机的内存使用状态;
步骤3.客户虚拟机通过虚拟通道将本机主动共享的内存页面告知虚拟机监控器;
步骤4.虚拟机监控器通过虚拟通道接收客户虚拟机的主动共享的内存页面地址;
步骤5.虚拟机监控器根据客户虚拟机提供的共享内存页面地址,将相应的内存页面回收,并可分配给需要内存资源的其它虚拟机,或将该内存资源保留以待未来使用,实现内存超量分配;
步骤6.周期性循环步骤1至步骤5。
2.根据权利要求1所述的多虚拟机系统中一种主动共享的内存超量分配方法,其特征在于:步骤1中以AVAIL状态表示通道可用,处于等待使用和分配的状态,RESVD表示通道被系统保留,不参与分配的状态,NOBOUND表示通道处于未绑定状态,INTRDMN表示该通道已经处于和其他虚拟机域绑定的状态,通过PHYIRQ、VRTLIRQ和VCPUIRQ分别表示通道绑定了某一物理中断、虚拟中断和虚拟处理器间中断;在建立虚拟机域A与虚拟机域B之间的域间通信时,虚拟域A先分配一个未绑定的虚拟通道,并且授予权限给虚拟域B用来绑定它,当虚拟域B需要与虚拟域A通信时,虚拟域B就分配一个虚拟通道并绑定到虚拟域A的这个通道端口上,双向连接都建立完之后,双方虚拟域即可以向对方的端口发送事件通知。
3.根据权利要求1所述的多虚拟机系统中一种主动共享的内存超量分配方法,其特征在于:步骤2中
所述客户虚拟机本地资源代理为驻留在客户虚拟机内的软件程序,利用内存设备、处理器及硬盘提供的硬件指令接口,收集内存、处理器和磁盘的实时信息及使用状态,动态截获虚拟机中申请和释放内存的函数,并记录下来,并收集内存空间使用率、内存高速缓存命中率、内存高速缓存缺失率信息;
所述平铺记录法以二进制的0或1代表某客户机物理内存页块是否须要被释放,每个页块的大小为2的整数次幂字节,可根据需要决定基本页块的大小,大块可用多个比特位表示,该信息记录存储在客户机中,以解决与虚拟层对该信息的读写同步问题;
标记内存状态时,从使用状态到不用状态是在客户机中释放该内存页块后置1,并保证置位过程直接写入内存,不被客户机操作系统的虚拟处理器缓存,从不用状态到初始状态的过程须先锁定要释放内存的区域,以免与其他内存管理策略产生冲突;
所述链表记录法方法利用客户机内部空闲内存页块链表的结构描述客户机空闲链表信息;通过虚拟层上记录包含页块信息的差量链表,在新空闲内存页块产生后将其插入记录的差量链表中,记录包含页块起始地址页框号和页块大小信息的链表。
4.根据权利要求1所述的多虚拟机系统中一种主动共享的内存超量分配方法,其特征在于:步骤5中
虚拟机监控器根据客户虚拟机提供的共享内存页面地址,回收客户机操作系统中被释放的内存,消除该部分内存对物理机内存调度算法的干扰,减少了页面交换对磁盘I/O资源的占用,降低内存合并操作的计算量;为区别客户机中曾经使用过的内存页面和首次使用的内存页面,未使用内存回收的具体实现方式如下:在客户机系统内核中的释放物理页面的位置记录所释放页面的区间,基于效率的考虑,当次释放后此处连续空闲空间达到所设的最大连续内存管理块才作记录,若在切换出客户机前已记录的空闲内存块再次被使用则撤销先前的记录;在虚拟机监控器中根据未使用内存区间的记录信息释放相应的内存页面,并清除客户机作的记录;在释放相应物理内存之前,首先对该区间内存执行锁定操作,出于安全方面的考虑,释放物理页面前先对该区域内存进行清零,在释放操作后及时更新物理机的快表,最后再解除对该区域内存的锁定,从而实现了与其他超量使用内存策略的兼容;
客户机主动共享的未使用内存由虚拟机监控器直接回收,重新交给物理机操作系统内核内存管理单元的空闲链表中,不再参与物理机内核的内存调度,客户机中未主动共享的内存可与主动共享的内存进行状态互换,该过程的粒度可静态设定;
对于客户机中内存状态转换的记录信息通过如下控制机制,从而保证客户机与物理机切换时记录信息与实际内存状态的一致性,避免出现错误释放的情况:
(i) 在客户机物理内存释放后在相应标志位作记录;
(ii) 在客户机物理内存被使用前若相应标志位已有记录,则将该记录清除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510296348.4A CN104915151B (zh) | 2015-06-02 | 2015-06-02 | 多虚拟机系统中一种主动共享的内存超量分配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510296348.4A CN104915151B (zh) | 2015-06-02 | 2015-06-02 | 多虚拟机系统中一种主动共享的内存超量分配方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104915151A true CN104915151A (zh) | 2015-09-16 |
CN104915151B CN104915151B (zh) | 2018-12-07 |
Family
ID=54084247
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510296348.4A Active CN104915151B (zh) | 2015-06-02 | 2015-06-02 | 多虚拟机系统中一种主动共享的内存超量分配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104915151B (zh) |
Cited By (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017143718A1 (zh) * | 2016-02-26 | 2017-08-31 | 成都赫尔墨斯科技有限公司 | 一种云渲染系统、服务器及方法 |
CN107229506A (zh) * | 2017-05-27 | 2017-10-03 | 郑州云海信息技术有限公司 | 一种虚拟机迁移方法及装置 |
CN107391253A (zh) * | 2017-06-08 | 2017-11-24 | 珠海金山网络游戏科技有限公司 | 一种降低系统内存分配释放冲突的方法 |
CN107391227A (zh) * | 2017-07-20 | 2017-11-24 | 郑州云海信息技术有限公司 | 一种内存管理方法及装置 |
CN107436808A (zh) * | 2016-04-22 | 2017-12-05 | 凯为公司 | 用于动态虚拟片上系统的方法和装置 |
CN108415876A (zh) * | 2017-02-28 | 2018-08-17 | 张家口浩扬科技有限公司 | 一种动态计算装置 |
CN108984270A (zh) * | 2018-07-18 | 2018-12-11 | 郑州云海信息技术有限公司 | 一种虚拟机的内存分配方法和装置 |
CN109002347A (zh) * | 2018-07-26 | 2018-12-14 | 郑州云海信息技术有限公司 | 一种虚拟机内存分配方法、装置及系统 |
CN109240800A (zh) * | 2018-09-11 | 2019-01-18 | 武汉光庭信息技术股份有限公司 | 一种基于Hypervisor多系统共享内存的管理方法 |
CN109644223A (zh) * | 2016-12-27 | 2019-04-16 | 惠普打印机韩国有限公司 | 对虚拟机的操作环境进行优化 |
CN109669913A (zh) * | 2018-12-25 | 2019-04-23 | 杭州达现科技有限公司 | 一种基于显示界面的存储空间的分配方法和装置 |
CN109711193A (zh) * | 2018-12-24 | 2019-05-03 | 杭州达现科技有限公司 | 一种存储空间的共享方法和装置 |
CN110019475A (zh) * | 2017-12-21 | 2019-07-16 | 杭州华为数字技术有限公司 | 数据持久化处理方法、装置及系统 |
CN110196770A (zh) * | 2018-07-13 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 云系统内存数据处理方法、装置、设备及存储介质 |
CN110622478A (zh) * | 2018-04-08 | 2019-12-27 | 华为技术有限公司 | 数据同步处理的方法和装置 |
CN110998530A (zh) * | 2017-08-02 | 2020-04-10 | 华为技术有限公司 | 一种虚拟机资源分配系统、方法及计算机程序 |
CN111190752A (zh) * | 2019-12-30 | 2020-05-22 | 海光信息技术有限公司 | 虚拟机共享内核内存的方法及装置 |
CN111552608A (zh) * | 2020-04-09 | 2020-08-18 | 烽火通信科技股份有限公司 | 一种驱动内存监控方法及系统 |
CN111796944A (zh) * | 2019-04-08 | 2020-10-20 | 维塔科技(北京)有限公司 | 切换共享内存区的方法和装置、存储介质和电子设备 |
CN112131317A (zh) * | 2020-11-25 | 2020-12-25 | 江苏荣泽信息科技股份有限公司 | 一种基于区块链技术的数据存储安全系统 |
WO2021014338A1 (en) * | 2019-07-23 | 2021-01-28 | Arm Technology (China) Co. LTD | Allocation policy for shared resource accessible in both secure and less secure domains |
CN113296883A (zh) * | 2021-02-22 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 应用管理方法和装置 |
CN113641464A (zh) * | 2021-10-15 | 2021-11-12 | 云宏信息科技股份有限公司 | Xen平台的内存配置方法、系统及计算机可读存储介质 |
CN113641465A (zh) * | 2021-10-15 | 2021-11-12 | 云宏信息科技股份有限公司 | 虚拟机内存的超分方法、系统及计算机可读存储介质 |
WO2022055684A1 (en) * | 2020-09-08 | 2022-03-17 | Qualcomm Incorporated | Flash memory local purge |
CN114237818A (zh) * | 2021-12-01 | 2022-03-25 | 科东(广州)软件科技有限公司 | 虚拟机间共享资源的方法、系统、计算设备及存储介质 |
CN114296970A (zh) * | 2022-03-09 | 2022-04-08 | 南京赛宁信息技术有限公司 | 网络靶场独立网络之间虚拟机共享剪贴板方法及系统 |
TWI764483B (zh) * | 2020-12-29 | 2022-05-11 | 華南商業銀行股份有限公司 | 利用外部空間的可用空間擴充方法 |
CN114978589A (zh) * | 2022-04-13 | 2022-08-30 | 中国科学院信息工程研究所 | 一种轻量级云操作系统及其构建方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100274947A1 (en) * | 2009-04-27 | 2010-10-28 | Hitachi, Ltd. | Memory management method, memory management program, and memory management device |
CN102193814A (zh) * | 2010-03-09 | 2011-09-21 | 上海拜翰网络科技有限公司 | 嵌入式虚拟化内存动态分配方法及系统 |
CN102841759A (zh) * | 2012-05-10 | 2012-12-26 | 天津兆民云计算科技有限公司 | 一种针对超大规模虚拟机集群的存储系统 |
US20140372726A1 (en) * | 2013-06-17 | 2014-12-18 | Samsung Electronics Co., Ltd. | Memory management method and apparatus |
-
2015
- 2015-06-02 CN CN201510296348.4A patent/CN104915151B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100274947A1 (en) * | 2009-04-27 | 2010-10-28 | Hitachi, Ltd. | Memory management method, memory management program, and memory management device |
CN102193814A (zh) * | 2010-03-09 | 2011-09-21 | 上海拜翰网络科技有限公司 | 嵌入式虚拟化内存动态分配方法及系统 |
CN102841759A (zh) * | 2012-05-10 | 2012-12-26 | 天津兆民云计算科技有限公司 | 一种针对超大规模虚拟机集群的存储系统 |
US20140372726A1 (en) * | 2013-06-17 | 2014-12-18 | Samsung Electronics Co., Ltd. | Memory management method and apparatus |
Non-Patent Citations (1)
Title |
---|
杜炜: "KVM客户机主动共享的内存超量使用策略研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017143718A1 (zh) * | 2016-02-26 | 2017-08-31 | 成都赫尔墨斯科技有限公司 | 一种云渲染系统、服务器及方法 |
CN107436808A (zh) * | 2016-04-22 | 2017-12-05 | 凯为公司 | 用于动态虚拟片上系统的方法和装置 |
CN107436808B (zh) * | 2016-04-22 | 2023-07-07 | 马维尔亚洲私人有限公司 | 用于动态虚拟片上系统的方法和装置 |
CN109644223A (zh) * | 2016-12-27 | 2019-04-16 | 惠普打印机韩国有限公司 | 对虚拟机的操作环境进行优化 |
CN108415876A (zh) * | 2017-02-28 | 2018-08-17 | 张家口浩扬科技有限公司 | 一种动态计算装置 |
CN107229506A (zh) * | 2017-05-27 | 2017-10-03 | 郑州云海信息技术有限公司 | 一种虚拟机迁移方法及装置 |
CN107229506B (zh) * | 2017-05-27 | 2020-09-18 | 苏州浪潮智能科技有限公司 | 一种虚拟机迁移方法及装置 |
CN107391253A (zh) * | 2017-06-08 | 2017-11-24 | 珠海金山网络游戏科技有限公司 | 一种降低系统内存分配释放冲突的方法 |
CN107391227A (zh) * | 2017-07-20 | 2017-11-24 | 郑州云海信息技术有限公司 | 一种内存管理方法及装置 |
CN110998530A (zh) * | 2017-08-02 | 2020-04-10 | 华为技术有限公司 | 一种虚拟机资源分配系统、方法及计算机程序 |
CN110019475B (zh) * | 2017-12-21 | 2021-07-20 | 华为技术有限公司 | 数据持久化处理方法、装置及系统 |
CN110019475A (zh) * | 2017-12-21 | 2019-07-16 | 杭州华为数字技术有限公司 | 数据持久化处理方法、装置及系统 |
CN110622478A (zh) * | 2018-04-08 | 2019-12-27 | 华为技术有限公司 | 数据同步处理的方法和装置 |
CN110622478B (zh) * | 2018-04-08 | 2020-11-06 | 华为技术有限公司 | 数据同步处理的方法和装置 |
CN110196770B (zh) * | 2018-07-13 | 2023-04-18 | 腾讯科技(深圳)有限公司 | 云系统内存数据处理方法、装置、设备及存储介质 |
CN110196770A (zh) * | 2018-07-13 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 云系统内存数据处理方法、装置、设备及存储介质 |
CN108984270A (zh) * | 2018-07-18 | 2018-12-11 | 郑州云海信息技术有限公司 | 一种虚拟机的内存分配方法和装置 |
CN108984270B (zh) * | 2018-07-18 | 2020-12-01 | 苏州浪潮智能科技有限公司 | 一种虚拟机的内存分配方法和装置 |
CN109002347B (zh) * | 2018-07-26 | 2022-02-18 | 郑州云海信息技术有限公司 | 一种虚拟机内存分配方法、装置及系统 |
CN109002347A (zh) * | 2018-07-26 | 2018-12-14 | 郑州云海信息技术有限公司 | 一种虚拟机内存分配方法、装置及系统 |
CN109240800A (zh) * | 2018-09-11 | 2019-01-18 | 武汉光庭信息技术股份有限公司 | 一种基于Hypervisor多系统共享内存的管理方法 |
CN109240800B (zh) * | 2018-09-11 | 2021-07-23 | 武汉光庭信息技术股份有限公司 | 一种基于Hypervisor多系统共享内存的管理方法 |
CN109711193B (zh) * | 2018-12-24 | 2021-03-19 | 杭州达现科技有限公司 | 一种存储空间的共享方法和装置 |
CN109711193A (zh) * | 2018-12-24 | 2019-05-03 | 杭州达现科技有限公司 | 一种存储空间的共享方法和装置 |
CN109669913A (zh) * | 2018-12-25 | 2019-04-23 | 杭州达现科技有限公司 | 一种基于显示界面的存储空间的分配方法和装置 |
CN111796944A (zh) * | 2019-04-08 | 2020-10-20 | 维塔科技(北京)有限公司 | 切换共享内存区的方法和装置、存储介质和电子设备 |
WO2021014338A1 (en) * | 2019-07-23 | 2021-01-28 | Arm Technology (China) Co. LTD | Allocation policy for shared resource accessible in both secure and less secure domains |
US11520493B2 (en) | 2019-07-23 | 2022-12-06 | Arm Technology (China) Co. LTD | Allocation policy for shared resource accessible in both secure and less secure domains |
CN111190752A (zh) * | 2019-12-30 | 2020-05-22 | 海光信息技术有限公司 | 虚拟机共享内核内存的方法及装置 |
CN111190752B (zh) * | 2019-12-30 | 2023-04-07 | 海光信息技术股份有限公司 | 虚拟机共享内核内存的方法及装置 |
CN111552608A (zh) * | 2020-04-09 | 2020-08-18 | 烽火通信科技股份有限公司 | 一种驱动内存监控方法及系统 |
CN111552608B (zh) * | 2020-04-09 | 2022-11-18 | 烽火通信科技股份有限公司 | 一种驱动内存监控方法及系统 |
WO2022055684A1 (en) * | 2020-09-08 | 2022-03-17 | Qualcomm Incorporated | Flash memory local purge |
CN112131317A (zh) * | 2020-11-25 | 2020-12-25 | 江苏荣泽信息科技股份有限公司 | 一种基于区块链技术的数据存储安全系统 |
CN112131317B (zh) * | 2020-11-25 | 2021-03-16 | 江苏荣泽信息科技股份有限公司 | 一种基于区块链技术的数据存储安全系统 |
TWI764483B (zh) * | 2020-12-29 | 2022-05-11 | 華南商業銀行股份有限公司 | 利用外部空間的可用空間擴充方法 |
CN113296883A (zh) * | 2021-02-22 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 应用管理方法和装置 |
CN113296883B (zh) * | 2021-02-22 | 2023-08-04 | 阿里巴巴集团控股有限公司 | 应用管理方法和装置 |
CN113641465A (zh) * | 2021-10-15 | 2021-11-12 | 云宏信息科技股份有限公司 | 虚拟机内存的超分方法、系统及计算机可读存储介质 |
CN113641464A (zh) * | 2021-10-15 | 2021-11-12 | 云宏信息科技股份有限公司 | Xen平台的内存配置方法、系统及计算机可读存储介质 |
CN114237818B (zh) * | 2021-12-01 | 2022-11-11 | 科东(广州)软件科技有限公司 | 虚拟机间共享资源的方法、系统、计算设备及存储介质 |
CN114237818A (zh) * | 2021-12-01 | 2022-03-25 | 科东(广州)软件科技有限公司 | 虚拟机间共享资源的方法、系统、计算设备及存储介质 |
CN114296970A (zh) * | 2022-03-09 | 2022-04-08 | 南京赛宁信息技术有限公司 | 网络靶场独立网络之间虚拟机共享剪贴板方法及系统 |
CN114296970B (zh) * | 2022-03-09 | 2022-07-01 | 南京赛宁信息技术有限公司 | 网络靶场独立网络之间虚拟机共享剪贴板方法及系统 |
CN114978589A (zh) * | 2022-04-13 | 2022-08-30 | 中国科学院信息工程研究所 | 一种轻量级云操作系统及其构建方法 |
CN114978589B (zh) * | 2022-04-13 | 2023-08-08 | 中国科学院信息工程研究所 | 一种轻量级云操作系统及其构建方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104915151B (zh) | 2018-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104915151A (zh) | 多虚拟机系统中一种主动共享的内存超量分配方法 | |
CN100578456C (zh) | 信息处理装置、进程控制方法 | |
CN102306126B (zh) | 内存管理方法、装置和系统 | |
US4528624A (en) | Method and apparatus for allocating memory space based upon free space in diverse memory devices | |
US11042331B2 (en) | Memory device managing data in accordance with command and non-transitory computer readable recording medium | |
US20070124365A1 (en) | Method, apparatus and program storage device that provides a user mode device interface | |
CN105095094A (zh) | 内存管理方法和设备 | |
US20090100249A1 (en) | Method and apparatus for allocating architectural register resources among threads in a multi-threaded microprocessor core | |
CN107046508A (zh) | 报文接收方法及网络设备 | |
CN110162328B (zh) | 一种智能卡操作系统升级方法及装置 | |
CN101859279A (zh) | 一种内存分配、释放方法及装置 | |
CN104636186A (zh) | 虚拟机内存管理方法、物理主机、pcie设备及其配置方法以及迁移管理设备 | |
US20150033226A1 (en) | Host system and method for managing data consumption rate in a virtual data processing environment | |
JP5969122B2 (ja) | ホストバスアダプタおよびシステム | |
US20140351550A1 (en) | Memory management apparatus and method for threads of data distribution service middleware | |
US7793051B1 (en) | Global shared memory subsystem | |
WO2021218101A1 (zh) | 固态硬盘的缓存管理系统、方法、装置 | |
CN1307558C (zh) | 通信系统中分系统间的虚拟内存分配管理方法 | |
CN113076180B (zh) | 上行数据通路的构建方法及数据处理系统 | |
CN113076189B (zh) | 具有多数据通路的数据处理系统及用多数据通路构建虚拟电子设备 | |
US20210373926A1 (en) | Resource use method, electronic device, and computer program product | |
CN102662891A (zh) | 基于亲和性感知的dma缓冲区管理方法及装置 | |
CN104219260A (zh) | 同一物理机内虚拟机间数据交换的方法、系统与物理主机 | |
CN105659216A (zh) | 多核处理器系统的缓存目录处理方法和目录控制器 | |
CN114662162B (zh) | 实现动态分配vf的多算法核高性能sr-iov加解密系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |