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

技术编号:27804812 阅读:14 留言:0更新日期:2021-03-30 09:12
本发明专利技术公开一种基于定制TLB代换的虚拟机迁移时脏页记录方法,包括以下步骤:将虚拟机的迁移标志设置为开启,在虚拟机管理层申请“脏页缓冲区”;判断造成缺页的读写标志,如果是读标志,则需要设置TLB的只读标志位;如果是写标志,计算虚拟地址对应的宿主机页面号,并记录脏页;在数据流异常处理流程中,重填TLB,判断此时TLB是否真正具有只读标志,如果没有则需要记录脏页;否则,进入正常的数据流异常处理流程中。本发明专利技术通过虚拟地址到宿主机页面的映射关系,在特权指令模式下实现脏页记录过程,无需维护额外的影子页表,节约大量的内存资源;无需频繁虚拟机退出操作,节约大量的CPU资源,并且大幅度提高了TLB的命中率,进而提高CPU执行效率。CPU执行效率。CPU执行效率。

【技术实现步骤摘要】
基于定制TLB代换的虚拟机迁移时脏页记录方法


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


技术介绍

[0002]随着云计算和数据中心的快速发展,虚拟机动态迁移成为虚拟化技术应用的重要方面。虚拟机动态迁移需要在虚拟机不停机状态下,通过多轮迭代拷贝所需迁移的脏页,最终将虚拟机的所有页面迁移到目标宿主机。因此,快速稳定的记录脏页成了虚拟机动态迁移的关键技术。
[0003]目前,从软件层面支持虚拟机动态迁移时脏页记录的技术是影子页表。影子页表(Shadow page tables)支持从客户机虚拟地址到宿主机物理地址的转换。为了实现这一功能,对于客户机的每一个进程都存在一组影子页表与其对应,这将占据大量的内存资源。其次,影子页表必须与客户机页表保持同步,而每次对客户机页表的修改,也必须经过影子页表,在TLB Miss过程中需要频繁的虚拟机退出,这对CPU的性能有非常高的要求。

技术实现思路

[0004]本专利技术的目的是提供一种基于定制TLB代换的虚拟机迁移时脏页记录方法,该技术通过虚拟地址到宿主机页面的映射关系,直接在TLB Miss和数据流异常的处理过程中,设置虚拟机的脏页位,而无需进行虚拟机退出动作;因此节省了维护影子页表的大量内存,同时节约了由于虚拟机退出带来的CPU资源消耗,进一步提升了虚拟机的性能。
[0005]为达到上述目的,本专利技术采用的技术方案是:一种基于定制TLB代换的虚拟机迁移时脏页记录方法,包括以下步骤:S1:在虚拟机迁移过程开始前,将控制状态寄存器中的迁移标志设置为开启;S2:在虚拟机管理层申请“脏页缓冲区”;S3:虚拟机TLB Miss过程中,判断造成缺页的读写标志,如果是读标志,则设置此时虚拟地址对应的TLB设为只读;如果是写标志,计算虚拟地址对应的宿主机页面号,并记录脏页;S4:虚拟机数据流异常处理过程中,重填虚拟地址对应的TLB,判断此时TLB是否真正具有只读标志,如果没有则需要记录脏页;否则,进入正常的数据流异常处理流程中;S5:退出到宿主机,根据虚拟机管理层记录的脏页位,将相应脏页迁移到目的虚拟机。
[0006]上述技术方案中进一步改进的方案如下:1. 上述方案中,所述脏页记录是在特权指令模式下实现的。
[0007]由于上述技术方案的运用,本专利技术与现有技术相比具有下列优点:1)本专利技术基于定制TLB代换的虚拟机迁移时脏页记录方法,不需要维护额外的影子页表,节约了宝贵的内存资源;2)本专利技术基于定制TLB代换的虚拟机迁移时脏页记录方法,在Hmcode(特权指令)模式
下实现脏页记录过程。相比传统的脏页记录方法,无需频繁退出虚拟机,节约大量的CPU资源,大大降低了对于CPU性能的要求。
[0008]3)本专利技术基于定制TLB代换的虚拟机迁移时脏页记录方法,在虚拟机模式下直接完成脏页记录过程,无需退出虚拟机,因此减少了由于虚拟机退出和进入带来的TLB清空与重填,极大程度提高了TLB命中率,进而提高CPU执行效率。
附图说明
[0009]附图1为本专利技术流程示意图;附图2为本专利技术另一流程图。
具体实施方式
[0010]如图1和2所示,一种基于定制TLB代换的虚拟机迁移时脏页记录方法,包括以下步骤:S1:在虚拟机迁移过程开始前,将控制状态寄存器中的迁移标志设置为开启;S2:在虚拟机管理层申请“脏页缓冲区”;S3:虚拟机TLB Miss过程中,判断造成缺页的读写标志,如果是读标志,则设置此时虚拟地址对应的TLB设为只读;如果是写标志,计算虚拟地址对应的宿主机页面号,并记录脏页;S4:虚拟机数据流异常处理过程中,重填虚拟地址对应的TLB,判断此时TLB是否真正具有只读标志,如果没有则需要记录脏页;否则,进入正常的数据流异常处理流程中;S5:退出到宿主机,根据虚拟机管理层记录的脏页位,将相应脏页迁移到目的虚拟机。
[0011]所述脏页记录是在特权指令模式下实现的。其中,图1和图2中,“Y”代表的“是”,“N”代表的是“否”,“VA”代表的是“虚拟地址”。
[0012]实施例进一步解释如下:实施例1:在虚拟机动态迁移过程中,假设客户机1中页面A由于某条写指令导致TLB Miss,此时访存指令的虚拟地址为va(virtual address),通过定制TLB代换直接得到对应的宿主机的pa(physical address,PA)。在特权指令模式下,通过计算对应的页面为pfn = pa >> PAGE_SHIFT(其中PAGE_SHIFT为页面位数),设置脏页缓冲区的第pfn位为脏位。在动态迁移迭代过程中,Hypervisor收集这些脏页,并将脏页迁移到目标机器,实现动态迁移。
[0013]实施例2:在虚拟机动态迁移过程中,假设客户机1中页面B由于某条读指令导致TLB Miss,此时Hmcode装填读指令的虚拟地址va到TLB中,并且设置了只读属性, 通过定制TLB代换直接得到对应的宿主机的pa。之后,客户机1发生对页面B的写操作,由于此时此页面设置了只读属性,因此会进入数据流异常处理流程。在数据流异常处理流程中,Hmcode重填VA对应的TLB,并且判断没有只读属性,因此确定此数据流异常是由于TLB Miss添加只读属性造成的。在特权指令模式下,通过计算对应的页面为pfn = pa >> PAGE_SHIFT,设置脏页缓冲区的第pfn位为脏位。在动态迁移迭代过程中,Hypervisor收集这些脏页,并将脏页迁移到目标机器,实现动态迁移。
[0014]1)设置脏页位:假设需要设置脏页为第y个页,而脏页缓冲区首地址为dirty_addr,则需要设置缓冲区第y位为1,即设置dirty_addr +(y/8)地址的(y%8)位为1。
[0015]2)收集脏页:Hypervisor通过扫描“脏页缓冲区”确定需要迁移的脏页,并将这些页对应的位置0。
[0016]为了便于更好的理解本专利技术,下面将对本文中使用的术语进行简要的解释:虚拟机动态迁移:指在虚拟机不停机状态下,在不同物理机器之前移动正在运行的虚拟机的技术。
[0017]TLB(转换检测缓冲区):是一个内存管理单元,用于改进虚拟地址到物理地址转换速度的缓存,能够有效减少寻找物理地址所消耗时间。
[0018]TLB Miss(TLB失效):通过TLB快速映射表没有查询到访存虚地址对应的表项。
[0019]TLB代换:通过一定规则,将访存的虚拟地址计算出实际对应的物理页面的页面号,并将虚页号作为索引,物理页号、访问权限作为内容保存到快速映射表,以方便后面的访存指令快速得到实际物理页面。
[0020]数据流写异常:操作系统对一个标记只读属性的页面进行写操作引发的异常,一般是由于进程的写时复制机制引起的。
[0021]Hypervisor:虚拟机管理层,又称虚拟机监视器(virtual mac本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于定制TLB代换的虚拟机迁移时脏页记录方法,其特征在于:包括以下步骤:S1:在虚拟机迁移过程开始前,将控制状态寄存器中的迁移标志设置为开启;S2:在虚拟机管理层申请“脏页缓冲区”;S3:虚拟机TLB Miss过程中,判断造成缺页的读写标志,如果是读标志,则设置此时虚拟地址对应的TLB设为只读;如果是写标志,计算虚拟地址对应的宿主机页面号,并记录脏页;S4:虚拟机...

【专利技术属性】
技术研发人员:刘松王星焱林海南黄高阳郑岩邹通
申请(专利权)人:无锡江南计算技术研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1