CN114461336A - 一种gpu实时迁移方法、装置及电子设备 - Google Patents

一种gpu实时迁移方法、装置及电子设备 Download PDF

Info

Publication number
CN114461336A
CN114461336A CN202111617580.5A CN202111617580A CN114461336A CN 114461336 A CN114461336 A CN 114461336A CN 202111617580 A CN202111617580 A CN 202111617580A CN 114461336 A CN114461336 A CN 114461336A
Authority
CN
China
Prior art keywords
memory
page
dirty
dirty page
page table
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.)
Pending
Application number
CN202111617580.5A
Other languages
English (en)
Inventor
凌徐
艾天翔
李光辉
霍欣莉
果红艳
王庆兆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianyi Cloud Technology Co Ltd
Original Assignee
Tianyi Cloud Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tianyi Cloud Technology Co Ltd filed Critical Tianyi Cloud Technology Co Ltd
Priority to CN202111617580.5A priority Critical patent/CN114461336A/zh
Publication of CN114461336A publication Critical patent/CN114461336A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种GPU实时迁移方法、装置及电子设备,其中GPU实时迁移方法,包括:更新步骤:更新内存脏页表;检测步骤:检测更新后的所述内存脏页表中的内存页是否为脏页;传输步骤:传输所述脏页的页面数据;迭代所述更新步骤、所述检测步骤和所述传输步骤,在所述脏页的传输时间达到预设标准之后,继续更新所述内存脏页表,得到最终的内存脏页表;检测所述最终的内存脏页表中的内存页是否为脏页,并传输所述最终的内存脏页表中的脏页;由此可以通过多轮迭代传输内存页中的脏页,以最小化最终脏页表中的传输数量,即采用Pre‑Copy预拷贝机制实现GPU的实时迁移。

Description

一种GPU实时迁移方法、装置及电子设备
技术领域
本发明涉及虚拟化和云计算技术技术领域,具体涉及一种GPU实时迁移方法、装置及电子设备。
背景技术
实时迁移,也叫热迁移,是虚拟化和云计算中使用最广泛的关键特性之一,可以将虚拟机从一个主机迁移到另一个主机,而不会影响或通知虚拟机的用户。实时迁移的有效性是通过所需的服务停机时间来衡量的,服务停机时间是迁移过程中虚拟机必须停止的时间。服务停机主要是由于虚拟机的内存传输造成的。
对于IaaS(Infrastructure as a Service,基础设施及服务)云平台供应商来说,虚拟机的实时迁移至关重要。通过虚拟机实时迁移,IaaS云平台供应商可以:①提供HA(High Available,高可用)虚拟机实例;②简化系统的维护管理;③提高系统的负载均衡;④增强系统的错误容忍度;⑤优化系统的电源管理,为节约能做出贡献。GPU实时迁移是虚拟机迁移中的核心技术之一,它可以为提供GPU虚拟化实例的IaaS供应商带来很多好处。通过支持GPU实时迁移,云供应商可以为支持GPU的虚拟机提供上述所有特性。
发明内容
有鉴于此,本发明实施例提供了一种GPU实时迁移方法、装置及电子设备。
根据第一方面,本发明实施例提供了一种GPU实时迁移方法,包括:更新步骤:更新内存脏页表;检测步骤:检测更新后的所述内存脏页表中的内存页是否为脏页;传输步骤:传输所述脏页的页面数据;迭代所述更新步骤、所述检测步骤和所述传输步骤,在所述脏页的传输时间达到预设标准之后,继续更新所述内存脏页表,得到最终的内存脏页表;检测所述最终的内存脏页表中的内存页是否为脏页,并传输所述最终的内存脏页表中的脏页。
本发明实施例的GPU实时迁移方法,通过扫描内存访问,得到内存脏页表;检测所述内存脏页表中的内存页是否为脏页;传输所述脏页的页面数据;在所述脏页的传输时间达到预设标准之后,继续扫描内存访问,得到最终脏页表;检测所述最终脏页表中的内存页是否为脏页,传输所述最终脏页表中的脏页;由此可以通过多轮迭代传输内存页中的脏页,以最小化最终脏页表中的传输数量,即采用采用Pre-Copy预拷贝机制实现GPU的实时迁移。
结合第一方面,在第一方面第一实施方式中,所述检测更新后的所述内存脏页表中的内存页是否为脏页内存脏页表包括:计算所述更新后的内存脏页表中内存页的当前哈希值,并保存;获取更新前所述内存脏页表中内存页的上一哈希值;针对同一内存页,判断该内存页的当前哈希值与上一哈希值是否相同;当所述当前哈希值与所述上一哈希值不同时,判定该内存页为脏页。
结合第一方面,在第一方面第二实施方式中,在更新内存脏页表之前,还包括:扫描GPU显存访问,构建内存脏页表;计算所述内存脏页表中所有内存页的哈希值,并保存;传输所述内存脏页表中的所有内存页。
结合第一方面,在第一方面第三实施方式中,在更新内存脏页表之后,还包括:保存所述更新后的内存脏页表中内存页的采样数据,得到采样记录。
结合第一方面第三实施方式,在第一方面第四实施方式中,所述检测所述最终的内存脏页表中的内存页是否为脏页包括:获取所述最终的内存脏页表中内存页的采样字节;针对同一内存页,判断所述采样记录中是否包含该内存页的采样数据,当所述采样记录中不包含该内存页的采样数据时,判定该内存页为脏页。
结合第一方面第四实施方式,在第一方面第五实施方式中,GPU实时迁移方法还包括:当所述采样记录中包含该内存页的采样数据时,判断该内存页的采样字节与采样数据是否相同;当所述内存页的采样字节与采样数据不同时,判定该内存页为脏页;当所述内存页的采样字节与采样数据相同时,计算该内存页的当前哈希值并获取该内存页的上一哈希值;当所述当前哈希值与所述上一哈希值不同时,判定该内存页为脏页。
结合第一方面,在第一方面第六实施方式中,所述检测步骤与所述传输步骤并行进行。
根据第二方面,本发明实施例提供了一种GPU实时迁移装置,包括扫描模块、检测模块和传输模块;所述扫描模块,用于更新内存脏页表;所述检验模块,用于检测更新后的所述内存脏页表中的内存页是否为脏页;所述传输模块,用于传输所述脏页的页面数据;在所述脏页的传输时间达到预设标准之后,所述扫描模块还用于继续更新所述内存脏页表,得到最终的内存脏页表;所述检验模块,还用于检测所述最终的内存脏页表中的内存页是否为脏页;所述传输模块,还用于传输所述最终的内存脏页表中的脏页。
根据第三方面,本发明实施例还提供了一种电子设备,包括存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行第一方面或者第一方面的任意一种实施方式中所述的GPU实时迁移方法。
根据第四方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行第一方面或者第一方面的任意一种实施方式中所述的GPU实时迁移方法。
附图说明
通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,在附图中:
图1为本发明实施例1中GPU实时迁移方法的流程示意图;
图2为示例1云主机迁移中GPU实时迁移的架构图;
图3为vGPU迁移工作流;
图4为哈希校验工作流;
图5为本发明实施例2中GPU实时迁移装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本发明实施例1提供了一种GPU实时迁移方法。该方法采用Pre-Copy预拷贝机制,结合基于哈希的软件脏页验证技术,使用采样过滤优化策略,只发送脏页,加快vGPU迁移速度,实现vGPU实时迁移,克服商用GPU的限制。
Pre-Copy方法的关键思想是最小化停机期间传输的内存页面数量。该方法将迁移过程分为两个阶段:①预拷贝阶段,②停止和复制阶段。预拷贝阶段是指在虚拟机继续在源上运行时复制数据的过程。在这一阶段,通过多轮迭代传输内存脏页,以最小化停止和复制阶段的传输数量。停止和复制阶段是指当虚拟机在目的地重启时,将预拷贝阶段中最后一轮迭代的内存脏页数据进行传输的过程。
图1为本发明实施例1中GPU实时迁移方法的流程示意图,如图1所示,本发明实施例1的GPU实时迁移方法包括以下步骤:
S101:更新内存脏页表。
在更新内存脏页表之前,还包括:扫描GPU显存访问,构建内存脏页表;计算所述内存脏页表中所有内存页的哈希值,并保存;传输所述内存脏页表中的所有内存页。
具体的,可以通过GPU Driver(例如,NVIDIA vgpu-kvm Driver)的接口扫描内存访问,得到内存脏页表。
进一步的,在得到内存脏页表之后,还包括:保存所述更新后的内存脏页表中内存页的采样数据,得到采样记录。示例的,可以取每页内存页的页首1byte作为采样数据。在此处得到采样记录的目的是为停止和复制阶段中验证内存页是否为脏页提供依据。
S102:检测更新后的所述内存脏页表中的内存页是否为脏页。
在现有的GPU虚拟化解决方案中,基于Pass-Through(直通)或SR-IOV(Single-root I/O virtualization,单根I/O虚拟化)的方案并不是迁移友好的,因为Hypervisor(虚拟机管理器)无法感知一些硬件上下文状态。对此,MPT(Mediated Pass-Through,受控直通)是唯一的解决方案,Hypervisor可以通过驱动程序直接操纵GPU设备状态,并控制vGPU(virtual GPU,虚拟GPU)执行流,使其成为GPU实时迁移的完美选择。NVIDIA GRID,是使用MPT虚拟化IO设备的示例之一,通过对GPU的成功虚拟化,NVIDIA GRID表明MPT是一种有效的IO虚拟化方法。
GPU工作负载的脏模式,是指GPU在工作负载下内存脏页的模式。首先,GPU的脏模式与CPU的脏模式相似,即只有部分显存是脏的。其次,在GPU密集型工作负载下,GPU的内存写入表现出比CPU更强的局部性和更高的频率,一旦GPU页面被弄脏,它很可能被弄脏的更频繁。基于GPU的工作负载脏模式,可以得到,①Pre-Copy方法可以应用在GPU实时迁移中,并且能使服务停机时间减少;②GPU脏模式表明其比CPU更适合实时迁移。
尽管如此,在基于MPT的平台上实现GPU实时迁移仍然面临挑战。首先,由于GPU编程模型的复杂性和一些特殊硬件特性的缺乏,以及一些GPU Driver(例如,NVIDIA GridDriver)的商业闭源性,如何在屏蔽驱动内部细节的情况下实现vGPU实例的实时迁移变得较为困难。
基于此,在本发明实施例1中检测所述内存脏页表中的内存页是否为脏页可以采用如下方案:计算所述更新后的内存脏页表中内存页的当前哈希值,并保存;获取更新前所述内存脏页表中内存页的上一哈希值;针对同一内存页,判断该内存页的当前哈希值与上一哈希值是否相同;当所述当前哈希值与所述上一哈希值不同时,判定该内存页为脏页。上述在计算所述内存脏页表中内存页的当前哈希值并保存的目的是为下一轮中基于哈希的软件脏页验证技术提供判断的依据。
在本发明实施例1中,引入了基于哈希的技术来验证和跟踪内存空间的修改。在页表中,脏位反映相关内存页是否被修改。但是,遍历整个内存页面数据并将其与旧记录进行比较以验证身份可能会消耗时间和空间。因此,通过计算并记录内存页面的哈希指纹,并将当前指纹与旧指纹进行比对来验证身份,可以在屏蔽驱动内部细节的情况下实现vGPU实例的实时迁移,克服了商用GPU限制。
S103:传输所述脏页的页面数据。
需要说明的是,上述步骤S102与步骤S103可以并行进行。
也就是说,脏页检测和和脏页传输可以同时处理,即采用生产者—消费者模型,由此可以将将哈希散列工作负载和页面传输工作负载以重叠的模式进行处理,减少等待独立的处理任务和无关的系统资源的不必要挂起。
S104:所述脏页的传输时间达到预设标准之后,继续更新所述内存脏页表,得到最终的内存脏页表。
在本发明实施例1中,在步骤S103之后,返回步骤S101,并重复执行步骤S101、S102和S103,直到脏页的传输时间达到预设标准之后,跳转至步骤S104。
在本发明实施例1中,重复执行步骤S101、S102和S103,相当于Pre-Copy预拷贝机制中的预拷贝阶段。在预拷贝阶段中某轮内存页面的传输时间达到某一标准后,进入停止和复制阶段,进入步骤S104。
S105:检测所述最终的内存脏页表中的内存页是否为脏页,并传输所述最终的内存脏页表中的脏页。
当在上述步骤S101中保存内存脏页表中所有内存页的采样数据,得到采样记录时,所述检测所述最终脏页表中的内存页是否为脏页可以采用下方案:获取所述最终的内存脏页表中内存页的采样字节;针对同一内存页,判断所述采样记录中是否包含该内存页的采样数据,当所述采样记录中不包含该内存页的采样数据时,判定该内存页为脏页。
进一步的,当所述采样记录中包含该内存页的采样数据时,判断该内存页的采样字节与采样数据是否相同;当所述内存页的采样字节与采样数据不同时,判定该内存页为脏页;当所述内存页的采样字节与采样数据相同时,计算该内存页的当前哈希值并获取该内存页的上一哈希值;当所述当前哈希值与所述上一哈希值不同时,判定该内存页为脏页。
由此,通过采样记录可以初步过滤内存脏页,减少GPU实时迁移停机时间,减少了引入的基于哈希的软件脏页的操作的开销。
为了详细的说明本发明实施例1的GPU实时迁移方法,给出一个具体的示例。图2为示例1云主机迁移中GPU实时迁移的架构图。
如图2所示,架构图中包括脏页检测器和vGPU迁移管理器。脏页检测器负责对vGPU迁移管理器确定的内存脏区域进行内存页采样过滤、哈希校验以确定内存脏页。vGPU迁移管理器负责控制vGPU迁移过程,它首先通过GPU Driver(例如,NVIDIA vgpu-kvm Driver)的接口扫描内存访问,确定脏区域,并且读取vGPU上下文状态,用于迁移后重建,然后将在脏页检测器中利用基于哈希指纹的技术(即软件脏页)检测出的显存的脏页传输到目的地。此外,脏页检测和和脏页传输可以同时处理,即脏页检测器和vGPU迁移管理器设计为两个独立的线程,可以并行执行,以避免挂起。
基于图2所示的体系结构,实现了如下图3所示的vGPU迁移工作流,步骤如下:①首先,vGPU迁移管理器遍历构建的vGPU内存页面的脏记录,查找脏页地址;②一旦发现一个可能被弄脏的页面,脏页检测器便通过采样记录过滤脏页面;③接着,脏页检测器执行基于哈希指纹的验证;④之后,搜索和验证阶段结束,开始进入传输阶段,vGPU迁移管理器复制和传输脏页数据;⑤最后,vGPU迁移管理器在目的地进行脏页数据的恢复。通过重叠设计,③、④两个阶段可以重叠进行,系统同时处理验证和传输。
下面分别介绍整体工作流程以及两个模块,包括脏页检测器模块、vGPU迁移管理器模块。
(一)整体工作流程
1、整体设计
整个工作流程设计为vGPU迁移管理器主线程和脏页检测器工作线程两个线程。整个执行流程采用生产者—消费者模型,其中主线程遍历脏页表以选择脏内存页。在预拷贝阶段,主线程将选中的页面提交给工作线程,工作线程并发保存采样记录、计算哈希指纹,主线程并发传输页面数据。在停止复制阶段,主线程将选中的页面提交给工作线程,然后获取检测结果,判断传输的必要性。
2、预拷贝阶段
在预拷贝阶段中,首先进行第一轮内存页面的传输,vGPU迁移管理器主线程扫描内存访问,将所有显存页面视为脏页,构建vGPU内存页面脏页表记录;主线程遍历脏页表选择脏内存页,将选中的页面提交给脏页检测器工作线程,主线程开始传输页面数据,工作线程并发工作:记录每个页面配置的采样记录,生成并存储所有页的哈希指纹。在剩余的传输轮中,主线程扫描内存访问,确定显存脏区域,更新vGPU内存页面脏页表记录;之后主线程遍历脏页表选择脏内存页,将选中的页面提交给脏页检测器工作线程,主线程开始传输页面数据,工作线程并发工作:更新每个页面配置的采样记录,计算并更新每个页面的哈希指纹。
3、停止和复制阶段
当预拷贝阶段中某轮内存页面的传输时间达到某一标准后,进入停止和复制阶段。在停止和复制阶段,vGPU迁移管理器主线程扫描内存访问,确定显存脏区域,更新vGPU内存页面脏页表记录;之后主线程遍历脏页表选择脏内存页,将选中的页面提交给脏页检测器工作线程,等待获取检测结果,工作线程首先更新每个页面配置的采样记录,进行采样过滤,计算并更新可能的脏页面的哈希指纹,进行哈希校验,之后将检测出的脏页结果发送给主线程,主线程进行最后的脏页复制和传输,最后在目的地恢复脏页数据,重建vGPU上下文,完成vGPU实时迁移。
(二)脏页检测器模块
脏页检测器检测软件对页面的修改,并收集一组脏的vGPU内存页面,从而克服了普通GPU的硬件限制,实现了基于软件的脏页检测机制。脏页检测器主要是对vGPU迁移管理器确定的内存脏区域中的内存页进行采样过滤和哈希校验,以确定真正的内存脏页。
1、采样过滤
GPU工作负载的脏模式指出,GPU的内存写入表现出比CPU更强的局部性和更高的频率。意味着在整个迁移过程中,一个脏页面可能会被重复地修改。基于此,可以得出,大多数在预拷贝阶段标记为dirty的页面已经被进一步修改,并将在停止和复制阶段被验证为dirty。
采样过滤在哈希验证之前进行。在记录内存页相关的日志数据的结构中添加一个新字段用于记录每页的内存采样记录,脏页表是该数据结构的另一个字段。
在预拷贝阶段,调用哈希校验方法之前,记录每个页面配置的采样记录。在停止和复制阶段,根据采样记录对每个页面进行采样过滤,分为三种情况:①该页面为新增内存脏页,跳过哈希校验,交给vGPU迁移管理器执行复制和传输任务;②该页面的采样字节与记录的采样记录不一致,证明为脏页,跳过哈希校验,交给vGPU迁移管理器执行复制和传输任务;③该页面的采样字节与记录的采样记录一致,需要进一步进行哈希校验,验证其是否为脏页。
2、哈希校验
哈希校验通过监控页面哈希值的变化来验证脏页,实现软件脏页,其工作流如下图4所示。预拷贝阶段:①在第一轮内存页传输过程中生成并存储所有页的哈希值;②传输所有页;③在剩余的传输轮中,重新计算哈希值,并更新维护的页面哈希值记录。停止和复制阶段:④传输哈希值发生变化的页面。
(三)vGPU迁移管理器模块
vGPU迁移管理器控制vGPU的整体迁移过程,主要是进行内存扫描、脏页复制和传输、目的地脏页数据恢复及vGPU上下文重建。它首先通过GPU Driver(例如,NVIDIA vgpu-kvm Driver)的接口扫描内存访问,确定脏区域,同时读取vGPU上下文状态,然后将在脏页检测器中利用基于哈希指纹的技术(即软件脏页)检测出的显存的脏页传输到目的地,最后在传输完成之后在目的地恢复脏页数据,重建vGPU上下文,实现vGPU实时迁移。
在预拷贝阶段,第一轮内存页传输过程中,vGPU迁移管理器扫描内存访问,逻辑上将所有显存页面视为脏页,复制和传输所有内存页,同时将页面移交给脏页检测器,由其生成并存储所有页的采样记录和哈希指纹。在剩余的传输轮中,扫描内存访问,确定内存脏区域,遍历构建的vGPU内存页面的脏记录,将脏区域的所有页面复制和传输,同时将这些页面移交给脏页检测器,重新计算哈希值,并更新维护的页面哈希指纹。
在停止和复制阶段,vGPU迁移管理器扫描内存访问,确定内存脏区域,遍历构建的vGPU内存页面的脏记录,将选中的页面提交脏页检测器,获取检测结果,判断传输的必要性,进行页面传输,最后在目的地恢复脏页数据,重建vGPU上下文,完成vGPU实时迁移。
由此可见,本发明实施例提供的CPU实时迁移方法具有如下有益效果:
1、支持GPU云主机的实时迁移:通过支持GPU实时迁移,IaaS云供应商可以为支持GPU的虚拟机:①提供HA虚拟机实例;②简化系统的维护管理;③提高系统的负载均衡;④增强系统的错误容忍度;⑤优化系统的电源管理。
2、通用的基于软件的内存脏页机制:在迁移过程中,引入了基于哈希的技术来验证和跟踪内存空间的修改。在页表中,脏位反映相关内存页是否被修改。但是,遍历整个内存页面数据并将其与旧记录进行比较以验证身份可能会消耗时间和空间。因此,通过计算并记录内存页面的哈希指纹,并将当前指纹与旧指纹进行比对来验证身份,克服商用GPU限制。
3、基于采样的迁移优化策略,在记录内存页相关的日志数据的结构中添加一个新字段用于记录每页的内存采样记录,并用此记录初步过滤内存脏页,减少GPU实时迁移停机时间;
4、并行执行的迁移模型,基于生产者——消费者模型,将哈希散列工作负载和页面传输工作负载以重叠的模式进行处理,减少等待独立的处理任务和无关的系统资源的不必要挂起。
并且该方法已经应用在云平台中,良好兼容现有技术并稳定运行;完善大规模、高并发场景下自研云平台的功能支持,提升现有产品的质量。
1、将实现了该方法的调度系统部署在天翼云自研云平台中;
2、将配置文件中GPU实时迁移功能设置为enabled;
3、设置GPU实时迁移相关配置项,采样优化策略设置为取每页内存页的页首1byte作为采样记录、哈希指纹算法采用xxHash算法、迁移过程最大迁移时间设置为800(s);
4、在云平台集群的控制节点,通过linux shell脚本并发执行带GPU的云主机实时迁移命令,同时迁移100台GPU云主机,均成功迁移,平均停机时间为150ms,迁移过程稳定高效可靠。
实施例2
本发明实施例2提供了一种GPU实时迁移装置,图5为本发明实施例2中GPU实时迁移装置的结构示意图,如图5所示,本发明实施例2的GPU实时迁移装置包括扫描模块20、检验模块21和传输模块22。
具体的,扫描模块20,用于更新内存脏页表;
检验模块21,用于检测更新后的所述内存脏页表中的内存页是否为脏页;
传输模块22,用于传输所述脏页的页面数据;
所述扫描模块20,在所述脏页的传输时间达到预设标准之后,还用于继续更新所述内存脏页表,得到最终的内存脏页表;
所述检验模块21,还用于检测所述最终的内存脏页表中的内存页是否为脏页;
所述传输模块22,还用于传输所述最终的内存脏页表中的脏页。
上述GPU实时迁移装置具体细节可以对应参阅图1至图4所示的实施例中对应的相关描述和效果进行理解,此处不再赘述。
实施例3
本发明实施例还提供了一种电子设备,该电子设备可以包括处理器和存储器,其中处理器和存储器可以通过总线或者其他方式连接。
处理器可以为中央处理器(Central Processing Unit,CPU)。处理器还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的GPU实时迁移方法对应的程序指令/模块(例如,图5所示的扫描模块20、检验模块21和传输模块22)。处理器通过运行存储在存储器中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的GPU实时迁移方法。
存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述一个或者多个模块存储在所述存储器中,当被所述处理器执行时,执行如图1-4所示实施例中的GPU实时迁移方法。
上述电子设备具体细节可以对应参阅图1至图5所示的实施例中对应的相关描述和效果进行理解,此处不再赘述。
本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(Random AccessMemory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等;所述存储介质还可以包括上述种类的存储器的组合。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

Claims (10)

1.一种GPU实时迁移方法,其特征在于,包括:
更新步骤:更新内存脏页表;
检测步骤:检测更新后的所述内存脏页表中的内存页是否为脏页;
传输步骤:传输所述脏页的页面数据;
迭代所述更新步骤、所述检测步骤和所述传输步骤,在所述脏页的传输时间达到预设标准之后,继续更新所述内存脏页表,得到最终的内存脏页表;
检测所述最终的内存脏页表中的内存页是否为脏页,并传输所述最终的内存脏页表中的脏页。
2.根据权利要求1所述的方法,其特征在于,所述检测更新后的所述内存脏页表中的内存页是否为脏页内存脏页表包括:
计算所述更新后的内存脏页表中内存页的当前哈希值,并保存;
获取更新前所述内存脏页表中内存页的上一哈希值;
针对同一内存页,判断该内存页的当前哈希值与上一哈希值是否相同;
当所述当前哈希值与所述上一哈希值不同时,判定该内存页为脏页。
3.根据权利要求1所述的方法,其特征在于,在更新内存脏页表之前,还包括:
扫描GPU显存访问,构建内存脏页表;
计算所述内存脏页表中所有内存页的哈希值,并保存;
传输所述内存脏页表中的所有内存页。
4.根据权利要求1所述的方法,其特征在于,在更新内存脏页表之后,还包括:
保存所述更新后的内存脏页表中内存页的采样数据,得到采样记录。
5.根据权利要求4所述的方法,其特征在于,所述检测所述最终的内存脏页表中的内存页是否为脏页包括:
获取所述最终的内存脏页表中内存页的采样字节;
针对同一内存页,判断所述采样记录中是否包含该内存页的采样数据,当所述采样记录中不包含该内存页的采样数据时,判定该内存页为脏页。
6.根据权利要求5所述的方法,其特征在于,还包括:
当所述采样记录中包含该内存页的采样数据时,判断该内存页的采样字节与采样数据是否相同;
当所述内存页的采样字节与采样数据不同时,判定该内存页为脏页;
当所述内存页的采样字节与采样数据相同时,计算该内存页的当前哈希值并获取该内存页的上一哈希值;
当所述当前哈希值与所述上一哈希值不同时,判定该内存页为脏页。
7.根据权利要求1所述的方法,其特征在于,所述检测步骤与所述传输步骤并行进行。
8.一种GPU实时迁移装置,其特征在于,包括:
扫描模块,用于更新内存脏页表;
检验模块,用于检测更新后的所述内存脏页表中的内存页是否为脏页;
传输模块,用于传输所述脏页的页面数据;
所述扫描模块,在所述脏页的传输时间达到预设标准之后,还用于继续更新所述内存脏页表,得到最终的内存脏页表;
所述检验模块,还用于检测所述最终的内存脏页表中的内存页是否为脏页;
所述传输模块,还用于传输所述最终的内存脏页表中的脏页。
9.一种电子设备,其特征在于,包括:
存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行权利要求1-7中任一项所述的GPU实时迁移方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行权利要求1-7中任一项所述的GPU实时迁移方法。
CN202111617580.5A 2021-12-27 2021-12-27 一种gpu实时迁移方法、装置及电子设备 Pending CN114461336A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111617580.5A CN114461336A (zh) 2021-12-27 2021-12-27 一种gpu实时迁移方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111617580.5A CN114461336A (zh) 2021-12-27 2021-12-27 一种gpu实时迁移方法、装置及电子设备

Publications (1)

Publication Number Publication Date
CN114461336A true CN114461336A (zh) 2022-05-10

Family

ID=81407426

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111617580.5A Pending CN114461336A (zh) 2021-12-27 2021-12-27 一种gpu实时迁移方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN114461336A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115098177A (zh) * 2022-08-25 2022-09-23 中科方德软件有限公司 一种显卡驱动切换方法、装置和可读存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115098177A (zh) * 2022-08-25 2022-09-23 中科方德软件有限公司 一种显卡驱动切换方法、装置和可读存储介质
CN115098177B (zh) * 2022-08-25 2022-11-04 中科方德软件有限公司 一种显卡驱动切换方法、装置和可读存储介质

Similar Documents

Publication Publication Date Title
US11137911B2 (en) Fast restart of applications using shared memory
CN108874506B (zh) 虚拟机直通设备的热迁移方法和装置
US10289684B2 (en) Live migration of virtual machine persistent data using mirrored input-output operations
US8490088B2 (en) On demand virtual machine image streaming
US9058195B2 (en) Virtual machines failover
US9052949B2 (en) Scheduling a processor to support efficient migration of a virtual machine
US20140108854A1 (en) Providing multiple io paths in a virtualized environment to support for high availability of virtual machines
US20130205106A1 (en) Mapping guest pages to disk blocks to improve virtual machine management processes
US20140164722A1 (en) Method for saving virtual machine state to a checkpoint file
US10055307B2 (en) Workflows for series of snapshots
US9811404B2 (en) Information processing system and method
CN110990133B (zh) 边缘计算服务迁移方法、装置、电子设备及介质
CN107479944B (zh) 混合云模式下的虚拟机内存自适应热迁移调度方法及系统
US10635604B2 (en) Extending a cache of a storage system
WO2018036104A1 (zh) 一种布署虚拟机的方法、系统以及物理服务器
US10185573B2 (en) Caching based operating system installation
CN114461336A (zh) 一种gpu实时迁移方法、装置及电子设备
US11016861B2 (en) Crash recoverability for graphics processing units (GPU) in a computing environment
JP5719083B2 (ja) データベース装置、プログラムおよびデータ処理方法
US10795708B1 (en) Transparent disk caching for virtual machines and applications
CN112433812A (zh) 一种虚拟机跨集群迁移方法、系统、设备及计算机介质
WO2023165512A1 (zh) 一种故障文件保存方法及相关装置
CN111381933A (zh) 一种Docker热迁移实现方法
US10929238B2 (en) Management of changed-block bitmaps
US8904143B2 (en) Obtaining additional data storage from another data storage system

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