WO2020192448A1 - 虚拟机的迁移方法和系统 - Google Patents
虚拟机的迁移方法和系统 Download PDFInfo
- Publication number
- WO2020192448A1 WO2020192448A1 PCT/CN2020/079127 CN2020079127W WO2020192448A1 WO 2020192448 A1 WO2020192448 A1 WO 2020192448A1 CN 2020079127 W CN2020079127 W CN 2020079127W WO 2020192448 A1 WO2020192448 A1 WO 2020192448A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- processor
- virtual machine
- migration
- video memory
- memory data
- Prior art date
Links
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种虚拟机的迁移方法和系统。其中,该方法包括:虚拟机检测是否接收到迁移指令,其中,虚拟机运行在第一宿主机的第一处理器上;如果检测到迁移指令,虚拟机调取第一处理器中生成的显存数据;虚拟机将显存数据迁移至第二宿主机的第二处理器中。本发明解决了现有技术中使用NVIDIA GPU直通方式的虚拟机无法在宿主机之间进行热迁移的技术问题。
Description
本申请要求2019年03月25日递交的申请号为201910227209.4、发明名称为“虚拟机的迁移方法和系统”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
本发明涉及计算机领域,具体而言,涉及一种虚拟机的迁移方法和系统。
目前AI、机器学习等领域训练与推理广泛使用NVIDA GPU,各类训练推理计算占到了所有GPU用量的80%以上。同时CUDA(Compute Unified Device Architecture,统一计算设备架构)作为其在AI,机器学习的唯一软件配套系统,配合NVIDIA GPU搭建了完整的上下链路应用场景。
CUDA core是GPU的基本运算单元,GPU由几千个CUDA core组成,也叫做sp(streaming processor)。由于GPU直通技术不具备在宿主机端做信息拦截与重建,因此无法知晓CUDA core的状态信息,从而无法对虚拟机进行热迁移。由此,机器学习等应用在公有云上面使用仍存在如下问题:使用NVIDIA GPU直通方式的虚拟机不具备热迁移的能力。这就限制很多公有云上依赖于热迁移能力的运维操作,例如:负载平衡,主动运维,硬件更替,系统软件更新。
发明内容
本发明实施例提供了一种虚拟机的迁移方法和系统,以至少解决现有技术中使用NVIDIA GPU直通方式的虚拟机无法在宿主机之间进行热迁移的技术问题。
根据本发明实施例的一个方面,提供了一种虚拟机的迁移方法,包括:虚拟机检测是否接收到迁移指令,其中,虚拟机运行在第一宿主机的第一处理器上;如果检测到迁移指令,虚拟机调取第一处理器中生成的显存数据;虚拟机将显存数据迁移至第二宿主机的第二处理器中。
根据本发明实施例的另一方面,还提供了一种虚拟机的迁移系统,包括:虚拟机,运行在第一宿主机的第一处理器上;迁移模块,运行在虚拟机上,用于如果迁移模块接收到迁移指令,保存第一处理器生成的显存数据,并将显存数据迁移至第二宿主机的第二处理器中。
根据本发明实施例的一个方面,提供了一种虚拟机的迁移方法,包括:运行在虚拟机内的迁移模块检测是否接收到迁移指令,其中,虚拟机运行在第一宿主机的第一处理器上;如果检测到迁移指令,则判断第一处理器是否进入迁移状态;在第一处理器进入迁移状态的情况下,虚拟机调取第一处理器中生成的显存数据,并将显存数据迁移至第二宿主机的第二处理器中。
根据本发明实施例的一个方面,提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行如下步骤:虚拟机检测是否接收到迁移指令,其中,虚拟机运行在第一宿主机的第一处理器上;如果检测到迁移指令,虚拟机调取第一处理器中生成的显存数据;虚拟机将显存数据迁移至第二宿主机的第二处理器中。
根据本发明实施例的一个方面,提供了一种处理器,处理器用于运行程序,其中,程序运行时执行如下步骤:虚拟机检测是否接收到迁移指令,其中,虚拟机运行在第一宿主机的第一处理器上;如果检测到迁移指令,虚拟机调取第一处理器中生成的显存数据;虚拟机将显存数据迁移至第二宿主机的第二处理器中。
在本发明实施例中,虚拟机检测是否接收到迁移指令,其中,虚拟机运行在第一宿主机的第一处理器上;如果检测到迁移指令,虚拟机调取第一处理器中生成的显存数据;虚拟机将显存数据迁移至第二宿主机的第二处理器中。上述方案通过虚拟机检测的迁移指令,将第一处理器的显存数据存储在虚拟机中,并由虚拟机将第一处理器的显存数据迁移至第二处理器的显存中,从而实现了对虚拟机在不同宿主机的热迁移。由此,本申请上述实施例解决了现有技术中使用NVIDIA GPU直通方式的虚拟机无法在宿主机之间进行热迁移的技术问题。
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1示出了一种用于实现虚拟机的迁移方法的计算机终端(或移动设备)的硬件结构框图;
图2是根据本申请实施例1的一种虚拟机的热迁移方法的流程图;
图3是根据本申请实施例1的一种虚拟机的热迁移方法的示意图;
图4是根据本申请实施例1的一种控制单元执行迁移的示意图;
图5是根据本申请实施例2的一种虚拟机的迁移系统的示意图;
图6是根据本申请实施例2的一种迁移模块运行时的示意图;
图7是根据本申请实施例3的一种虚拟机的迁移方法的示意图;
图8是根据本申请实施例4的一种虚拟机的迁移方法的示意图;
图9是根据本申请实施例5的一种虚拟机的迁移方法的示意图;以及
图10是根据本发明实施例6的一种计算机终端的结构框图。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
GPU:Graphics Processing Unit,图形处理器,是在个人电脑、工作站、游戏机以及移动设备上进行图像运算工作的微处理器。
GPU直通:GPU直通指的是物理GPU被指派给每个虚拟桌面用户,GPU直通可以避免了GPU共享模式带来的抽象层开销。在GPU共享模式下,虚拟机使用的是软件虚拟出的实际不存在的虚拟显卡,所有的图像信息被打包给这个虚拟显卡,但虚拟显卡的命令是由CPU执行的,因此效率较低。而GPU直通中,虚拟机实现了物理显卡直接映射到虚拟机,这样虚拟机的图像信息就无需交给虚拟显卡,而是直接发送到真实存在的显卡进行运算,具有更高的效率。
热迁移:虚拟机可以在不同的宿主机之间迁移而不中断虚拟机内部任务。
hypervisor:宿主机虚拟化管理组件,是运行在物理服务器和操作系统之间的软件层,可允许多个操作系统和应用共享一套基础物理硬件,用于协调对硬件资源的访问。
实施例1
根据本发明实施例,还提供了一种虚拟机的迁移方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图1示出了一种用于实现虚拟机的迁移方法的计算机终端(或移动设备)的硬件结构框图。如图1所示,计算机终端10(或移动设备10)可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输模块。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端10(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中的方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的虚拟机的迁移方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端10(或移动设备)的用户界面进行交互。
此处需要说明的是,在一些可选实施例中,上述图1所示的计算机设备(或移动设备)可以包括硬件元件(包括电路)、软件元件(包括存储在计算机可读介质上的计算机代码)、或硬件元件和软件元件两者的结合。应当指出的是,图1仅为特定具体实例的一个实例,并且旨在示出可存在于上述计算机设备(或移动设备)中的部件的类型。
在上述运行环境下,本申请提供了如图2所示的虚拟机的热迁移方法。图2是根据本申请实施例1的一种虚拟机的热迁移方法的流程图。
步骤S21,虚拟机检测是否接收到迁移指令,其中,虚拟机运行在第一宿主机的第一处理器上。
具体的,上述虚拟机运行在第一宿主机上,第一宿主机中的第一处理器可以是处于直通模式下的GPU,通过直通的方式为虚拟机提供服务。采用GPU直通模式可以避免GPU共享模式带来的抽象层开销,并且交付性能与专用桌面相似。
在一种可选的实施例中,上述虚拟机中设置有迁移模块,由虚拟机中的迁移模块检测控制台发出的迁移指令,并在接收到控制台发出的迁移指令后,迁移模块启动对虚拟机进行迁移。
步骤S23,如果检测到迁移指令,虚拟机调取第一处理器中生成的显存数据。
具体的,上述第一处理器生成的显存数据包括第一处理器运算虚拟机的任务时得到的运算结果。
在一种可选的实施例中,第一处理器为GPU,虚拟机上运行AI应用程序,由GPU中包括的多个处理单元(CUDA core)进行处理,处理单元执行AI应用程序的任务,并将运行结果存储在GPU的显存中。
在上述方案中,迁移模块包括存取单元(Save/Restore Unit),在接收到迁移指令后,迁移模块从第一处理器的显存中获取第一处理器执行虚拟机的任务所生成的显存数据,并将获取的显存数据保存在迁移模块的存取单元中。
步骤S25,虚拟机将显存数据迁移至第二宿主机的第二处理器中。
在上述方案中,由虚拟机中的迁移模块将显存数据迁移至第二宿主机的第二处理器中。第二宿主机即为目的宿主机,也即迁移指令中所指示的宿主机。
上述第二处理器仍可以为处于直通模式下的GPU,虚拟机将显存数据迁移至第二处理器中后,虚拟机可以在第二处理器的支持下,根据迁移的显存数据继续运行,从而完成了虚拟机从第一宿主机至第二宿主机的热迁移。
图3是根据本申请实施例1的一种虚拟机的热迁移方法的示意图,结合图3所示,虚拟机VM上运行着AI应用程序的AI任务(workload)。在虚拟机VM迁移前,虚拟机VM运行在第一宿主机上,第一宿主机中包括宿主机虚拟化管理组件1(hypervisor1)和GPU1,在宿主机虚拟化管理组件1和虚拟机中的GPU驱动(GPU driver)的支持下,由GPU1按照直通的方式执行VM中的AI任务。
该示例中,在虚拟机内部设置了CUMA(migration assist module)模块,即上述迁移模块,由迁移模块接收控制台发送的迁移指令。迁移指令指示虚拟机迁移至第二宿主机,第二宿主机中包括宿主机虚拟化管理组件2(hypervisor1)和GPU2。迁移模块在接收到迁移指令之后,从GPU1的显存中取出GPU1执行虚拟机任务所生成的显存数据,并将显存数据存储在CUMA中(3.1)。
迁移模块获取CPU1的显存数据之后,将显存数据迁移至第二宿主机,并将显存数据写入第二宿主机的GPU2的显存中(3.2),从而完成了虚拟机的迁移。
本申请上述实施例中,虚拟机检测是否接收到迁移指令,其中,虚拟机运行在第一宿主机的第一处理器上;如果检测到迁移指令,虚拟机调取第一处理器中生成的显存数据;虚拟机将显存数据迁移至第二宿主机的第二处理器中。上述方案通过虚拟机检测的迁移指令,将第一处理器的显存数据存储在虚拟机中,并由虚拟机将第一处理器的显存数据迁移至第二处理器的显存中,从而实现了对虚拟机在不同宿主机的热迁移。
由此,本申请上述实施例解决了现有技术中使用NVIDIA GPU直通方式的虚拟机无法在宿主机之间进行热迁移的技术问题。
作为一种可选的实施例,通过运行在所述虚拟机上的迁移模块来检测是否接收到所述迁移指令,其中,如果迁移模块检测到迁移指令,迁移模块控制第一处理器中的处理单元暂停接收新的任务,和/或释放第一处理器的显存。
具体的,在虚拟机检测到迁移指令的情况下,如果第一处理器中的处理单元继续接收来自于AI应用程序的任务,则无法确保将第一处理器的显存中,虚拟机的所有运行数 据均迁移至第二处理器。因此,在虚拟机接收到迁移指令后,需要控制第一处理器中的处理单元暂停接收新的任务,并释放第一处理器中的显存。
在一种可选的实施例中,虚拟机的迁移模块包括控制单元(Control Unit),控制单元在接收到迁移指令后,控制第一处理器中的处理单元全部暂停接收新的任务,并释放第一处理器的显存,从而开始进行虚拟机的迁移。
作为一种可选的实施例,如果迁移模块检测到迁移指令,方法还包括:迁移模块判断第一处理器中的全部处理单元是否均运行结束;如果第一处理器中的全部处理单元均运行结束,进入保存第一处理器生成的显存数据的步骤。
具体的,只有当第一处理器中的全部处理单元均运行结束后,才能够执行保存第一处理器的显存数据的步骤。
在一种可选的实施例中,迁移模块中还包括追踪单元(Tracking Unit),在迁移模块的控制单元接收到迁移指令,控制处理单元全部暂停接收新的任务,且释放第一处理器的显存后,由追踪单元对第一处理器中每个处理单元的运行状态进行追踪,以确定是否第一处理器中的全部处理单元均运行结果,并在第一处理器中的全部处理单元均运行结束后,开始保存第一处理器的显存数据。
在上述方案中,在接收到迁移指令后,首先停止第一处理器的处理单元接收新的任务,再在确定所有处理单元均运算结束后,保存第一处理器的显存数据,从而使得能够将第一处理器对虚拟机的任务进行运算得到的全部均算结果均能够迁移至第二宿主机,进而使得在虚拟机迁移至第二宿主机后,能够顺利的继续运行。
作为一种可选的实施例,迁移模块判断第一处理器中的全部处理单元是否均运行结束,包括:迁移模块拦截第一图像处理单元中每个处理单元的第一预设接口,获取任务执行信息,其中,第一预设接口至少包括:调用接口和执行接口,任务执行信息至少包括用于指示处理单元运行结束的信息;迁移模块根据任务执行信息判断第一处理器中的每个处理单元是否均运行结束。
具体的,上述第一预设接口可以包括调度和执行API,运行在虚拟机上的AI应用程序通过调用调度API和执行API,向第一处理器发送任务执行信息,迁移模块则拦截任务执行信息,根据任务执行信息判断是否第一处理器的所有处理单元均运行结束。
在一种可选的实施例中,迁移模块中还包括干扰单元(Interception Unit),干扰单元用于截获处理单元的调用接口和执行接口,得到AI应用程序的任务执行信息;迁移模块中还包括追踪单元(Tracking Unit),干扰单元将截获的任务执行信息发送至追踪单元, 由追踪单元根据任务执行信息确定第一处理器中的所有处理单元是否均运行结束。可选的,第一预设接口可以包括:cudaSetDevice、cudaStreamCreate、cudaLaunchHostFunc、cudaLaunchKernel、cudaStreamSynchronize以及cudaSetKernel。
作为一种可选的实施例,如果迁移模块检测到迁移指令,上述方法还包括:迁移模块拦截第一图像处理单元的第二预设接口,获取显存信息,其中,第二预设接口至少包括显存分配接口,显存信息至少包括应用程序所使用的显存量和存储位置;迁移模块保存显存信息。
具体的,上述显存信息包括AI应用程序的运行数据对应的显存量和存储位置,用于对显存数据的恢复,例如,整个处理器显存高达16G,但当前运行的AI应用程序仅使用了其中一部分,因此在将显存数据迁移至第二处理器的显存时,需要根据迁移模块中存储的显存信息,将显存数据迁移至第二处理器的显存中的指定位置。
在一种可选的实施例中,可以由迁移模块中的干扰单元拦截上述显存分配接口(例如:cudaMalloc和cudafree),获取显存信息,并由追踪单元根据显存信息进行第一处理器的显存监控,确定当前AI应用程序所占用的显存大小和显存位置,以用于显存数据的恢复。
需要说明的是,上述第一预设接口和第二预设接口以外的所有接口调用信息将直接交由真正的处理单元运行资源库(CUDA runtime library)执行,以保证第一处理器的性能。而上述第一预设接口和第二预设接口在被调用时,调用信息(包括上述任务执行信息和显存信息)会被迁移模块拦截并交由追踪单元进行分析与存储,如果未接收到迁移指令,则追踪单元将第一预设接口和第二预设接口的调用信息转交给真正的处理单元的接口(CUDA API)来执行;如果接收到迁移指令,则追踪单元根据调用信息判断第一处理中的所有处理单元是否均运行结束,并获取AI应用程序对应的显存信息。
作为一种可选的实施例,在虚拟机将显存数据迁移至第二宿主机的第二处理器中之后,上述方法还包括:迁移模块根据显存信息将显存数据恢复至第二处理器的显存中。
具体的,在虚拟机中的迁移模块将显存数据迁移至第二宿主机之后,还需要根据显存信息,将显存数据恢复至第二处理器的显存中,才能使虚拟机在第二宿主机上根据恢复的显存数据继续运行,从而完成虚拟机的热迁移。
在一种可选的实施例中,可以由迁移模块中的存取单元进行显存数据的恢复。存取单元按照显存信息中记录的数据的大小和存储的位置,将显存数据恢复至第二处理器的显存中。
作为一种可选的实施例,在虚拟机将显存数据迁移至第二宿主机的第二处理器中之前,方法还包括:迁移模块触发虚拟机卸载图像处理器驱动,并触发第一处理器的宿主机虚拟化管理组件热拔图像处理器硬件;在虚拟机将显存数据迁移至第二宿主机的第二处理器中之后,方法还包括:迁移模块触发第二处理器的宿主机虚拟化管理组件热插图像处理器硬件,并触发虚拟机加载图像处理器驱动。
在上述方案中,在迁移模块迁移之前,需要对虚拟机的GPU驱动进行卸载,并热拔图像处理器硬件,在迁移模块迁移之后,还需要重新启动虚拟机,并热插图像处理器硬件后,再装载虚拟机驱动,从而使得虚拟机能够在第二宿主机上重新运行。
图4是根据本申请实施例1的一种控制单元执行迁移的示意图,在一种可选的实施例中,仍以第一处理器为GPU为例,迁移模块中的控制单元在迁移的过程中可以执行如下步骤:
①控制单元收到热迁移请求,调用追踪单元暂停所有处理单元(CUDA)接收新的任务,并调用存取单元(Save/Restore Unit)完成GPU显存数据的保存,同时释放所有已经分配的GPU资源。
②控制单元触发虚拟机内部的GPU驱动进行卸载(unload)。
③控制单元触发宿主机虚拟化管理组件(hypervisor)进行GPU硬件的热拔(detach)。
④控制单元进行虚拟机的热迁移。
⑤控制单元触发hypervisor将当前新的GPU硬件热插(attach)至虚拟机。
⑥控制单元激活虚拟机,虚拟机内部控制单元完成驱动的装载(reload)。
⑦存取单元把CUMA中保存的显存数据恢复到新GPU内部,控制单元通知追踪单元继续运行应用程序的调用。
由此完成了一个整体的热迁移过程,AI应用程序可以继续在虚拟机上继续执行。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现 有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
根据本发明实施例,还提供了一种虚拟机的迁移系统的实施例,图5是根据本申请实施例2的一种虚拟机的迁移系统的示意图,如图所示,该系统包括:
虚拟机50,运行在第一宿主机的第一处理器60上。
具体的,上述虚拟机运行在第一宿主机上,第一宿主机中的第一处理器可以是处于直通模式下的GPU,通过直通的方式为虚拟机提供服务。采用GPU直通模式可以避免GPU共享模式带来的抽象层开销,并且交付性能与专用桌面相似。
在一种可选的实施例中,上述虚拟机中设置有迁移模块,由虚拟机中的迁移模块检测控制台发出的迁移指令,并在接收到控制台发出的迁移指令后,迁移模块启动对虚拟机进行迁移。
迁移模块51,运行在虚拟机上,用于如果迁移模块接收到迁移指令,保存第一处理器生成的显存数据,并将显存数据迁移至第二宿主机的第二处理器70中。
具体的,上述第一处理器生成的显存数据包括第一处理器运算虚拟机的任务时得到的运算结果。
在一种可选的实施例中,第一处理器为GPU,虚拟机上运行AI应用程序,由GPU中包括的多个处理单元(CUDA core)进行处理,处理单元执行AI应用程序的任务,并将运行结果存储在GPU的显存中。
在上述方案中,迁移模块在接收到迁移指令后,迁移模块从第一处理器的显存中获取第一处理器执行虚拟机的任务所生成的显存数据,并将获取的显存数据保存在迁移模块的存取单元中。
在上述方案中,由虚拟机中的迁移模块将显存数据迁移至第二宿主机的第二处理器中。第二宿主机即为目的宿主机,也即迁移指令中所指示的宿主机。
上述第二处理器仍可以为处于直通模式下的GPU,虚拟机将显存数据迁移至第二处理器中后,虚拟机可以在第二处理器的支持下,根据迁移的显存数据继续运行,从而完成了虚拟机从第一宿主机至第二宿主机的热迁移。
图3是根据本申请实施例1的一种虚拟机的热迁移方法的示意图,结合图3所示,虚拟机VM上运行着AI应用程序的AI任务(workload)。在虚拟机VM迁移前,虚拟 机VM运行在第一宿主机上,第一宿主机中包括宿主机虚拟化管理组件1(hypervisor1)和GPU1,在宿主机虚拟化管理组件1和虚拟机中的GPU驱动(GPU driver)的支持下,由GPU1按照直通的方式执行VM中的AI任务。
该示例中,在虚拟机内部设置了CUMA(migration assist module)模块,即上述迁移模块,由迁移模块接收控制台发送的迁移指令。迁移指令指示虚拟机迁移至第二宿主机。迁移模块在接收到迁移指令之后,从GPU1的显存中取出GPU1执行虚拟机任务所生成的显存数据,并将显存数据存储在CUMA中(3.1)。
迁移模块获取CPU1的显存数据之后,将显存数据迁移至第二宿主机,并将显存数据写入第二宿主机的GPU2的显存中(3.2),从而完成了虚拟机的迁移。
本申请上述实施例中,虚拟机中的迁移模块检测是否接收到迁移指令,如果迁移模块接收到迁移指令,保存第一处理器生成的显存数据,并将显存数据迁移至第二宿主机的第二处理器中。上述方案通过虚拟机检测的迁移指令,将第一处理器的显存数据存储在虚拟机中,并由虚拟机将第一处理器的显存数据迁移至第二处理器的显存中,从而实现了对虚拟机在不同宿主机的热迁移。
由此,本申请上述实施例解决了现有技术中使用NVIDIA GPU直通方式的虚拟机无法在宿主机之间进行热迁移的技术问题。
作为一种可选的实施例,迁移模块包括:追踪单元,用于当迁移模块接收到迁移指令时,控制第一处理器中的处理单元暂停接收任务,并判断第一处理器中的全部执行单元是否均运行结束;存取单元,用于在追踪单元确定全部处理单元均运行结束后,保存第一处理器生成的显存数据;控制单元,用于将显存数据迁移至第二处理器;存取单元还用于在显存数据迁移至第二处理器后,将显存数据恢复至第二处理器的显存内。
具体的,上述追踪单元(Tracking Unit)用于获取第一处理器中所有处理单元的运行状态,并在所有处理单元均运行结束后,调用存取单元(Save/Restore Unit)存储显存数据。在控制单元(Control Unit)将显存数据迁移至第二处理器后,由存取单元将显存数据恢复至第二处理器的显存中。
作为一种可选的实施例,上述迁移模块还包括:干扰单元,用于通过拦截第一处理器中每个处理单元的第一预设接口获取任务执行信息,其中,第一预设接口至少包括:调用接口和执行接口,任务执行信息至少包括用于指示处理单元运行结束的信息;追踪单元与干扰单元相连,用于根据任务执行信息判断第一处理器中的全部处理单元是否均运行结束。
具体的,上述第一预设接口可以包括调度和执行API,运行在虚拟机上的AI应用程序通过调用调度API和执行API,向第一处理器发送任务执行信息,迁移模块则拦截任务执行信息,根据任务执行信息判断是否第一处理器的所有处理单元均运行结束。
在一种可选的实施例中,迁移模块中的干扰单元(Interception Unit)截获处理单元的调用接口和执行接口,得到AI应用程序的任务执行信息;迁移模块中还包括追踪单元(Tracking Unit),干扰单元将截获的任务执行信息发送至追踪单元,由追踪单元根据任务执行信息确定第一处理器中的所有处理单元是否均运行结束。可选的,第一预设接口可以包括:cudaSetDevice、cudaStreamCreate、cudaLaunchHostFunc、cudaLaunchKernel、cudaStreamSynchronize以及cudaSetKernel。
第一预设接口在被调用时,会被干扰单元拦截,并将调用信息交由追踪单元进行分析与存储,追踪单元根据干扰单元拦截第一预设接口得到的信息对CUDA stream进行监控,追踪单元收到迁移指令时,会暂时堵塞App的CUDA steam的操作(通过cudaLaunchHostFunc和cudaLaunchKernel),并通过调用cudaStreamSynchronize操作,以判断所有处理单元是否运行结束。
作为一种可选的实施例,干扰单元还用于通过拦截第一处理器的每个处理单元的第二预设接口获取显存信息,其中,第二预设接口至少包括显存分配接口,显存信息至少包括运行在虚拟机上的应用程序当前所使用的显存量和存储位置;追踪单元保存显存信息。
具体的,上述显存信息包括AI应用程序的运行数据对应的显存量和存储位置,用于对显存数据的恢复,例如,整个处理器显存高达16G,但当前运行的AI应用程序仅使用了其中一部分,因此在将显存数据迁移至第二处理器的显存时,需要根据迁移模块中存储的显存信息,将显存数据迁移至第二处理器的显存中的指定位置。
在一种可选的实施例中,可以由迁移模块中的干扰单元拦截上述显存分配接口(例如:cudaMalloc和cudafree),获取显存信息,并由追踪单元根据显存信息进行第一处理器的显存监控,确定当前AI应用程序所占用的显存大小和显存位置,以用于显存数据的恢复。
需要说明的是,上述第一预设接口和第二预设接口以外的所有接口调用信息将直接交由真正的处理单元运行资源库(CUDA runtime library)执行,以保证第一处理器的性能。而上述第一预设接口和第二预设接口在被调用时,调用信息(包括上述任务执行信息和显存信息)会被迁移模块拦截并交由追踪单元进行分析与存储,如果未接收到迁移 指令,则追踪单元将第一预设接口和第二预设接口的调用信息转交给真正的处理单元的接口(CUDA API)来执行;如果接收到迁移指令,则追踪单元根据调用信息判断第一处理中的所有处理单元是否均运行结束,并获取AI应用程序对应的显存信息。
图6是根据本申请实施例2的一种迁移模块运行时的示意图。结合图6所示,首先由干扰单元拦截第一处理器中每个处理单元的预设接口,对于非预设接口的调用信息,直接发送至处理单元运行资源库(CUDA runtime library)执行;对于预设接口的调用信息,由追踪单元根据预设接口的调用信息对CUDA stream和GPU显存进行监控。
在追踪单元对CUDA stream和GPU显存进行监控的过程中,由控制单元监控迁移指令。如果控制单元接收到控制台的迁移指令,则追踪单元等待第一处理器中的全部处理单元均运行结束,并在全部处理单元均运行结束的情况下调用存取单元保存第一处理器处理虚拟机的任务所生成的显存数据;如果控制单元未接收到迁移指令,则追踪单元将调用预设接口的调用信息返回给处理单元运行资源库执行。
使用拦截预设接口的方案,使得虚拟机的迁移具有可检测性。如果使用本申请提出的迁移模块进行虚拟机的迁移,则在判断虚拟机是否被迁移时,可以判断CUDA runtime API是否被拦截,例如,可通过gdb,ldd,strace,perf等工具查看当前CUDA libcuda.so的调用堆栈,以查看API是否被拦截,如果被拦截,则确定虚拟机进行了迁移。也可以在虚拟机内部读取GPU的UUID或者S/N号。如果该S/N已经改变。则确定虚拟机进行了迁移。
作为一种可选的实施例,第一处理器运行目标应用程序,迁移模块运行在目标应用程序与第一处理器的处理单元之间。
作为一种可选的实施例,迁移模块包括设置在处理单元动态库外层的至少一个接口。
在一种可选的实施例中,CUMA模块运行在虚拟机上的AI应用程序与cuda runtime library之间。它是在libcuda.so之外包裹了一层CUMA自己的接口。所有AI/CUDA应用程序的API调用都会被送到迁移模块,进行记录后交由真正的CUDA library处理。因此在程序运行过程中不会有任何的性能损失。AI/CUDA应用程序也无需重现编译。对应用程序的所有者来说是完全透明的。
作为一种可选的实施例,控制单元还用于对第二宿主机中的第二处理器进行初始化。
在将显存数据迁移至第二宿主机的第二处理器后,迁移模块还需要对第二处理器进行初始化,并对虚拟机在第二宿主机上进行激活,从而使虚拟机在第二宿主机上继续运行。
作为一种可选的实施例,控制单元还用于在迁移模块将显存数据迁移至第二宿主机的第二处理器中之前,触发虚拟机卸载图像处理器驱动,并触发第一处理器的宿主机虚拟化管理组件热拔图像处理器硬件;并在迁移模块将显存数据迁移至第二宿主机的第二处理器中之后,触发第二处理器的宿主机虚拟化管理组件热插图像处理器硬件,并触发虚拟机加载图像处理器驱动。
在上述方案中,在迁移模块迁移之前,需要对虚拟机的GPU驱动进行卸载,并热拔图像处理器硬件,在迁移模块迁移之后,还需要重新启动虚拟机,并热插图像处理器硬件后,再装载虚拟机驱动,从而使得虚拟机能够在第二宿主机上重新运行。
实施例3
根据本发明实施例,还提供了一种用于实施实施例1中的虚拟机的迁移方法的虚拟机的迁移装置,图7是根据本申请实施例3的一种虚拟机的迁移方法的示意图,如图7所示,该装置700包括:
检测模块702,用于虚拟机检测是否接收到迁移指令,其中,虚拟机运行在第一宿主机的第一处理器上。
调取模块704,用于如果检测到迁移指令,虚拟机调取第一处理器中生成的显存数。
迁移模块706,用于虚拟机将显存数据迁移至第二宿主机的第二处理器中。
此处需要说明的是,上述检测模块702、调取模块704和迁移模块706对应于实施例1中的步骤S21至步骤S25,两个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算机终端10中。
作为一种可选的实施例,通过运行在所述虚拟机上的迁移模块来检测是否接收到所述迁移指令,其中,如果迁移模块检测到迁移指令,迁移模块控制第一处理器中的处理单元暂停接收新的任务,和/或释放第一处理器的显存。
作为一种可选的实施例,如果迁移模块检测到迁移指令,上述装置还包括:判断模块,用于迁移模块判断第一处理器中的全部处理单元是否均运行结束;进入模块,用于如果第一处理器中的全部处理单元均运行结束,进入保存第一处理器生成的显存数据的步骤。
作为一种可选的实施例,判断模块包括:拦截子模块,用于迁移模块拦截第一处理器中每个处理单元的第一预设接口,获取任务执行信息,其中,第一预设接口至少包括:调用接口和执行接口,任务执行信息至少包括用于指示处理单元运行结束的信息;判断 子模块,用于迁移模块根据任务执行信息判断第一处理器中的每个处理单元是否均运行结束。
作为一种可选的实施例,如果迁移模块检测到迁移指令,上述装置还包括:拦截模块,用于迁移模块拦截第一处理器的每个处理单元的第二预设接口,获取显存信息,其中,第二预设接口至少包括显存分配接口,显存信息至少包括运行在虚拟机上的应用程序当前所使用的显存量和存储位置;保存模块,用于迁移模块保存显存信息。
作为一种可选的实施例,上述装置还包括:恢复模块,用于在虚拟机将显存数据迁移至第二宿主机的第二处理器中之后,迁移模块根据显存信息将显存数据恢复至第二处理器的显存中。
作为一种可选的实施例,上述装置还包括:卸载模块,用于在虚拟机将显存数据迁移至第二宿主机的第二处理器中之前,迁移模块触发虚拟机卸载图像处理器驱动,并触发第一处理器的宿主机虚拟化管理组件热拔图像处理器硬件;装载模块,用于在虚拟机将显存数据迁移至第二宿主机的第二处理器中之后,迁移模块触发第二处理器的宿主机虚拟化管理组件热插图像处理器硬件,并触发虚拟机加载图像处理器驱动。
实施例4
根据本发明实施例,还提供了一种虚拟机的迁移方法,该虚拟机的迁移方法可以由实施例2中的虚拟机的迁移系统执行,图8是根据本申请实施例4的一种虚拟机的迁移方法的示意图,如图8所示,该方法包括如下步骤:
步骤S81,运行在虚拟机内的迁移模块检测是否接收到迁移指令,其中,虚拟机运行在第一宿主机的第一处理器上。
具体的,上述虚拟机运行在第一宿主机上,第一宿主机中的第一处理器可以是处于直通模式下的GPU,通过直通的方式为虚拟机提供服务。采用GPU直通模式可以避免GPU共享模式带来的抽象层开销,并且交付性能与专用桌面相似。
在一种可选的实施例中,上述虚拟机中设置有迁移模块,由虚拟机中的迁移模块检测控制台发出的迁移指令,并在接收到控制台发出的迁移指令后,迁移模块启动对虚拟机进行迁移。
步骤S83,如果检测到迁移指令,则判断第一处理器是否进入迁移状态。
具体的,上述步骤可以由迁移模块中的追踪单元执行。在一种可选的实施例中,追踪单元监控第一处理器中每个处理单元的运行状态和第一处理器的显存情况,从而当检测到迁移指令时,可以判断第一处理器是否进入迁移状态。
在一种可选的实施例中,如果第一处理器中的每个处理单元均运行结束,则确定第一处理器进入迁移状态。
步骤S85,在第一处理器进入迁移状态的情况下,虚拟机调取第一处理器中生成的显存数据,并将显存数据迁移至第二宿主机的第二处理器中。
在上述方案中,由虚拟机中的迁移模块将显存数据迁移至第二宿主机的第二处理器中。第二宿主机即为目的宿主机,也即迁移指令中所指示的宿主机。
上述第二处理器仍可以为处于直通模式下的GPU,虚拟机将显存数据迁移至第二处理器中后,虚拟机可以在第二处理器的支持下,根据迁移的显存数据继续运行,从而完成了虚拟机从第一宿主机至第二宿主机的热迁移。
图3是根据本申请实施例1的一种虚拟机的热迁移方法的示意图,结合图3所示,虚拟机VM上运行着AI应用程序的AI任务(workload)。在虚拟机VM迁移前,虚拟机VM运行在第一宿主机上,第一宿主机中包括宿主机虚拟化管理组件1(hypervisor1)和GPU1,在宿主机虚拟化管理组件1和虚拟机中的GPU驱动(GPU driver)的支持下,由GPU1按照直通的方式执行VM中的AI任务。
该示例中,在虚拟机内部设置了CUMA(migration assist module)模块,即上述迁移模块,由迁移模块接收控制台发送的迁移指令。迁移指令指示虚拟机迁移至第二宿主机。迁移模块在接收到迁移指令之后,从GPU1的显存中取出GPU1执行虚拟机任务所生成的显存数据,并将显存数据存储在CUMA中(3.1)。
迁移模块获取CPU1的显存数据之后,将显存数据迁移至第二宿主机,并将显存数据写入第二宿主机的GPU2的显存中(3.2),从而完成了虚拟机的迁移。
本申请上述实施例中,运行在虚拟机内的迁移模块检测是否接收到迁移指令,其中,虚拟机运行在第一宿主机的第一处理器上;如果检测到迁移指令,则判断第一处理器是否进入迁移状态;在第一处理器进入迁移状态的情况下,虚拟机调取第一处理器中生成的显存数据,并将显存数据迁移至第二宿主机的第二处理器中。上述方案在虚拟机中设置迁移模块,通过迁移模块在第一宿主机端进行信息拦截与重建,实现了对第一处理器状态的监控,当虚拟机检测的迁移指令时,通过迁移模块监控第一处理是否进入迁移状态,并在第一处理器进入迁移状态后,将第一处理器的显存数据存储在虚拟机中,并显存数据迁移至第二处理器的显存中,从而实现了对虚拟机在不同宿主机的热迁移。
由此,本申请上述实施例解决了现有技术中使用NVIDIA GPU直通方式的虚拟机无法在宿主机之间进行热迁移的技术问题。
作为一种可选的实施例,判断第一处理器是否进入迁移状态,包括:迁移模块拦截第一处理器中每个处理单元的第一预设接口,获取任务执行信息,其中,第一预设接口至少包括:调用接口和执行接口,任务执行信息至少包括用于指示处理单元运行结束的信息;迁移模块根据任务执行信息判断第一处理器中的全部处理单元是否均运行结束;如果全部处理单元均运行结束,则确定第一处理器进入迁移状态。
具体的,上述第一预设接口可以包括调度和执行API,运行在虚拟机上的AI应用程序通过调用调度API和执行API,向第一处理器发送任务执行信息,迁移模块则拦截任务执行信息,根据任务执行信息判断是否第一处理器的所有处理单元均运行结束。
在一种可选的实施例中,迁移模块中还包括干扰单元(Interception Unit),干扰单元用于截获处理单元的调用接口和执行接口,得到AI应用程序的任务执行信息;迁移模块中还包括追踪单元(Tracking Unit),干扰单元将截获的任务执行信息发送至追踪单元,由追踪单元根据任务执行信息确定第一处理器中的所有处理单元是否均运行结束。可选的,第一预设接口可以包括:cudaSetDevice、cudaStreamCreate、cudaLaunchHostFunc、cudaLaunchKernel、cudaStreamSynchronize以及cudaSetKernel。
实施例5
根据本发明实施例,还提供了一种用于实施实施例4中的虚拟机的迁移方法的虚拟机的迁移装置,图9是根据本申请实施例5的一种虚拟机的迁移方法的示意图,如图9所示,该装置900包括:
检测模块902,用于运行在虚拟机内的迁移模块检测是否接收到迁移指令,其中,虚拟机运行在第一宿主机的第一处理器上。
判断模块904,用于如果检测到迁移指令,则判断第一处理器是否进入迁移状态;
迁移模块906,用于在第一处理器进入迁移状态的情况下,虚拟机调取第一处理器中生成的显存数据,并将显存数据迁移至第二宿主机的第二处理器中。
此处需要说明的是,上述检测模块902、判断模块904和迁移模块906对应于实施例4中的步骤S81至步骤S85,两个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算机终端10中。
作为一种可选的实施例,判断模块包括:拦截子模块,用于迁移模块拦截第一处理器中每个处理单元的第一预设接口,获取任务执行信息,其中,第一预设接口至少包括:调用接口和执行接口,任务执行信息至少包括用于指示处理单元运行结束的信息;判断 子模块,用于迁移模块根据任务执行信息判断第一处理器中的全部处理单元是否均运行结束;确定子模块,用于如果全部处理单元均运行结束,则确定第一处理器进入迁移状态。
实施例6
本发明的实施例可以提供一种计算机终端,该计算机终端可以是计算机终端群中的任意一个计算机终端设备。可选地,在本实施例中,上述计算机终端也可以替换为移动终端等终端设备。
可选地,在本实施例中,上述计算机终端可以位于计算机网络的多个网络设备中的至少一个网络设备。
在本实施例中,上述计算机终端可以执行虚拟机的迁移方法中以下步骤的程序代码:虚拟机检测是否接收到迁移指令,其中,虚拟机运行在第一宿主机的第一处理器上;如果检测到迁移指令,虚拟机调取第一处理器中生成的显存数据;虚拟机将显存数据迁移至第二宿主机的第二处理器中。
可选地,图10是根据本发明实施例6的一种计算机终端的结构框图。如图10所示,该计算机终端A可以包括:一个或多个(图中仅示出一个)处理器102、存储器104、以及外设接口106。
其中,存储器可用于存储软件程序以及模块,如本发明实施例中的虚拟机的迁移方法和装置对应的程序指令/模块,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的虚拟机的迁移方法。存储器可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至终端A。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:虚拟机检测是否接收到迁移指令,其中,虚拟机运行在第一宿主机的第一处理器上;如果检测到迁移指令,虚拟机调取第一处理器中生成的显存数据;虚拟机将显存数据迁移至第二宿主机的第二处理器中。
可选的,上述处理器还可以执行如下步骤的程序代码:通过运行在所述虚拟机上的迁移模块来检测是否接收到所述迁移指令,其中,如果迁移模块检测到迁移指令,迁移模块控制第一处理器中的处理单元暂停接收新的任务,和/或释放第一处理器的显存。
可选的,上述处理器还可以执行如下步骤的程序代码:如果迁移模块检测到迁移指令,迁移模块判断第一处理器中的全部处理单元是否均运行结束;如果第一处理器中的全部处理单元均运行结束,进入保存第一处理器生成的显存数据的步骤。
可选的,上述处理器还可以执行如下步骤的程序代码:迁移模块拦截第一处理器中每个处理单元的第一预设接口,获取任务执行信息,其中,第一预设接口至少包括:调用接口和执行接口,任务执行信息至少包括用于指示处理单元运行结束的信息;迁移模块根据任务执行信息判断第一处理器中的每个处理单元是否均运行结束。
可选的,上述处理器还可以执行如下步骤的程序代码:如果迁移模块检测到迁移指令,迁移模块拦截第一处理器的每个处理单元的第二预设接口,获取显存信息,其中,第二预设接口至少包括显存分配接口,显存信息至少包括运行在虚拟机上的应用程序当前所使用的显存量和存储位置;迁移模块保存显存信息。
可选的,上述处理器还可以执行如下步骤的程序代码:在虚拟机将显存数据迁移至第二宿主机的第二处理器中之后,迁移模块根据显存信息将显存数据恢复至第二处理器的显存中。
可选的,上述处理器还可以执行如下步骤的程序代码:在虚拟机将显存数据迁移至第二宿主机的第二处理器中之前,方法还包括:迁移模块触发虚拟机卸载图像处理器驱动,并触发第一处理器的宿主机虚拟化管理组件热拔图像处理器硬件;在虚拟机将显存数据迁移至第二宿主机的第二处理器中之后,方法还包括:迁移模块触发第二处理器的宿主机虚拟化管理组件热插图像处理器硬件,并触发虚拟机加载图像处理器驱动。
采用本发明实施例,提供了一种虚拟机的迁移的方案。虚拟机检测是否接收到迁移指令,其中,虚拟机运行在第一宿主机的第一处理器上;如果检测到迁移指令,虚拟机调取第一处理器中生成的显存数据;虚拟机将显存数据迁移至第二宿主机的第二处理器中。上述方案通过虚拟机检测的迁移指令,将第一处理器的显存数据存储在虚拟机中,并由虚拟机将第一处理器的显存数据迁移至第二处理器的显存中,从而实现了对虚拟机在不同宿主机的热迁移。
由此,本申请上述实施例解决了现有技术中使用NVIDIA GPU直通方式的虚拟机无法在宿主机之间进行热迁移的技术问题。
本领域普通技术人员可以理解,图10示的结构仅为示意,计算机终端也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌声电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图10其并不对上述电子装置的结构造成限 定。例如,计算机终端10还可包括比图10中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图10所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
实施例7
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例一所提供的虚拟机的迁移方法所执行的程序代码。
可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:虚拟机检测是否接收到迁移指令,其中,虚拟机运行在第一宿主机的第一处理器上;如果检测到迁移指令,虚拟机调取第一处理器中生成的显存数据;虚拟机将显存数据迁移至第二宿主机的第二处理器中。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单 元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (19)
- 一种虚拟机的迁移方法,包括:虚拟机检测是否接收到迁移指令,其中,所述虚拟机运行在第一宿主机的第一处理器上;如果检测到所述迁移指令,所述虚拟机调取所述第一处理器中生成的显存数据;所述虚拟机将所述显存数据迁移至第二宿主机的第二处理器中。
- 根据权利要求1所述的方法,其中,通过运行在所述虚拟机上的迁移模块来检测是否接收到所述迁移指令,其中,如果所述迁移模块检测到所述迁移指令,所述迁移模块控制所述第一处理器中的处理单元暂停接收新的任务,和/或释放所述第一处理器的显存。
- 根据权利要求2所述的方法,其中,如果所述迁移模块检测到所述迁移指令,所述方法还包括:所述迁移模块判断所述第一处理器中的全部处理单元是否均运行结束;如果所述第一处理器中的全部处理单元均运行结束,进入保存所述第一处理器生成的显存数据的步骤。
- 根据权利要求3所述的方法,其中,所述迁移模块判断所述第一处理器中的全部处理单元是否均运行结束,包括:所述迁移模块拦截所述第一处理器中每个处理单元的第一预设接口,获取任务执行信息,其中,所述第一预设接口至少包括:调用接口和执行接口,所述任务执行信息至少包括用于指示所述处理单元运行结束的信息;所述迁移模块根据所述任务执行信息判断所述第一处理器中的每个处理单元是否均运行结束。
- 根据权利要求3所述的方法,其中,如果所述迁移模块检测到所述迁移指令,所述方法还包括:所述迁移模块拦截所述第一处理器的每个处理单元的第二预设接口,获取显存信息,其中,所述第二预设接口至少包括显存分配接口,所述显存信息至少包括运行在所述虚拟机上的应用程序当前所使用的显存量和存储位置;所述迁移模块保存所述显存信息。
- 根据权利要求5所述的方法,其中,在所述虚拟机将所述显存数据迁移至第二宿主机的第二处理器中之后,所述方法还包括:所述迁移模块根据所述显存信息将所述显存数据恢复至所述第二处理器的显存中。
- 根据权利要求2所述的方法,其中,在所述虚拟机将所述显存数据迁移至第二宿主机的第二处理器中之前,所述方法还包括:所述迁移模块触发所述虚拟机卸载图像处理器驱动,并触发所述第一处理器的宿主机虚拟化管理组件热拔图像处理器硬件;在所述虚拟机将所述显存数据迁移至第二宿主机的第二处理器中之后,所述方法还包括:所述迁移模块触发所述第二处理器的宿主机虚拟化管理组件热插所述图像处理器硬件,并触发所述虚拟机加载所述图像处理器驱动。
- 一种虚拟机的迁移系统,包括:虚拟机,运行在第一宿主机的第一处理器上;迁移模块,运行在所述虚拟机上,用于如果所述迁移模块接收到迁移指令,保存所述第一处理器生成的显存数据,并将所述显存数据迁移至第二宿主机的第二处理器中。
- 根据权利要求8所述的系统,其中,所述迁移模块包括:追踪单元,用于当所述迁移模块接收到所述迁移指令时,控制所述第一处理器中的处理单元暂停接收任务,并判断第一处理器中的全部执行单元是否均运行结束;存取单元,用于在所述追踪单元确定全部处理单元均运行结束后,保存所述第一处理器生成的显存数据;控制单元,用于将所述显存数据迁移至所述第二处理器;所述存取单元还用于在所述显存数据迁移至所述第二处理器后,将所述显存数据恢复至所述第二处理器的显存内。
- 根据权利要求9所述的系统,其中,所述迁移模块还包括:干扰单元,用于通过拦截所述第一处理器中每个处理单元的第一预设接口获取任务执行信息,其中,所述第一预设接口至少包括:调用接口和执行接口,所述任务执行信息至少包括用于指示所述处理单元运行结束的信息;所述追踪单元与所述干扰单元相连,用于根据所述任务执行信息判断所述第一处理器中的全部处理单元是否均运行结束。
- 根据权利要求10所述的系统,其中,所述干扰单元还用于通过拦截所述第一处理器的每个处理单元的第二预设接口获取显存信息,其中,所述第二预设接口至少包括显存分配接口,所述显存信息至少包括运行在所述虚拟机上的应用程序当前所使用的显存量和存储位置;所述追踪单元保存所述显存信息。
- 根据权利要求8所述的系统,其中,所述第一处理器运行目标应用程序,所述迁移模块运行在所述目标应用程序与所述第一处理器的处理单元之间。
- 根据权利要求8所述的系统,其中,所述迁移模块包括设置在处理单元动态库外层的至少一个接口。
- 根据权利要求9所述的系统,其中,所述控制单元还用于对所述第二宿主机中的第二处理器进行初始化。
- 根据权利要求9所述的系统,其中,所述控制单元还用于在所述迁移模块将所述显存数据迁移至第二宿主机的第二处理器中之前,触发所述虚拟机卸载图像处理器驱动,并触发所述第一处理器的宿主机虚拟化管理组件热拔图像处理器硬件;并在所述迁移模块将所述显存数据迁移至第二宿主机的第二处理器中之后,触发所述第二处理器的宿主机虚拟化管理组件热插所述图像处理器硬件,并触发所述虚拟机加载所述图像处理器驱动。
- 一种虚拟机的迁移方法,包括:运行在虚拟机内的迁移模块检测是否接收到迁移指令,其中,所述虚拟机运行在第一宿主机的第一处理器上;如果检测到迁移指令,则判断所述第一处理器是否进入迁移状态;在所述第一处理器进入所述迁移状态的情况下,所述虚拟机调取所述第一处理器中生成的显存数据,并将所述显存数据迁移至第二宿主机的第二处理器中。
- 根据权利要求16所述的方法,其中,判断所述第一处理器是否进入迁移状态,包括:所述迁移模块拦截所述第一处理器中每个处理单元的第一预设接口,获取任务执行信息,其中,所述第一预设接口至少包括:调用接口和执行接口,所述任务执行信息至少包括用于指示所述处理单元运行结束的信息;所述迁移模块根据所述任务执行信息判断所述第一处理器中的全部处理单元是否均运行结束;如果所述全部处理单元均运行结束,则确定所述第一处理器进入所述迁移状态。
- 一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行如下步骤:虚拟机检测是否接收到迁移指令,其中,所述虚拟机运行在第一宿主机的第一处理器上;如果检测到所述迁移指令,所述虚拟机调取所 述第一处理器中生成的显存数据;所述虚拟机将所述显存数据迁移至第二宿主机的第二处理器中。
- 一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行如下步骤:虚拟机检测是否接收到迁移指令,其中,所述虚拟机运行在第一宿主机的第一处理器上;如果检测到所述迁移指令,所述虚拟机调取所述第一处理器中生成的显存数据;所述虚拟机将所述显存数据迁移至第二宿主机的第二处理器中。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP20779006.4A EP3951590A4 (en) | 2019-03-25 | 2020-03-13 | VIRTUAL MACHINE MIGRATION METHOD AND SYSTEM |
US17/485,071 US20220012087A1 (en) | 2019-03-25 | 2021-09-24 | Virtual Machine Migration Method and System |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910227209.4A CN111736943A (zh) | 2019-03-25 | 2019-03-25 | 虚拟机的迁移方法和系统 |
CN201910227209.4 | 2019-03-25 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/485,071 Continuation US20220012087A1 (en) | 2019-03-25 | 2021-09-24 | Virtual Machine Migration Method and System |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2020192448A1 true WO2020192448A1 (zh) | 2020-10-01 |
Family
ID=72608630
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2020/079127 WO2020192448A1 (zh) | 2019-03-25 | 2020-03-13 | 虚拟机的迁移方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220012087A1 (zh) |
EP (1) | EP3951590A4 (zh) |
CN (1) | CN111736943A (zh) |
WO (1) | WO2020192448A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023037330A1 (en) * | 2021-09-13 | 2023-03-16 | Hyperplane Ltd. | Techniques for clearing the internal state of a library |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220214902A1 (en) * | 2021-01-06 | 2022-07-07 | Baidu Usa Llc | Method for virtual machine migration with checkpoint authentication in virtualization environment |
US20220214903A1 (en) * | 2021-01-06 | 2022-07-07 | Baidu Usa Llc | Method for virtual machine migration with artificial intelligence accelerator status validation in virtualization environment |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110084973A1 (en) * | 2009-10-08 | 2011-04-14 | Tariq Masood | Saving, Transferring and Recreating GPU Context Information Across Heterogeneous GPUs During Hot Migration of a Virtual Machine |
US20110145471A1 (en) * | 2009-12-10 | 2011-06-16 | Ibm Corporation | Method for efficient guest operating system (os) migration over a network |
CN103812823A (zh) * | 2012-11-07 | 2014-05-21 | 华为技术有限公司 | 虚拟机热迁移时配置信息迁移的方法、设备及系统 |
CN106020929A (zh) * | 2016-05-13 | 2016-10-12 | 深圳市青葡萄科技有限公司 | 一种虚拟化环境下支持3d应用的系统和方法 |
CN106991007A (zh) * | 2017-03-31 | 2017-07-28 | 青岛大学 | 一种基于gpu片上的数据处理方法 |
CN108874506A (zh) * | 2018-06-08 | 2018-11-23 | 北京百度网讯科技有限公司 | 虚拟机直通设备的热迁移方法和装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101419558A (zh) * | 2008-11-13 | 2009-04-29 | 湖南大学 | Cuda图形子系统虚拟化方法 |
JP5427574B2 (ja) * | 2009-12-02 | 2014-02-26 | 株式会社日立製作所 | 仮想計算機の移動管理方法、前記移動管理方法を用いた計算機、前記移動管理方法を用いた仮想化機構および前記移動管理方法を用いた計算機システム |
CN102446119B (zh) * | 2010-10-13 | 2013-04-24 | 中标软件有限公司 | 基于Passthrough I/O的虚拟机动态迁移方法 |
KR102202258B1 (ko) * | 2016-09-05 | 2021-01-13 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 가상 머신을 위한 그래픽처리장치의 할당 |
CN106569876A (zh) * | 2016-11-11 | 2017-04-19 | 郑州云海信息技术有限公司 | 一种基于直接设备访问模型的虚拟机迁移的方法及装置 |
WO2019000358A1 (en) * | 2017-06-30 | 2019-01-03 | Intel Corporation | LIVE MIGRATING ASSISTANCE TECHNIQUES FOR VIRTUALIZING GRAPHICS PROCESSING UNIT |
-
2019
- 2019-03-25 CN CN201910227209.4A patent/CN111736943A/zh active Pending
-
2020
- 2020-03-13 EP EP20779006.4A patent/EP3951590A4/en active Pending
- 2020-03-13 WO PCT/CN2020/079127 patent/WO2020192448A1/zh unknown
-
2021
- 2021-09-24 US US17/485,071 patent/US20220012087A1/en active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110084973A1 (en) * | 2009-10-08 | 2011-04-14 | Tariq Masood | Saving, Transferring and Recreating GPU Context Information Across Heterogeneous GPUs During Hot Migration of a Virtual Machine |
US20110145471A1 (en) * | 2009-12-10 | 2011-06-16 | Ibm Corporation | Method for efficient guest operating system (os) migration over a network |
CN103812823A (zh) * | 2012-11-07 | 2014-05-21 | 华为技术有限公司 | 虚拟机热迁移时配置信息迁移的方法、设备及系统 |
CN106020929A (zh) * | 2016-05-13 | 2016-10-12 | 深圳市青葡萄科技有限公司 | 一种虚拟化环境下支持3d应用的系统和方法 |
CN106991007A (zh) * | 2017-03-31 | 2017-07-28 | 青岛大学 | 一种基于gpu片上的数据处理方法 |
CN108874506A (zh) * | 2018-06-08 | 2018-11-23 | 北京百度网讯科技有限公司 | 虚拟机直通设备的热迁移方法和装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023037330A1 (en) * | 2021-09-13 | 2023-03-16 | Hyperplane Ltd. | Techniques for clearing the internal state of a library |
Also Published As
Publication number | Publication date |
---|---|
EP3951590A4 (en) | 2022-12-21 |
CN111736943A (zh) | 2020-10-02 |
EP3951590A1 (en) | 2022-02-09 |
US20220012087A1 (en) | 2022-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020192448A1 (zh) | 虚拟机的迁移方法和系统 | |
US9448899B2 (en) | Method, apparatus and system for switching over virtual application two-node cluster in cloud environment | |
EP3223151B1 (en) | Hot-switching method and device for operating systems, and mobile terminal | |
US10768960B2 (en) | Method for affinity binding of interrupt of virtual network interface card, and computer device | |
US9158362B2 (en) | System and method for power reduction by sequestering at least one device or partition in a platform from operating system access | |
WO2015090197A1 (zh) | 资源处理方法、操作系统及设备 | |
US20110113426A1 (en) | Apparatuses for switching the running of a virtual machine between multiple computer devices belonging to the same computer platform and the associated switching methods | |
Kadav et al. | Live migration of direct-access devices | |
CN108064377B (zh) | 一种多系统共享内存的管理方法及装置 | |
US11210132B2 (en) | Virtual machine migration in virtualization environment having different virtualization systems | |
US20120131575A1 (en) | Device emulation in a virtualized computing environment | |
JP2022516486A (ja) | リソース管理方法と装置、電子デバイス、及び記録媒体 | |
KR20160033517A (ko) | 인터럽트 컨트롤러를 위한 하이브리드 가상화 방법 | |
CN113312143A (zh) | 云计算系统、命令处理方法及虚拟化仿真装置 | |
CN105468429A (zh) | 一种高效虚拟化集群管理方法和集群节点 | |
JP2015088014A (ja) | 計算機の制御方法及び計算機 | |
US20200133701A1 (en) | Software service intervention in a computing system | |
Kooburat et al. | The Best of Both Worlds with {On-Demand} Virtualization | |
CN110968392A (zh) | 一种升级虚拟化模拟器的方法和装置 | |
CN113626131B (zh) | 实现热迁移的方法、芯片、板卡和存储介质 | |
US20160253200A1 (en) | Server virtualization method of multi node system and apparatus thereof | |
Takano et al. | Cooperative VM migration for a virtualized HPC cluster with VMM-bypass I/O devices | |
CN109308232B (zh) | 虚拟机热迁移故障后回滚的方法、装置以及系统 | |
Sun et al. | Supporting Multiple OSes with OS Switching. | |
Takano et al. | Cooperative VM migration: a symbiotic virtualization mechanism by leveraging the guest OS knowledge |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 20779006 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
ENP | Entry into the national phase |
Ref document number: 2020779006 Country of ref document: EP Effective date: 20211025 |