CN117539797B - 一种脏页记录方法及相关设备 - Google Patents
一种脏页记录方法及相关设备 Download PDFInfo
- Publication number
- CN117539797B CN117539797B CN202410034436.6A CN202410034436A CN117539797B CN 117539797 B CN117539797 B CN 117539797B CN 202410034436 A CN202410034436 A CN 202410034436A CN 117539797 B CN117539797 B CN 117539797B
- Authority
- CN
- China
- Prior art keywords
- dirty page
- bitmap
- target
- value
- management unit
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000012545 processing Methods 0.000 claims abstract description 31
- 230000000977 initiatory effect Effects 0.000 claims description 9
- 238000013507 mapping Methods 0.000 claims description 6
- 238000013508 migration Methods 0.000 abstract description 27
- 230000005012 migration Effects 0.000 abstract description 27
- 238000007726 management method Methods 0.000 description 113
- 230000008569 process Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请实施例提供了一种脏页记录方法及相关设备,用于尽可能地及时处理入口缓存管理单元的脏页位图块,以提升热迁移效率。本申请实施例方法包括:当脏页缓存管理单元的第一存储空间中所存储的脏页位图块未达到存储上限时,从入口缓存管理单元获取脏页信息,以根据脏页信息,得到与脏页信息对应的目标脏页位图块的当前位图值及偏移值;判断脏页缓存管理单元中是否记录有与目标脏页位图块具有相同偏移值的已记录脏页位图块;若脏页缓存管理单元中记录有已记录脏页位图块,将已记录脏页位图块的已记录位图值与当前位图值进行逻辑运算,得到目标位图值,以将目标位图值覆盖已记录位图值,并将计算后的位图值覆盖脏页缓存管理单元中已记录的位图值。
Description
技术领域
本申请实施例涉及虚拟机脏页管理技术领域,尤其涉及一种脏页记录方法及相关设备。
背景技术
随着云计算技术的逐渐成熟,越来越多的企业将应用部署在云环境中。为了保证业务持久化的运行,当物理主机出现停机维护的时候,为了保证业务不中断运行,在云操作系统软件Fusion Compute中就提供这样一个功能—虚拟机热迁移,能够支持在不影响用户使用或中断服务的情况下,在服务器之间实时迁移虚拟机,从而无需为进行计划内服务器维护而安排应用中断。
虚拟机热迁移是指在不中断业务的情况下,将同一个集群中虚拟机从一台物理服务器移动至另一台物理服务器。虚拟机管理器提供内存数据快速复制和共享存储技术,确保虚拟机迁移前后数据不变。虚拟机迁移过程中,磁盘不进行迁移,即磁盘的位置不变,仍处于原数据存储中。可以手动迁移虚拟机,也可以设置一个调度策略来自动执行迁移。在Fusion Compute里支持3种迁移的方式:虚拟机热迁移(更改主机)、存储热迁移(更改数据存储)、整机热迁移(更改主机和数据存储)。
目前,当有新的脏页位图标记需要被更新时,现有技术方案需要发起请求,等待返回成功或失败,如果失败,则需要修改请求信息,再次发起请求。而这样的操作直接影响了脏页位图更新的速度。并且,每次请求都需要等待回复,后来的脏页请求只能等待,也使得批量的脏页请求更新速度更慢。对于某些带流的业务,较慢的脏页更新速度将使得脏页请求堆积,进一步反压前级业务,导致业务流量降低,影响实际热迁移的体验。
发明内容
本申请实施例提供了一种脏页记录方法及相关设备,用于尽可能地及时处理入口缓存管理单元的脏页位图块,以提升热迁移效率。
本申请实施例第一方面提供了一种脏页记录方法,应用于脏页处理单元,包括:
当脏页缓存管理单元的第一存储空间中所存储的脏页位图块未达到存储上限时,从入口缓存管理单元获取脏页信息,以根据所述脏页信息,得到与所述脏页信息对应的目标脏页位图块的当前位图值及偏移值;其中,所述入口缓存管理单元的第二存储空间用于存储所述脏页信息,所述目标脏页位图块为第三存储空间中任一脏页位图块,所述当前位图值用于描述所述目标脏页位图块于目标脏页位图的映射值,所述偏移值用于描述所述目标脏页位图块于所述目标脏页位图的位置;
判断所述脏页缓存管理单元中是否记录与所述目标脏页位图块对应的已记录脏页位图块;
若所述脏页缓存管理单元中记录有所述已记录脏页位图块,将所述已记录脏页位图块的已记录位图值与所述当前位图值进行逻辑运算,得到目标位图值,并将计算后的目标位图值覆盖所述脏页缓存管理单元中的所述已记录位图值。
可选地,所述将计算后的目标位图值覆盖所述脏页缓存管理单元中的所述已记录位图值之后,所述方法还包括:
获取内存访问DMA单元的所述第三存储空间中与所述目标脏页位图块对应的匹配位图值;
将所述目标位图值与所述匹配位图值进行逻辑运算,得到标记位图值;
将所述标记位图值写入所述第三存储空间中与所述目标脏页位图的对应脏页位图块,以完成所述目标脏页位图的标记。
可选地,所述判断所述脏页缓存管理单元中是否记录与所述目标脏页位图块对应的已记录脏页位图块之后,所述方法还包括:
若所述脏页缓存管理单元未记录有与所述目标脏页位图中具有相同所述偏移值的所述已记录脏页位图块,向所述DMA单元发起内存读请求,以执行所述获取内存访问DMA单元的第三存储空间中与所述目标脏页位图块对应的匹配位图值的步骤。
可选地,所述得到目标位图值之后,所述方法还包括:
将所述目标脏页位图存储于所述脏页缓存管理单元中的头指针位置,并增加头指针的头指针位宽值;其中,所述头指针位宽值用于描述所述头指针对应的数值;
向所述DMA单元发送内存写请求,并当所述内存写请求响应时,增加所述脏页缓存管理单元中尾指针位置对应的尾指针位宽值;其中,所述尾指针位宽值用于描述尾指针对应的数值。
可选地,所述将计算后的目标位图值覆盖所述脏页缓存管理单元中的所述已记录位图值之前,所述方法还包括:
判断所述脏页缓存管理单元的存储有效区间是否记录与所述目标脏页位图中具有相同所述偏移值的脏页位图块;
当所述目标脏页位图中具有相同所述偏移值的所述已记录脏页位图块时,确定所述脏页信息的所述存储有效区间有效,并执行所述将计算后的目标位图值覆盖所述脏页缓存管理单元中的所述已记录位图值的步骤;其中,所述存储有效区间用于描述所述头指针位置与所述尾指针位置中所述脏页信息所满足的存储位置区间;
当所述目标脏页位图中未具有相同所述偏移值的所述已记录脏页位图块时,并向所述DMA单元发起内存读请求,以执行所述获取内存访问DMA单元的第三存储空间中与所述目标脏页位图块对应的匹配位图值的步骤。
可选地,所述方法还包括:
当所述第一存储空间中所存储的脏页位图块达到存储上限时,中止从所述入口缓存管理单元获取所述脏页信息。
可选地,所述根据所述脏页信息,得到与所述脏页信息对应的目标脏页位图块的当前位图值及偏移值,包括:
获取所述目标脏页位图块于所述入口缓存管理的脏页写地址;
计算与所述脏页写地址对应的目标脏页位图块与目标脏页位图的偏移,确定所述偏移值;其中,所述目标脏页位图块及所述目标脏页位图均位于虚拟机中与所述脏页写地址对应的缓存地址上;
确定所述脏页写地址中,所述目标脏页位图块对应于所述目标脏页位图的位图值,得到所述当前位图值。
可选地,所述方法还包括:
根据所述偏移值确定所述脏页信息中所述目标脏页位图与所述虚拟机的关联关系,并根据所述关联关系确定所述目标脏页位图所位于的目标虚拟机的索引值;其中,所述目标虚拟机为与所述目标脏页位图存在关联的虚拟机;
将所述脏页信息发送至所述脏页缓存管理单元,以使得所述脏页缓存管理单元存储所述脏页信息,并根据所述脏页信息生成缓存队列,以执行所述将计算后的目标位图值覆盖所述脏页缓存管理单元中的所述已记录位图值的步骤。
本申请实施例第二方面提供了一种脏页记录装置,包括:
中央处理器,存储器,输入输出接口,有线或无线网络接口以及电源;
所述中央处理器配置为与所述存储器通信,并执行所述存储器中的指令操作以执行第一方面所述的脏页记录方法。
本申请实施例第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质包括指令,当所述指令在计算机上运行时,使得计算机执行第一方面所述的脏页记录方法。
从以上技术方案可以看出,本申请实施例具有以下优点:通过本申请实施例公开的一种脏页记录方法,当脏页缓存管理单元的第一存储空间中所存储的脏页位图块未达到存储上限时,先从入口缓存管理单元获取脏页信息,以根据脏页信息,得到与脏页信息对应的目标脏页位图块的当前位图值及偏移值;其中,入口缓存管理单元的第二存储空间用于存储脏页信息,目标脏页位图块为第三存储空间中任一脏页位图块,当前位图值用于描述目标脏页位图块于目标脏页位图的映射值,偏移值用于描述目标脏页位图块于目标脏页位图的位置;再判断脏页缓存管理单元中是否记录与目标脏页位图块对应的已记录脏页位图块;最后,当脏页缓存管理单元中记录有已记录脏页位图块时,将已记录脏页位图块的已记录位图值与当前位图值进行逻辑运算,得到目标位图值,并将计算后的目标位图值覆盖脏页缓存管理单元中的已记录位图值。从而,可以尽可能地及时处理入口缓存管理单元的脏页位图块,然后,再确定脏页缓存管理单元未存储脏页位图块时进行存储,最大程度地减小对前级业务的影响。再有,在迁移位图块时,不需要使用多个模块,操作灵活。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本申请实施例公开的一种脏页记录系统的架构示意图;
图2为本申请实施例公开的一种脏页记录方法的流程示意图;
图3为本申请实施例公开的另一种脏页记录方法的流程示意图;
图4为本申请实施例公开的另一种脏页记录方法的流程示意图;
图5为本申请实施例公开的一种脏页记录装置的结构示意图。
具体实施方式
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在本申请中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
基于本申请背景技术中所描述的,在基于共享存储系统时,基于内核的虚拟机(KVM,kernel-based virtual machine)动态迁移的具体过程为:1、迁移开始时,客户机依然在宿主机上运行,与此同时,客户机的内存页被传输到目的主机上。2、模拟处理器(QEMU,quick emulator)/KVM会监控并记录下迁移过程中所有已被传输的内页的任何修改,并在所有内存页都传输完成后即开始传输在前面过程中内存页的更改内容。3、QEMU/KVM会估计迁移过程中的传输速度,当剩余的内存数据量能够在一个可以设定的时间周期内传输完成时,QEMU/KVM会关闭源宿主机上的客户机,再将剩余的数据量传输到目的主机上,最后传输过来的内存内容在目的宿主机上恢复客户机的运行状态。4、至此,KVM的动态迁移操作就完成了。迁移后的客户机尽可能与迁移前一致,除非目的主机上缺少一些配置,比如网桥等。注意,当客户机中内存使用率非常大而且修改频繁时,内存中数据不断被修改的速度大于KVM能够传输的内存速度时,动态迁移的过程是完成不了的,这时候只能静态迁移。
由上述描述可以看出,现有技术方案中,当有新的脏页位图标记需要被更新时,现有技术方案需要发起请求,等待返回成功或失败,如果失败,则需要修改请求信息,再次发起请求。而这样的操作直接影响了脏页位图更新的速度,假设对于同一个脏页位图块中,依次有0x0000_0001、0x0000_0010、0x0000_0100的位图更新请求,无疑每次更新的第一次请求都将是失败的,也就是说需要两次请求才能成功更新。并且,每次请求都需要等待回复,后来的脏页请求只能等待,也使得批量的脏页请求更新速度更慢。对于某些带流的业务,较慢的脏页更新速度将使得脏页请求堆积,进一步反压前级业务,导致业务流量降低,影响实际热迁移的体验。再有,现有技术方案设计了多个脏页标记处理通道,用来处理多个队列的脏页标记请求。显然带来了更多的硬件资源消耗,也增加了设计的复杂度。
由此,本申请实施例提供了一种脏页记录方法及相关设备,用于尽可能地及时处理入口缓存管理单元的脏页位图块,以提升热迁移效率。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参阅图1,图1为本申请实施例公开的一种脏页记录系统的架构示意图。
由图1可以看出,本申请技术方案所公开的脏页记录系统包括入口缓存管理单元101、脏页处理单元102、直接内存访问(DMA,direct memory access)单元103和脏页缓存管理单元104。其中,脏页处理单元102分别与入口缓存管理单元101、DMA单元103及脏页缓存管理单元104通讯连接,对应的,DMA单元103与脏页缓存管理单元104也通讯连接。为方便理解和描述,后续不再对脏页记录系统中各个单元的具体连接方式进行赘述。
在其中一个可实现的技术方案中,通过设计脏页缓存管理单元104,保存了从发起DMA读请求到DMA写期间的可选数量(取决于脏页缓存管理单元104的存储空间)的脏页信息,并且在此期间,所有与脏页缓存管理单元104中位于相同脏页位图块的脏页信息,都将合成并更新在脏页缓存管理单元104中。否则,才作为新的脏页更新请求写入脏页缓存管理单元104。
进一步的,入口缓存管理单元101,可记录来自内部业务的DMA写操作(以下简称“脏页信息”)。具体的,前级业务模块将DMA写操作的信息写到入口缓存管理单元101。当入口缓存单元的缓存将满时,入口缓存管理单元101可以反压前级业务模块,由此影响业务模块的流量。脏页处理单元102,可计算脏页信息并发起DMA读请求,并由此对脏页信息进行处理。脏页缓存管理单元104,可记录从发起DMA读请求到DMA写期间的可选数量(取决于脏页缓存的空间)的脏页信息,或存储相关的脏页信息。DMA单元103,可响应相关的DMA写请求,并由此于脏页缓存管理单元104中读取脏页信息,以对系统内存中的脏页信息或脏页位图块进行更新。
进一步的,在另外一种可实现的技术方案中,入口缓存管理单元101是为了辅助后级单元,比如实现DMA的设备映射、脏页信息打包等功能,因此并不是必须单元,根据实际使用场景而定。
为方便解决上述现有技术方案的技术缺陷及对上述图1进行详细理解,请参阅图2,图2为本申请实施例公开的一种脏页记录方法的流程示意图。包括步骤201-步骤203。
201、当脏页缓存管理单元的第一存储空间中所存储的脏页位图块未达到存储上限时,从入口缓存管理单元获取脏页信息,以根据脏页信息,得到与脏页信息对应的目标脏页位图块的当前位图值及偏移值。
基于图1所描述的,由于前级业务模块会将DMA写操作的信息写到入口缓存管理单元,由此,当脏页缓存管理单元的第一存储空间所存储的脏页位图块未满足预设存储条件(即存储上限)时,则计算目标脏页位图块的目标位图值。其中,入口缓存管理单元的第二存储空间用于存储脏页信息,目标脏页位图块为第三存储空间中任一脏页位图块,当前位图值用于描述目标脏页位图块于目标脏页位图的映射值,偏移值用于描述目标脏页位图块于目标脏页位图的位置,其中,不难理解的是,第三存储空间为计算机内存。
在其中一个具体的实施例中,当脏页缓存管理单元的存储空间中,还能够存储对应的脏页位图块,脏页处理单元获取脏页缓存管理单元中的脏页信息,从而计算其脏页位图块的位图值。不难理解的是,本步骤中所计算的脏页位图块即为上述中所描述的目标脏页位图块,对应的位图值即为上述中所描述的目标位图值。
进一步的,脏页处理单元还可以判断脏页缓存管理单元中缓存是否已满,若缓存未满,也可以通过获取脏页缓存管理单元中脏页信息,从而计算目标位图值。不难理解的是,本实施例中所描述的预设存储条件,可以理解为存储空间是否填满。为方便理解,后续不再对此进行赘述。
需要说明的是,为方便对脏页位图块进行理解,在本实施例中,QEMU在系统内存中可准备一块连续的内存来存放位图(bitmap),每个地址包括bitmap中的8bit,每个bit表示1个4K页。因此该bitmap的每个bit都可以与进行热迁移的虚拟机的内存以4KB为单位一一对应。由于总线和接口标准(PCIE,peripheral component interface express)DMA的最小单位为1字节,其中包括bitmap中的8bit,因此当每次刷新1字节的脏页信息时,同时会刷新8个bit(这也是设计脏页缓存的目的),此时将这些bit作为一个脏页位图块。同理,每次刷新2字节的脏页信息时,这16bit的bitmap就作为一个脏页位图块。为方便描述,后续不再对脏页位图块进行详细描述。对应的,脏页位图块为整个脏页位图中某个位置的位图块。
202、判断脏页缓存管理单元中是否记录与目标脏页位图块对应的已记录脏页位图块。
在确定对应的目标脏页位图块后,便需要判断脏页缓存管理单元中,是否记录有与目标脏页位图块对应的已记录脏页位图块。
在其中一个具体的实施例中,脏页处理单元可以判断脏页缓存管理单元中是否已经记录了相同的脏页位图块。其中,若脏页缓存管理单元中记录了相同的脏页位图块,则执行步骤203。
具体的,对于脏页位图块的描述可参阅步骤201中对于脏页位图块的描述,具体此处不做赘述。
203、当脏页缓存管理单元中记录有已记录脏页位图块时,将已记录脏页位图块的已记录位图值与当前位图值进行逻辑运算,得到目标位图值,并将计算后的目标位图值覆盖脏页缓存管理单元中的已记录位图值。
由此,当脏页缓存管理单元中记录有已记录脏页位图块时,则将已记录脏页位图块的已记录位图值与当前位图值进行逻辑运算,得到目标位图值,然后,将计算后的目标位图值覆盖脏页缓存管理单元中的已记录位图值。由此,便可以将目标位图值存储于脏页缓存管理单元中。
在其中一个具体的实施例中,将获得的当前位图值与已记录的位图值进行逻辑“按位或”运算,从而覆盖原来已记录的位图值,由此,在脏页缓存管理单元中,便可保存对应该位图块的目标位图值,以便于后续查询及提取。
通过本实施例公开的一种脏页记录方法,当脏页缓存管理单元的第一存储空间中所存储的脏页位图块未达到存储上限时,先从入口缓存管理单元获取脏页信息,以根据脏页信息,得到与脏页信息对应的目标脏页位图块的当前位图值及偏移值;其中,入口缓存管理单元的第二存储空间用于存储脏页信息,目标脏页位图块为第三存储空间中任一脏页位图块,当前位图值用于描述目标脏页位图块于目标脏页位图的映射值,偏移值用于描述目标脏页位图块于目标脏页位图的位置;再判断脏页缓存管理单元中是否记录与目标脏页位图块对应的已记录脏页位图块;最后,当脏页缓存管理单元中记录有已记录脏页位图块时,将已记录脏页位图块的已记录位图值与当前位图值进行逻辑运算,得到目标位图值,并将计算后的目标位图值覆盖脏页缓存管理单元中的已记录位图值。从而,可以尽可能地及时处理入口缓存管理单元的脏页位图块,然后,再确定脏页缓存管理单元未存储脏页位图块时进行存储,最大程度地减小对前级业务的影响。再有,在迁移位图块时,不需要使用多个模块,操作灵活。
为方便对上述图2中所描述的脏页记录方法进行详细描述,请参阅图3,图3为本申请实施例公开的另一种脏页记录方法的流程示意图。包括步骤301-步骤310。
301、当脏页缓存管理单元的第一存储空间中所存储的脏页位图块未达到存储上限时,从入口缓存管理单元获取脏页信息。
本实施例中步骤301与前述图2中步骤201类似,具体此处不做赘述。但需要说明的是,在本实施例中,由于入口缓存管理单元会记录来自内部业务的DMA写操作的信息(即脏页信息),因此,脏页处理单元可以于入口缓存管理的第二存储空间中提取对应的脏页信息。
302、当第一存储空间中所存储的脏页位图块达到存储上限时,中止从入口缓存管理单元获取脏页信息。
对应于步骤301,当第一存储空间中所存储的脏页位图块达到存储上限时,脏页处理单元则中止从入口缓存管理单元处获取脏页信息。
在其中一个具体的实施例中,在第一存储空间中所存储的脏页位图块存储已满时,则可以中止从入口缓存管理单元获取对应的脏页位图块。对应的,脏页处理单元还可以停止从入口缓存单元获取该脏页信息,具体此处不对脏页信息进行赘述。
进一步的,脏页处理单元可以判断脏页缓存管理单元中存储空间的缓存是否已满,若满足,则脏页处理单元停止从入口缓存单元获取脏页信息。
303、获取目标脏页位图块于入口缓存管理的脏页写地址,以计算与脏页写地址对应的目标脏页位图块与目标脏页位图的偏移,确定偏移值,并确定脏页写地址中,目标脏页位图块对应于目标脏页位图的位图值,得到当前位图值。
基于步骤301,便可以获取目标脏页位图块于入口缓存管理的脏页写地址,从而计算与脏页写地址对应的目标脏页位图块与目标脏页位图的偏移,并以此确定偏移值。然后,再确定脏页写地址中,目标脏页位图块对应于目标脏页位图的位图值,得到当前位图值。不难理解的是,在其中一种可实现的技术方案中,目标脏页位图块及目标脏页位图均位于虚拟机中与脏页写地址对应的缓存地址上。
在其中一个具体的实施例中,每个脏页位图块都有唯一的偏移,用于表示该脏页位图块位于整个脏页位图的某个位置。由此,脏页处理单元可以基于与该脏页位图块对应的脏页信息计算出对应的偏移值。
304、根据偏移值确定脏页信息中目标脏页位图与虚拟机的关联关系,并根据关联关系确定目标脏页位图所位于的目标虚拟机的索引值。
基于步骤303,可以根据偏移值确定脏页信息中目标脏页位图与虚拟机的关联关系,从而根据关联关系确定目标脏页位图所位于的目标虚拟机的索引值。不难理解的是,目标虚拟机为与目标脏页位图存在关联的虚拟机。
在其中一个具体的实施例中,由于每个虚拟机的热迁移都将对应一个脏页位图,因此脏页缓存管理单元中的脏页信息还包括指示脏页位图的唯一索引,例如当前有N个虚拟机正在进行迁移,那就有N个索引指向各自的脏页位图。不难理解的是,其中的指引关系便可以理解为上述中所描述的关联关系。
进一步的是,每个脏页缓存管理单元包括脏页位图块的偏移值、脏页位图值和索引值。例如,某个业务写DMA地址为0x0001_0000,则对应的4K页地址(脏页地址)为0x0001_0000>>12=0x0000_0010。以一个脏页位图块为8bit为例,脏页位图块的偏移就是0x0000_0010>>3=0x0000_0002,脏页位图值即为:0x01。对于索引,由于每个设备都有自己的脏页位图(这里考虑每个虚拟机只有一个设备),因此每个设备都对应了一个索引值,在刷新脏页位图时,即可通过索引值得知写到哪个设备的脏页位图中。
不难理解的是,基于上述中偏移值、目标位图值和索引值,可便于后续调用对应的脏页位图块。其中对于头尾指针的理解描述,将在后续所示实施例进行详细说明。
为方便理解和描述,请参阅表1,表1为一种qemu bitmap中脏页位图块的地址描述表。
其中,n=虚拟机内存大小/4KB/8,不难理解的是,任一方框表格内,都对应虚拟机内存的一个4K页。同时,脏页位图块为bitmap的一部分,其大小按照字节对齐,例如base_addr + 0x0可以是一个脏页位图块,base_addr + 0x0~base_addr + 0x2也是一个脏页位图块。
305、将脏页信息发送至脏页缓存管理单元,以使得脏页缓存管理单元存储脏页信息,并根据脏页信息生成缓存队列。
由此,基于上述中的由当前位图值、偏移值及索引值组成的脏页信息,将脏页信息发送至脏页缓存管理单元,从而使得脏页缓存管理单元根据脏页信息生成缓存队列,并以此将脏页信息存储于脏页缓存管理单元。
在其中一个具体的实施例中,脏页缓存管理单元中存在第一存储空间,可以存储对应的目标脏页位图块。由此,脏页处理单元将该脏页信息存储于脏页缓存管理单元中。
进一步的是,基于图1所描述的,脏页缓存管理单元记录了从发起DMA读请求到DMA写期间的可选数量(取决于脏页缓存的空间)的脏页信息,脏页缓存管理单元包括一个缓存队列、指示缓存更新和释放位置的头尾指针、脏页查询的有效区间。为方便理解和描述,后续将对此进行详细描述,具体此处不做赘述。
306、判断脏页缓存管理单元的存储有效区间是否记录与目标脏页位图中具有相同偏移值的脏页位图块。执行步骤307或步骤310。
由此,基于上述步骤,便可以判断脏页缓存管理单元的存储有效区间内,是否记录有与目标脏页位图中具有相同偏移值的脏页位图块。不难理解的是,存储有效区间用于描述头指针位置与尾指针位置中脏页信息所满足的存储位置区间。
在其中一个具体的实施例中,脏页查询的有效区间,也就是real_hpntr~real_tpntr的区域,为了脏页查询更加简单,给缓存的每个脏页信息都设置了有效位,查询时如果该位无效,即使新获得的脏页信息命中了脏页缓存,也会当作未命中来处理,从而避免在real_hpntr~real_tpntr以外的区域中命中。
为方便对脏页缓存管理单元所包括一个缓存队列、指示缓存更新和释放位置的头尾指针、脏页查询的有效区间进行理解,请参阅表2。
其中,需要说明的是,偏移值即bitmap offset,位图值即bitmap value,索引值即info。对应的,在实际指向缓存空间的位置中,头指针位于bitmap offset的上一位置,尾指针位于info的下一位置。还有,缓存查询即通过脏页位图块的偏移查询缓存中有无待更新的脏页位图。缓存更新,即为在脏页位图需要更新时,将该位图信息写入缓存头指针位置(头指针+1)。缓存释放,即在更新一个脏页位图时,则更新缓存的尾指针(尾指针+1)。需要说明的是,从头指针到尾指针的区域,表示待更新的脏页位图。为方便理解和描述,后续在对此进行详细描述。
由此,通过判断脏页缓存管理单元中,是否已经记录了在脏页位图中偏移相同的脏页位图块,以完成后续不同的判定步骤。
307、当目标脏页位图中具有相同偏移值的已记录脏页位图块时,确定脏页信息的存储有效区间有效,并将已记录脏页位图块的已记录位图值与当前位图值进行逻辑运算,得到目标位图值。
基于步骤306,当目标脏页位图中具有相同偏移值的已记录脏页位图块时,便可以确定脏页信息的存储有效区间有效,从而将已记录脏页位图块的已记录位图值与当前位图值进行逻辑运算,得到目标位图值。
在其中一个具体的实施例中,如果脏页缓存管理单元已经记录了在脏页位图中偏移相同的脏页位图块,说明此时已发出获取该脏页位图块的位图值的DMA读请求,但DMA请求数据还未返回,所以不需要再次发起DMA读请求,而是将该脏页位图块与对应脏页缓存管理单元中已记录的脏页位图块进行逻辑运算,覆盖当前记录脏页位图块的位图值,从而得到目标位图值。
进一步的是,将获得的当前位图值与已记录的位图值进行逻辑“按位或”运算,从而得到目标位图值。
308、将目标脏页位图存储于脏页缓存管理单元中的头指针位置,增加头指针的头指针位宽值,并向DMA单元发送内存写请求,并当内存写请求响应时,增加脏页缓存管理单元中尾指针位置对应的尾指针位宽值。
基于步骤307,由于对应的存储有效位有效,则将目标脏页位图存储于脏页缓存管理单元中的头指针位置,增加头指针的头指针位宽值,并向DMA单元发送内存写请求,由此当内存写请求响应时,增加脏页缓存管理单元中尾指针位置对应的位宽值。不难理解的是,位宽值用于描述尾指针对应的数值。不难理解的是,头指针位宽值或尾指针位宽值分别对应头指针或尾指针对应的数值。
在其中一个具体的实施例中,基于步骤306所描述的表2,将目标脏页位图的脏页信息存储在脏页缓存管理单元的头指针位置,从而完成对应的缓存更新。不难理解的是,缓存更新还可以理解为,在有脏页位图需要更新时,将该脏页位图的脏页位图信息写入缓存头指针的位置。
由此,每次脏页缓存管理单元接收到脏页信息,都要按照上述描述的流程查询当前脏页缓存管理单元的缓存,并基于查询结果决定是否将新的脏页位图存入头指针的位置。当已经通过DMA发送了一个内存写请求,表示脏页位图已被发送,此时将尾指针加1。对应的,即增加尾指针位置对应的位宽值。
在其中一个可实现的技术方案中,不难理解的是,内存写请求用于DMA单元读取脏页缓存管理单元中存储的位图值。在其中一个具体的实施例中,脏页缓存管理单元可以记录脏页处理单元从发起DMA读请求到DMA写期间的可选数量(取决于脏页缓存的空间)的脏页信息。具体的,在脏页处理单元向DMA单元发起内存写请求之前,脏页处理单元还会确定发起读请求的时候,DMA读数据是否返回,若未返回,则继续等待。若返回对应的读数据,脏页处理单元便可以获取到内存中存储的对应目标脏页位图块的位图值。由此,脏页处理单元向DMA单元发起写请求,即上述中所描述的内存写请求,并等待DMA单元响应该写请求。
基于上述实施例,进一步的,DMA单元便可以读取脏页缓存管理单元中已记录的对应的脏页位图值,从而将该位图值与从内存中获得的位图值进行逻辑“按位或”运算,得到待更新的脏页位图值,从而DMA单元将位图值更新到内存中对应的脏页位图块中,以此完成对应的写请求。具体将在后续步骤进行详细描述。
进一步的,在另外一个具体的实现方式中,可知,假设脏页缓存大小为,则头尾指针的位宽为n+1,实际指向缓存空间的位置(hpntr/tpntr—头/尾指针,real_hpntr/tpntr—头/尾指针实际指向的缓存位置);real_hpntr=hpntr&(/>),real_tpntr=tpntr&(/>)。所以初始情况下,hpntr=0,tpntr=/>,剩余缓存空间=tpntr-hpntr=/>,下一个脏页信息写入的位置=real_hpntr=0,下一个释放的脏页信息位置=read_tpntr=0。需要说明的是,在本实施例中,所描述的“&”,即为上述中所描述的逻辑“按位与”的意思。
309、将计算后的目标位图值覆盖脏页缓存管理单元中的已记录的位图值。
本实施例中步骤309与前述图2中步骤203部分类似,具体此处不做赘述。但需要说明的是,在本实施例中,可以将计算后的目标位图值覆盖脏页缓存管理单元中的已记录的位图值,具体的实现方式可参阅步骤305,此处不再进行赘述。
310、当目标脏页位图中未具有相同偏移值的已记录脏页位图块时,并向DMA单元发起内存读请求,以获取内存访问DMA单元的第三存储空间中与目标脏页位图块对应的匹配位图值。
基于步骤306,当目标脏页位图中未具有相同偏移值的已记录脏页位图块时,并向DMA单元发起内存读请求,以获取内存访问DMA单元的第三存储空间中与目标脏页位图块对应的匹配位图值。
在其中一个具体的实施例中,如果脏页缓存管理单元未记录在脏页位图中偏移相同的脏页位图块,说明此时没有从内存中获取该脏页位图块的位图值,这时需要发出获取该脏页位图块的位图值的DMA读请求。从而获取内存访问DMA单元的第三存储空间中与目标脏页位图块对应的匹配位图值。需要说明的是,后续步骤将在图4所示实施例进行详细描述,具体此处不做赘述。
进一步的是,在另外一种可实现的技术方案中,基于上述中所描述的步骤,脏页缓存单元的每个脏页信息都有一个有效位,由这些有效位组成一个有效区间,所以命中就有两种情况:命中有效区间,按照命中的流程来处理。即执行步骤307-步骤309。当命中无效区间,按照未命中的流程来处理,即执行执行步骤309,具体而言,则是向DMA单元发起内存读请求,以获取内存访问DMA单元的第三存储空间中与目标脏页位图块对应的匹配位图值。具体此处不做赘述。
通过本实施例公开的一种脏页记录方法,通过设计脏页缓存管理单元,保存了从发起DMA读请求到DMA写期间的可选数量(取决于脏页缓存的空间)的脏页信息,并且在此期间,所有与脏页缓存中位于相同脏页位图块的脏页信息,都将合成并更新在脏页缓存中,否则才作为新的脏页更新请求写入脏页缓存。通过该方法,将来自前级多个设备(或队列)的脏页信息更新到内存的脏页位图块中,大量位于相同脏页位图块的脏页信息或完全相同的脏页信息都将被合并,可以最大程度(取决于脏页缓存的空间)地减小对前级业务的影响。
进一步的是,基于图3中步骤309或步骤310,在另外一个可实现的技术方案中,请参阅图4,图4为本申请实施例公开的另一种脏页记录方法的流程示意图。包括步骤401-步骤402。不难理解的是,图4所示实施例可执行于图3中步骤309之后,也可执行于步骤310之后,具体此处不做限制。
401、获取内存访问DMA单元的第三存储空间中与目标脏页位图块对应的匹配位图值。
基于步骤309或步骤310,当脏页缓存管理单元中,并未记录有已记录的脏页位图块时,则向DMA单元发起内存读请求,从而获取第三存储空间中与目标脏页位图块对应的匹配位图值。不难理解的是,第三存储空间可以理解为内存的存储空间,进一步的,也可以理解为DMA单元中的存储空间,具体此处不做限制。
在其中一个具体的实施例中,当脏页缓存管理单元中存储有与目标脏页位图块对应的脏页位图块时,脏页处理单元可以向DMA单元发起读请求,从而DMA将内存中对应该目标脏页位图块的匹配位图值返回给脏页处理单元。由此,当DMA请求的数据返回后,就得到了该脏页位图块在内存中的位图值,再将脏页缓存管理单元中存储的对应脏页位图块的位图值读出来。
402、将目标位图值与匹配位图值进行逻辑运算,得到标记位图值,并将标记位图值写入第三存储空间中与目标脏页位图的对应脏页位图块,以完成目标脏页位图的标记。
由此,基于步骤401,便可以将目标位图值与匹配位图值进行逻辑运算,得到标记位图值,并将标记位图值写入第三存储空间中与目标脏页位图的对应脏页位图块,从而完成目标脏页位图的标记。
在其中一个具体的实施例中,将脏页缓存单元中存储的对应脏页位图块的位图值读出来,与内存(第三存储空间)中的位图值进行逻辑运算,得到该脏页位图块的目标位图值,再将该位图值写到内存中脏页位图的对应脏页位图块,完成了脏页的标记。
通过本实施例公开的一种脏页记录方法,与图3中所描述的脏页记录方法进行结合,可以最大程度地减小对前级业务的影响,甚至完全不影响。再有,在多设备、多队列或多虚拟机的迁移过程中,不需要例化多个模块。同时,操作灵活,可以根据实际情况,通过修改脏页位图块的大小来平衡业务流量与热迁移成功率的关系,还可以通过修改脏页缓存的空间大小来平衡资源与业务流量的关系。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
下面请参阅图5,本申请实施例公开的一种脏页记录装置的结构示意图包括:
中央处理器501,存储器505,输入输出接口504,有线或无线网络接口503以及电源502;
中央处理器501配置为与存储器505通信,并执行存储器505中的指令操作以执行前述图2或图3或图4所示实施例中的脏页记录方法。
本申请实施例还提供一种芯片系统,芯片系统包括至少一个处理器和通信接口,通信接口和至少一个处理器通过线路互联,至少一个处理器用于运行计算机程序或指令,以执行前述图2或图3或图4所示实施例中的脏页记录方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,read-onlymemory)、随机存取存储器(RAM,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (8)
1.一种脏页记录方法,其特征在于,应用于脏页处理单元,所述方法包括:
当脏页缓存管理单元的第一存储空间中所存储的脏页位图块未达到存储上限时,从入口缓存管理单元获取脏页信息,以根据所述脏页信息,得到与所述脏页信息对应的目标脏页位图块的当前位图值及偏移值;其中,所述入口缓存管理单元的第二存储空间用于存储所述脏页信息,所述目标脏页位图块为第三存储空间中任一脏页位图块,所述当前位图值用于描述所述目标脏页位图块于目标脏页位图的映射值,所述偏移值用于描述所述目标脏页位图块于所述目标脏页位图的位置;
判断所述脏页缓存管理单元中是否记录与所述目标脏页位图块对应的已记录脏页位图块;
若所述脏页缓存管理单元中记录有所述已记录脏页位图块,将所述已记录脏页位图块的已记录位图值与所述当前位图值进行逻辑运算,得到目标位图值,并将计算后的目标位图值覆盖所述脏页缓存管理单元中的所述已记录位图值;
所述将计算后的目标位图值覆盖所述脏页缓存管理单元中的所述已记录位图值之后,所述方法还包括:
获取内存访问DMA单元的所述第三存储空间中与所述目标脏页位图块对应的匹配位图值;
将所述目标位图值与所述匹配位图值进行逻辑运算,得到标记位图值;
将所述标记位图值写入所述第三存储空间中与所述目标脏页位图的对应脏页位图块,以完成所述目标脏页位图的标记;
所述将计算后的目标位图值覆盖所述脏页缓存管理单元中的所述已记录位图值之前,所述方法还包括:
判断所述脏页缓存管理单元的存储有效区间是否记录与所述目标脏页位图中具有相同所述偏移值的脏页位图块;
当所述目标脏页位图中具有相同所述偏移值的所述已记录脏页位图块时,确定所述脏页信息的所述存储有效区间有效,并执行所述将计算后的目标位图值覆盖所述脏页缓存管理单元中的所述已记录位图值的步骤;其中,所述存储有效区间用于描述头指针位置与尾指针位置中所述脏页信息所满足的存储位置区间;
当所述目标脏页位图中未具有相同所述偏移值的所述已记录脏页位图块时,并向所述DMA单元发起内存读请求,以执行所述获取内存访问DMA单元的第三存储空间中与所述目标脏页位图块对应的匹配位图值的步骤。
2.根据权利要求1所述的脏页记录方法,其特征在于,所述判断所述脏页缓存管理单元中是否记录与所述目标脏页位图块对应的已记录脏页位图块之后,所述方法还包括:
若所述脏页缓存管理单元未记录有与所述目标脏页位图中具有相同所述偏移值的所述已记录脏页位图块,向所述DMA单元发起内存读请求,以执行所述获取内存访问DMA单元的第三存储空间中与所述目标脏页位图块对应的匹配位图值的步骤。
3.根据权利要求1所述的脏页记录方法,其特征在于,所述得到目标位图值之后,所述方法还包括:
将所述目标脏页位图存储于所述脏页缓存管理单元中的头指针位置,并增加头指针的头指针位宽值;其中,所述头指针位宽值用于描述所述头指针对应的数值;
向所述DMA单元发送内存写请求,并当所述内存写请求响应时,增加所述脏页缓存管理单元中尾指针位置对应的尾指针位宽值;其中,所述尾指针位宽值用于描述尾指针对应的数值。
4.根据权利要求1所述的脏页记录方法,其特征在于,所述方法还包括:
当所述第一存储空间中所存储的脏页位图块达到存储上限时,中止从所述入口缓存管理单元获取所述脏页信息。
5.根据权利要求1所述的脏页记录方法,其特征在于,所述根据所述脏页信息,得到与所述脏页信息对应的目标脏页位图块的当前位图值及偏移值,包括:
获取所述目标脏页位图块于所述入口缓存管理的脏页写地址;
计算与所述脏页写地址对应的目标脏页位图块与目标脏页位图的偏移,确定所述偏移值;其中,所述目标脏页位图块及所述目标脏页位图均位于虚拟机中与所述脏页写地址对应的缓存地址上;
确定所述脏页写地址中,所述目标脏页位图块对应于所述目标脏页位图的位图值,得到所述当前位图值。
6.根据权利要求5所述的脏页记录方法,其特征在于,所述方法还包括:
根据所述偏移值确定所述脏页信息中所述目标脏页位图与所述虚拟机的关联关系,并根据所述关联关系确定所述目标脏页位图所位于的目标虚拟机的索引值;其中,所述目标虚拟机为与所述目标脏页位图存在关联的虚拟机;
将所述脏页信息发送至所述脏页缓存管理单元,以使得所述脏页缓存管理单元存储所述脏页信息,并根据所述脏页信息生成缓存队列,以执行所述将计算后的目标位图值覆盖所述脏页缓存管理单元中的所述已记录位图值的步骤。
7.一种脏页记录装置,其特征在于,所述装置包括:
中央处理器,存储器,输入输出接口,有线或无线网络接口以及电源;
所述中央处理器配置为与所述存储器通信,并执行所述存储器中的指令操作以执行权利要求1至6中任意一项所述的脏页记录方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括指令,当所述指令在计算机上运行时,使得计算机执行如权利要求1至6中任意一项所述的脏页记录方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410034436.6A CN117539797B (zh) | 2024-01-10 | 2024-01-10 | 一种脏页记录方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410034436.6A CN117539797B (zh) | 2024-01-10 | 2024-01-10 | 一种脏页记录方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117539797A CN117539797A (zh) | 2024-02-09 |
CN117539797B true CN117539797B (zh) | 2024-04-19 |
Family
ID=89792371
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410034436.6A Active CN117539797B (zh) | 2024-01-10 | 2024-01-10 | 一种脏页记录方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117539797B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112099905A (zh) * | 2020-08-26 | 2020-12-18 | 海光信息技术股份有限公司 | 虚拟机脏页获取方法、装置、电子设备及可读存储介质 |
CN113032088A (zh) * | 2019-12-25 | 2021-06-25 | 阿里巴巴集团控股有限公司 | 脏页记录方法、装置、电子设备及计算机可读介质 |
CN115586943A (zh) * | 2022-09-16 | 2023-01-10 | 杭州熠芯科技有限公司 | 一种智能网卡虚拟机脏页的硬件标记实现方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9817689B2 (en) * | 2015-02-27 | 2017-11-14 | Red Hat, Inc. | Dirty page tracking of guest-uncached memory |
US11995459B2 (en) * | 2020-08-25 | 2024-05-28 | VMware LLC | Memory copy during virtual machine migration in a virtualized computing system |
-
2024
- 2024-01-10 CN CN202410034436.6A patent/CN117539797B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113032088A (zh) * | 2019-12-25 | 2021-06-25 | 阿里巴巴集团控股有限公司 | 脏页记录方法、装置、电子设备及计算机可读介质 |
CN112099905A (zh) * | 2020-08-26 | 2020-12-18 | 海光信息技术股份有限公司 | 虚拟机脏页获取方法、装置、电子设备及可读存储介质 |
CN115586943A (zh) * | 2022-09-16 | 2023-01-10 | 杭州熠芯科技有限公司 | 一种智能网卡虚拟机脏页的硬件标记实现方法 |
Non-Patent Citations (1)
Title |
---|
由动态页面重排序传输实现高效热迁移;孙红;孔超宇;苏南;;计算机与网络;20130612(11);第58-60页 * |
Also Published As
Publication number | Publication date |
---|---|
CN117539797A (zh) | 2024-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200278880A1 (en) | Method, apparatus, and system for accessing storage device | |
EP2889780B1 (en) | Data processing system and data processing method | |
US9727503B2 (en) | Storage system and server | |
EP3992790B1 (en) | Information processing method, physical machine and pcie device | |
CN111813713B (zh) | 数据加速运算处理方法、装置及计算机可读存储介质 | |
CN102541779B (zh) | 一种提高多数据缓冲区dma效率的系统和方法 | |
EP3608790B1 (en) | Modifying nvme physical region page list pointers and data pointers to facilitate routing of pcie memory requests | |
US8738890B2 (en) | Coupled symbiotic operating system | |
CN105518631B (zh) | 内存管理方法、装置和系统、以及片上网络 | |
WO2015180598A1 (zh) | 对存储设备的访问信息处理方法和装置、系统 | |
WO2014094421A1 (zh) | 数据处理方法和虚拟机管理平台 | |
CN113760560A (zh) | 一种进程间通信方法以及进程间通信装置 | |
WO2024051041A1 (zh) | 一种数据存取方法、装置、设备和非易失性可读存储介质 | |
CN111782318A (zh) | 远程挂载本地磁盘到云桌面虚拟机中共享访问系统及方法 | |
US12105648B2 (en) | Data processing method, apparatus, and device | |
CN106598696B (zh) | 一种虚拟机之间数据交互的方法及装置 | |
CN109240800B (zh) | 一种基于Hypervisor多系统共享内存的管理方法 | |
US20190114076A1 (en) | Method and Apparatus for Storing Data in Distributed Block Storage System, and Computer Readable Storage Medium | |
CN115933975A (zh) | 数据处理方法、计算设备及计算机系统 | |
CN117539797B (zh) | 一种脏页记录方法及相关设备 | |
CN116931830A (zh) | 一种数据搬移方法、装置、设备及存储介质 | |
CN114238183B (zh) | 实现Virtio设备的系统、方法和介质 | |
US11126576B2 (en) | Input/output execution device, device virtualization system, input/output execution method, and recording medium | |
CN112732176A (zh) | 基于fpga的ssd访问方法及装置、存储系统及存储介质 | |
CN118467453B (zh) | 一种数据传输方法、装置、设备、介质及计算机程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |