基于定制tlb代换的虚拟机迁移时脏页记录方法

文档序号:809172 发布日期:2021-03-26 浏览:6次 >En<

阅读说明:本技术 基于定制tlb代换的虚拟机迁移时脏页记录方法 (Virtual machine migration time dirty page recording method based on customized TLB replacement ) 是由 刘松 王星焱 林海南 黄高阳 郑岩 邹通 于 2019-09-25 设计创作,主要内容包括:本发明公开一种基于定制TLB代换的虚拟机迁移时脏页记录方法,包括以下步骤:将虚拟机的迁移标志设置为开启,在虚拟机管理层申请“脏页缓冲区”;判断造成缺页的读写标志,如果是读标志,则需要设置TLB的只读标志位;如果是写标志,计算虚拟地址对应的宿主机页面号,并记录脏页;在数据流异常处理流程中,重填TLB,判断此时TLB是否真正具有只读标志,如果没有则需要记录脏页;否则,进入正常的数据流异常处理流程中。本发明通过虚拟地址到宿主机页面的映射关系,在特权指令模式下实现脏页记录过程,无需维护额外的影子页表,节约大量的内存资源;无需频繁虚拟机退出操作,节约大量的CPU资源,并且大幅度提高了TLB的命中率,进而提高CPU执行效率。(The invention discloses a method for recording dirty pages during virtual machine migration based on customized TLB replacement, which comprises the following steps: setting a migration mark of a virtual machine to be started, and applying for a &#39;dirty page buffer&#39; on a virtual machine management layer; judging the reading and writing mark causing the page fault, if the reading mark is the page fault, setting a read-only mark bit of the TLB; if the address is the writing mark, calculating a host page number corresponding to the virtual address, and recording dirty pages; in the data flow exception handling flow, the TLB is refilled, whether the TLB really has a read-only mark at the moment is judged, and if not, dirty pages need to be recorded; otherwise, entering a normal data flow exception processing flow. According to the method, the dirty page recording process is realized in the privilege instruction mode through the mapping relation from the virtual address to the host page, an additional shadow page table does not need to be maintained, and a large amount of memory resources are saved; frequent virtual machine quitting operation is not needed, a large amount of CPU resources are saved, the hit rate of the TLB is greatly improved, and the execution efficiency of the CPU is improved.)

基于定制TLB代换的虚拟机迁移时脏页记录方法

技术领域

本发明涉及一种基于定制TLB代换的虚拟机迁移时脏页记录方法,属于计算机技术领域,尤其是国产申威多核服务器操作系统技术领域。

背景技术

随着云计算和数据中心的快速发展,虚拟机动态迁移成为虚拟化技术应用的重要方面。虚拟机动态迁移需要在虚拟机不停机状态下,通过多轮迭代拷贝所需迁移的脏页,最终将虚拟机的所有页面迁移到目标宿主机。因此,快速稳定的记录脏页成了虚拟机动态迁移的关键技术。

目前,从软件层面支持虚拟机动态迁移时脏页记录的技术是影子页表。影子页表(Shadow page tables)支持从客户机虚拟地址到宿主机物理地址的转换。为了实现这一功能,对于客户机的每一个进程都存在一组影子页表与其对应,这将占据大量的内存资源。其次,影子页表必须与客户机页表保持同步,而每次对客户机页表的修改,也必须经过影子页表,在TLB Miss过程中需要频繁的虚拟机退出,这对CPU的性能有非常高的要求。

发明内容

本发明的目的是提供一种基于定制TLB代换的虚拟机迁移时脏页记录方法,该技术通过虚拟地址到宿主机页面的映射关系,直接在TLB Miss和数据流异常的处理过程中,设置虚拟机的脏页位,而无需进行虚拟机退出动作;因此节省了维护影子页表的大量内存,同时节约了由于虚拟机退出带来的CPU资源消耗,进一步提升了虚拟机的性能。

为达到上述目的,本发明采用的技术方案是:一种基于定制TLB代换的虚拟机迁移时脏页记录方法,包括以下步骤:

S1:在虚拟机迁移过程开始前,将控制状态寄存器中的迁移标志设置为开启;

S2:在虚拟机管理层申请“脏页缓冲区”;

S3:虚拟机TLB Miss过程中,判断造成缺页的读写标志,如果是读标志,则设置此时虚拟地址对应的TLB设为只读;如果是写标志,计算虚拟地址对应的宿主机页面号,并记录脏页;

S4:虚拟机数据流异常处理过程中,重填虚拟地址对应的TLB,判断此时TLB是否真正具有只读标志,如果没有则需要记录脏页;否则,进入正常的数据流异常处理流程中;

S5:退出到宿主机,根据虚拟机管理层记录的脏页位,将相应脏页迁移到目的虚拟机。

上述技术方案中进一步改进的方案如下:

1. 上述方案中,所述脏页记录是在特权指令模式下实现的。

由于上述技术方案的运用,本发明与现有技术相比具有下列优点:

1)本发明基于定制TLB代换的虚拟机迁移时脏页记录方法,不需要维护额外的影子页表,节约了宝贵的内存资源;

2)本发明基于定制TLB代换的虚拟机迁移时脏页记录方法,在Hmcode(特权指令)模式下实现脏页记录过程。相比传统的脏页记录方法,无需频繁退出虚拟机,节约大量的CPU资源,大大降低了对于CPU性能的要求。

3)本发明基于定制TLB代换的虚拟机迁移时脏页记录方法,在虚拟机模式下直接完成脏页记录过程,无需退出虚拟机,因此减少了由于虚拟机退出和进入带来的TLB清空与重填,极大程度提高了TLB命中率,进而提高CPU执行效率。

附图说明

附图1为本发明流程示意图;

附图2为本发明另一流程图。

具体实施方式

如图1和2所示,一种基于定制TLB代换的虚拟机迁移时脏页记录方法,包括以下步骤:

S1:在虚拟机迁移过程开始前,将控制状态寄存器中的迁移标志设置为开启;

S2:在虚拟机管理层申请“脏页缓冲区”;

S3:虚拟机TLB Miss过程中,判断造成缺页的读写标志,如果是读标志,则设置此时虚拟地址对应的TLB设为只读;如果是写标志,计算虚拟地址对应的宿主机页面号,并记录脏页;

S4:虚拟机数据流异常处理过程中,重填虚拟地址对应的TLB,判断此时TLB是否真正具有只读标志,如果没有则需要记录脏页;否则,进入正常的数据流异常处理流程中;

S5:退出到宿主机,根据虚拟机管理层记录的脏页位,将相应脏页迁移到目的虚拟机。

所述脏页记录是在特权指令模式下实现的。其中,图1和图2中,“Y”代表的“是”,“N”代表的是“否”,“VA”代表的是“虚拟地址”。

实施例进一步解释如下:

实施例1:在虚拟机动态迁移过程中,假设客户机1中页面A由于某条写指令导致TLBMiss,此时访存指令的虚拟地址为va(virtual address),通过定制TLB代换直接得到对应的宿主机的pa(physical address,PA)。在特权指令模式下,通过计算对应的页面为pfn =pa >> PAGE_SHIFT(其中PAGE_SHIFT为页面位数),设置脏页缓冲区的第pfn位为脏位。在动态迁移迭代过程中,Hypervisor收集这些脏页,并将脏页迁移到目标机器,实现动态迁移。

实施例2:在虚拟机动态迁移过程中,假设客户机1中页面B由于某条读指令导致TLB Miss,此时Hmcode装填读指令的虚拟地址va到TLB中,并且设置了只读属性, 通过定制TLB代换直接得到对应的宿主机的pa。之后,客户机1发生对页面B的写操作,由于此时此页面设置了只读属性,因此会进入数据流异常处理流程。在数据流异常处理流程中,Hmcode重填VA对应的TLB,并且判断没有只读属性,因此确定此数据流异常是由于TLB Miss添加只读属性造成的。在特权指令模式下,通过计算对应的页面为pfn = pa >> PAGE_SHIFT,设置脏页缓冲区的第pfn位为脏位。在动态迁移迭代过程中,Hypervisor收集这些脏页,并将脏页迁移到目标机器,实现动态迁移。

1)设置脏页位:假设需要设置脏页为第y个页,而脏页缓冲区首地址为dirty_addr,则需要设置缓冲区第y位为1,即设置dirty_addr +(y/8)地址的(y%8)位为1。

2)收集脏页:Hypervisor通过扫描“脏页缓冲区”确定需要迁移的脏页,并将这些页对应的位置0。

为了便于更好的理解本发明,下面将对本文中使用的术语进行简要的解释:虚拟机动态迁移:指在虚拟机不停机状态下,在不同物理机器之前移动正在运行的虚拟机的技术。

TLB(转换检测缓冲区):是一个内存管理单元,用于改进虚拟地址到物理地址转换速度的缓存,能够有效减少寻找物理地址所消耗时间。

TLB Miss(TLB失效):通过TLB快速映射表没有查询到访存虚地址对应的表项。

TLB代换:通过一定规则,将访存的虚拟地址计算出实际对应的物理页面的页面号,并将虚页号作为索引,物理页号、访问权限作为内容保存到快速映射表,以方便后面的访存指令快速得到实际物理页面。

数据流写异常:操作系统对一个标记只读属性的页面进行写操作引发的异常,一般是由于进程的写时复制机制引起的。

Hypervisor:虚拟机管理层,又称虚拟机监视器(virtual machine monitor),用来建立与执行虚拟机器的软件、固件或硬件。

特权指令:主要用于系统资源的分配和管理,包括改变系统工作方式,检测用户的访问权限,修改虚拟存储器管理的段表、页表,完成任务的创建和切换等。常见的特权指令有以下几种:(1)有关对I/O设备使用的指令如启动I/O设备指令、测试I/O设备工作状态和控制I/O设备动作的指令等;(2)有关访问程序状态的指令如对程序状态字(PSW)的指令等;(3)存取特殊寄存器指令如存取中断寄存器、时钟寄存器等指令。

上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。

6页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:系统库访问方法、装置以及电子设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类