掌桥专利:专业的专利平台
掌桥专利
首页

虚拟机调度方法、装置、GPU及电子设备

文献发布时间:2023-06-19 18:46:07


虚拟机调度方法、装置、GPU及电子设备

技术领域

本申请涉及虚拟化技术领域,具体而言,涉及一种虚拟机调度方法、装置、GPU及电子设备。

背景技术

基于MDEV的GPU(Graphics Processing Unit)虚拟化技术是通过软件虚拟出多个VGPU(虚拟化GPU),供虚拟机使用。运行于Hypervisor(虚拟机监视器)上的VGPU调度器采取特定的调度策略,让每个虚拟机轮流占用物理GPU的计算资源,实现多个虚拟机“同时”使用物理GPU的效果。

但是受GPU的硬件架构的限制,目前的VGPU调度方案很难保证VGPU之间的“公平”性。图1展示了一个常见的支持两个虚拟机的GPU架构:GPU上的指令处理器负责接收软件下发的计算任务,并放到运算单元去执行。指令处理器多采用硬件ring(环)的方式和软件交互,硬件ring,本质上是硬件上提供的寄存器或寄存器组,也可以理解为是一段位于内存中的硬件实现的循环buffer(缓冲器),软件可以将多个计算任务打包并以特定的指令格式放入硬件ring中,等待GPU依次执行。Hypervisor上的VGPU管理器以软件的方式,虚拟出两个VGPU,供两个虚拟机VM1和VM2使用。Guest OS(虚拟机里的操作系统)中的GPU driver(驱动)会为VGPU创建虚拟的vring(虚拟环形缓冲器),用于存放虚拟中的计算任务。调度时,Hypervisor上的VGPU调度器采用时间片轮转法,依次从vring中取出指令并放入硬件ring中,等待物理GPU的执行。假设时间片为10ms,那么理论上每个VGPU都有5ms的运行时间,则预估5ms的运行时间可运行的指令数量,假设为8个指令,从而进行如下调度:

1).VGPU调度器选中VGPU1,于是从VGPU1的vring里取出8个指令放到硬件ring中;

2).5ms超时后,VGPU调度器切换到VGPU2,然后从VGPU2的vring中拿出8个指令放到硬件ring中;

3).5ms超时后,重复执行步骤1),直到所有VGPU的vring都变为空。

这种看似“公平”调度其实并不公平,主要存在以下问题:

1).每个指令计算量有大有小,消耗的GPU时间并不固定,调度器很难准确估算出每个指令的运行时间,很可能出现VGPU1的8个指令消耗了8ms,而VGPU2的8个指令才用了2ms就执行完了的情况,公平性难以保证。

2).VGPU1和VGPU2的指令是交替出现在硬件ring中的,假如在运行VGPU1的指令过程中出现了错误,很难直接跳转到VGPU2的指令去执行,因为硬件ring中的指令通常是顺序执行的。

3).调度器需要从vring中读取指令并重新写入物理硬件ring中,多了一次内存拷贝操作,影响系统性能。

发明内容

本申请实施例的目的在于提供一种虚拟机调度方法、装置、GPU及电子设备,用以在一定程度上解决上述问题。

本申请实施例提供了一种虚拟机调度方法,应用于具有GPU的电子设备中,所述GPU包括指令处理器以及多个缓冲器,每个缓冲器用于存储具有对应关系的虚拟机的指令;所述方法包括:在当前虚拟机的使用时长结束时,将下一虚拟机对应的缓冲器切换为所述指令处理器的指令源,以使所述指令处理器处理所述下一虚拟机对应的缓冲器中的指令。

在上述实现过程中,通过采用多个缓冲器,并在缓冲器和虚拟机之间设置对应关系,从而在当前虚拟机的使用时长结束时,将下一虚拟机对应的缓冲器切换为指令处理器的指令源,使得指令处理器处理下一虚拟机对应的缓冲器中的指令。这样,在进行对应不同缓冲器的虚拟机之间的切换时,直接进行缓冲器的切换即可。而由于是直接进行的缓冲器之间的切换,因此在进行对应不同缓冲器的虚拟机之间的切换时,可以实现在当前虚拟机的使用时长结束时,就使得指令处理器获取到下一虚拟机的指令进行处理,从而更为准确地实现基于使用时长的虚拟机运行切换,提高公平性。同时,由于是直接进行的缓冲器切换,因此即使当前虚拟机的指令在运行过程中出现了错误,其也不会影响到指令处理器对于下一虚拟机的指令的获取,从而不会影响到对于下一虚拟机的指令的执行。此外,由于虚拟机和缓冲器具有对应关系,因此当一个虚拟机对应一个或多个缓冲器时,即当一个虚拟机可以独占一个或多个缓冲器时,虚拟机的指令可以直接存放于对应的缓冲器中而不会造成各虚拟机之间的指令执行顺序的混乱,可以无需再为虚拟机设置vring,从而进行虚拟机切换时,也就可以不再需要从vring中读取指令并重新写入缓冲器中的过程,从而可以减少一次内存拷贝操作,提高系统性能。

进一步地,每个所述缓冲器与每个所述虚拟机一一对应。

在上述实现方式中,通过设置每个缓冲器与每个虚拟机一一对应,可以使得每一个虚拟机独占一个缓冲器,从而实现在进行虚拟机切换时,仅需进行缓冲器的切换即可,从而可以有效提高系统的公平性,且使得虚拟机的切换不会受到当前虚拟机的指令执行错误的影响。此外,在上述实现方式下,虚拟机的指令可以直接存放于对应的缓冲器中,无需再为虚拟机设置vring,从而进行虚拟机切换时,可以减少一次内存拷贝操作,提高系统性能。

进一步地,每个所述缓冲器对应一个所述虚拟机,且每个所述虚拟机对应一个或多个不同的所述缓冲器。

在上述实现方式中,通过设置每个缓冲器仅对应一个虚拟机,且每个虚拟机对应一个或多个不同的缓冲器,这样就使得一个虚拟机可以独占一个或多个缓冲器,从而在进行虚拟机切换时,仅需进行缓冲器的切换即可,可以有效提高系统的公平性,且使得虚拟机的切换不会受到当前虚拟机的指令执行错误的影响。此外,在上述实现方式下,虚拟机的指令可以直接存放于对应的缓冲器中,无需再为虚拟机设置vring,从而进行虚拟机切换时,可以减少一次内存拷贝操作,提高系统性能。

进一步地,所述将下一虚拟机对应的缓冲器切换为所述指令处理器的指令源,以使所述指令处理器处理所述下一虚拟机对应的缓冲器中的指令,包括:将所述下一虚拟机对应的所有缓冲器全部切换为所述指令处理器的指令源,以使所述指令处理器从所述下一虚拟机对应的所有缓冲器中取出指令并处理。

在上述实现方式中,由于一个虚拟机独占一个或多个缓冲器,从而通过将下一虚拟机对应的所有缓冲器全部切换为指令处理器的指令源的方式,可以确保进行了虚拟机切换后,指令处理器可以完整地获取到切换的下一虚拟机的所有指令进行处理,从而保证虚拟机指令的运行完整性。

进一步地,每个所述虚拟机对应一个所述缓冲器,且每个所述缓冲器对应一个或多个不同的所述虚拟机。

在上述实现方式中,通过设置每个虚拟机对应一个缓冲器,且每个缓冲器对应一个或多个不同的虚拟机,这样即可以实现多个虚拟机对于一个缓冲器的复用,从而可以使得电子设备能够支持更多的虚拟机。

进一步地,在将下一虚拟机对应的缓冲器切换为所述指令处理器的指令源之前,所述方法还包括:确定所述下一虚拟机对应的缓冲器和所述当前虚拟机对应的缓冲器为不同缓冲器。

在上述实现过程中,在下一虚拟机对应的缓冲器和当前虚拟机对应的缓冲器为不同缓冲器时,仍旧进行缓冲器的切换,这样相比与现有技术,仍能够在公平性和可切换性上具有一定的优势。具体而言,在进行对应不同缓冲器的虚拟机之间的切换时,直接进行缓冲器的切换,此时可以实现在当前虚拟机的使用时长结束时,就使得指令处理器获取到下一虚拟机的指令进行处理,同时也不会受到当前虚拟机的指令执行错误的影响。

进一步地,所述方法还包括:若所述下一虚拟机对应的缓冲器和所述当前虚拟机对应的缓冲器为同一缓冲器,则保持该缓冲器为所述指令处理器的指令源,并取出所述下一虚拟机对应的n个待执行的指令放入所述下一虚拟机对应的缓冲器中。

在上述实现方式中,对于对应同一缓冲器的虚拟机之间的切换,通过取出下一虚拟机对应的n个待执行的指令放入下一虚拟机对应的缓冲器中,从而可以保证相关虚拟机执行的指令数的一致,从而尽可能的保证虚拟机切换的公平性。

本申请实施例还提供了一种虚拟机调度装置,包括:应用于具有GPU的电子设备中,所述GPU包括指令处理器以及多个缓冲器,每个缓冲器用于存储具有对应关系的虚拟机的指令;所述装置包括:调度模块,用于在当前虚拟机的使用时长结束时,将下一虚拟机对应的缓冲器切换为所述指令处理器的指令源,以使所述指令处理器处理所述下一虚拟机对应的缓冲器中的指令。

本申请实施例还提供了一种GPU,包括指令处理器以及多个缓冲器,每个缓冲器用于存储具有对应关系的虚拟机的指令;所述指令处理器被配置为,在当前虚拟机的使用时长结束时,将下一虚拟机对应的缓冲器切换为所述指令处理器的指令源,处理所述下一虚拟机对应的缓冲器中的指令。

本申请实施例还提供了一种电子设备,包括上述GPU。

本申请实施例中还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述任一种的虚拟机调度方法。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为相关技术中的GPU架构示意图;

图2为本申请实施例提供的一种GPU架构示意图;

图3为本申请实施例提供的一种虚拟机调度方法的流程示意图;

图4为本申请实施例提供的一种虚拟机调度装置的结构示意图;

图5为本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。

为了在一定程度上解决现有的虚拟机调度机制所存在的公平性差、指令切换性差、以及进行虚拟机切换时,需要从vring中读取指令并重新写入物理硬件ring中,多了一次内存拷贝操作,影响系统性能的问题,本申请实施例中提供了一种新的GPU以及基于该GPU的虚拟机调度方法。

可以参见图2所示,图2为本申请实施例中提供的一种具有本申请实施例所提供的GPU的电子设备的结构示意图,其包括本申请实施例所提供的GPU,以及用于进行调度的上层Hypervisor。

其中,上层Hypervisor内具有VGPU调度器,VGPU调度器可以通过软件实现,通过布设于电子设备内的诸如CPU(Central Processing Unit,中央处理器)、MCU(Microcontroller Unit,微控制单元)等具有程序运行能力的电子部件中,进行虚拟机调度,执行本申请实施例所提供的虚拟机调度方法。

本申请实施例所提供的GPU包括指令处理器以及多个缓冲器。其中,缓冲器的数量可以根据GPU设计时的应用场景中所需支持的虚拟机数量进行设置。例如,假设GPU被设计为主要应用于4个虚拟机的场景中,则缓冲器的数量可以设置为4个或4个以上。

在本申请实施例中,指令处理器与多个缓冲器连接,每个缓冲器均可以作为该指令处理器的指令源,以为该指令处理器提供指令进行处理。

在本申请实施例中,在电子设备中创建虚拟机后,可以为各虚拟机创建与缓冲器的对应关系,从而可以将虚拟机的相关指令存储至对应的缓冲器中。也即,每个缓冲器用于存储具有对应关系的虚拟机的指令。

可以理解,在本申请实施例中,缓冲器可以采用环形缓冲器(即硬件ring)实现,也可以采用非环形的缓冲器实现,对此本申请实施例不作限制。此外,缓冲器可以采用FIFO(First In First Out,先入先出)缓冲器实现,也可以采用随机高速缓冲器实现,对此本申请实施例也不作限制。

还可以理解,在本申请实施例中,指令处理器可以是GPU中的计算单元,用以实现对于指令的执行。在本申请实施例中,指令处理器被配置为在当前虚拟机的使用时长结束时,以下一虚拟机对应的缓冲器切换为指令处理器的指令源,处理下一虚拟机对应的缓冲器中的指令。

还可以理解,本申请实施例中所述的虚拟机切换是指,将输入至指令处理器中的指令,从属于一个虚拟机的指令切换为属于另一个虚拟机的指令。

下面,请参见图3所示,图3示出了本申请实施例提供的虚拟机调度方法,包括:

S301:在当前虚拟机的使用时长结束时,将下一虚拟机对应的缓冲器切换为指令处理器的指令源,以使指令处理器处理下一虚拟机对应的缓冲器中的指令。

在本申请实施例中,虚拟机的使用时长可以根据需求进行设置,例如,可以设置为5ms、10ms、50ms、100ms等,具体取值本申请实施例不作限制。

在本申请实施例中,为了实现将下一虚拟机对应的缓冲器切换为指令处理器的指令源的操作,VGPU调度器可以通过向指令处理器下发缓冲器切换命令的方式,使得指令处理器将获取指令的地址切换为下一虚拟机对应的缓冲器的地址,实现指令处理器的指令源的切换。示例性的,假设当前指令处理器是从缓冲器硬件ring1中获取的指令,下一虚拟机对应的缓冲器为硬件ring0,则在当前虚拟机的使用时长结束时,VGPU调度器可以向指令处理器下发switch to ring0命令,指令处理器接收到该命令后,即从缓冲器硬件ring0中获取指令并执行。

在本申请实施例中,若GPU支持上下文切换(context switch)功能,则在当前虚拟机的使用时长结束时,指令处理器可以立即保护现场,然后将指令处理器的指令源切换为下一虚拟机对应的缓冲器。这样,可以实现使用时长结束即切换,从而可以保证公平性。

在本申请实施例中,若GPU不支持上下文切换功能,则在当前虚拟机的使用时长结束时,指令处理器无法保护现场,为了避免出现运行错误,指令处理器可以在将当前正在处理的指令处理完毕后,再将指令处理器的指令源切换为下一虚拟机对应的缓冲器。此时,为了进一步兼顾公平性,可以引入惩罚机制。也即,可以记录当前虚拟机多耗用的时长,然后将该时长加入到其他虚拟机的使用时长中。或者,可以记录当前虚拟机多耗用的时长,然后在该虚拟机的下一次使用过程中,从使用时长中扣除该时长。

值得注意的是,在本申请实施例的一种可选实施方式中,每个缓冲器可以与每个虚拟机一一对应。

可以理解,本可选实施方式中,电子设备可创建的虚拟机数量等于缓冲器数量,从而电子设备的虚拟机支持能力受GPU能力限制,不能进行扩展。但是,在该可选实施方式中,每一个虚拟机可以独占一个缓冲器,从而实现在进行虚拟机切换时,仅需进行缓冲器的切换即可,从而可以有效提高系统的公平性,且使得虚拟机的切换不会受到当前虚拟机的指令执行错误的影响。此外,本可选实施方式中,虚拟机的指令可以直接存放于对应的缓冲器中,无需再为虚拟机设置vring,从而进行虚拟机切换时,可以减少一次内存拷贝操作,提高系统性能。

示例性的,假设GPU中设置有4个缓冲器,分别记为缓冲器1、缓冲器2、缓冲器3和缓冲器4。假设电子设备中创建了3个虚拟机,分别记为虚拟机1、虚拟机2和虚拟机3。那么在上述可选实施方式中,则可以为虚拟机1、虚拟机2和虚拟机3分别分配一个缓冲器,从而保留一个缓冲器空闲。例如,可以为虚拟机1分配缓冲器1,为虚拟机2分配缓冲器2,为虚拟机3分配缓冲器3,此时缓冲器4空闲,电子设备还可以再创建一个虚拟机。虚拟机运行时,虚拟机1的指令直接存入缓冲器1中,虚拟机2的指令直接存入缓冲器2中,虚拟机3的指令直接存入缓冲器3中,不再需要为虚拟机1、虚拟机2和虚拟机3分别创建vring。切换时,直接进行缓冲器的切换。例如,假设当前运行的虚拟机为虚拟机1,假设虚拟机1的使用时长结束,假设下一虚拟机为虚拟机2,则VGPU调度器可以向指令处理器下发切换至缓冲器2的命令,指令处理器接收到该命令后,即从缓冲器2中获取指令并执行,完成虚拟机的切换。该过程不会受到缓冲器1中的指令是否执行错误的影响,也不会受到本轮执行了多少个虚拟机1的指令的影响,公平性和可切换性更高。

在本申请实施例的另一种可选实施方式中,每个缓冲器对应一个虚拟机,且每个虚拟机对应一个或多个不同的缓冲器。

可以理解,本可选实施方式可以允许一个虚拟机独占一个或多个缓冲器,从而在虚拟机少于缓冲器数量时,可以更充分地利用GPU中的缓冲器资源。还可以理解,与上一可选实施方式类似,本可选实施方式中,电子设备可创建的虚拟机数量等于缓冲器数量,从而电子设备的虚拟机支持能力受GPU能力限制,不能进行扩展。但是,在本可选实施方式中,每一个虚拟机可以独占一个或多个缓冲器,从而在进行虚拟机切换时,也仅需进行缓冲器的切换即可,从而可以有效提高系统的公平性,且使得虚拟机的切换不会受到当前虚拟机的指令执行错误的影响。此外,本可选实施方式中,虚拟机的指令同样可以直接存放于对应的缓冲器中,无需再为虚拟机设置vring,从而进行虚拟机切换时,可以减少一次内存拷贝操作,提高系统性能。

在本可选实施方式中,在将下一虚拟机对应的缓冲器切换为指令处理器的指令源,以使指令处理器处理所述下一虚拟机对应的缓冲器中的指令时,可以将下一虚拟机对应的所有缓冲器全部切换为所述指令处理器的指令源,以使指令处理器从下一虚拟机对应的所有缓冲器中取出指令并处理。这样,可以确保进行了虚拟机切换后,指令处理器可以完整地获取到切换的下一虚拟机的所有指令进行处理,从而保证虚拟机指令的运行完整性。

在本可选实施方式中,指令处理器可以按照各指令之间的先后执行顺序从下一虚拟机对应的各缓冲器中取出指令并处理。在各指令之间不存在先后执行顺序的情况下,可以随机从下一虚拟机对应的各缓冲器中取出指令并处理。

示例性的,假设GPU中设置有4个缓冲器,分别记为缓冲器1、缓冲器2、缓冲器3和缓冲器4。假设电子设备中创建了2个虚拟机,分别记为虚拟机1和虚拟机2。那么在上述可选实施方式中,则可以为虚拟机1和虚拟机2分别分配两个缓冲器。例如,可以为虚拟机1分配缓冲器1和缓冲器2,为虚拟机2分配缓冲器3和缓冲器4。虚拟机运行时,虚拟机1的指令直接存入缓冲器1或缓冲器2中,虚拟机2的指令直接存入缓冲器3或缓冲器4中,不再需要为虚拟机1和虚拟机2分别创建vring。切换时,直接进行缓冲器的切换。例如,假设当前运行的虚拟机为虚拟机1,假设虚拟机1的使用时长结束,假设下一虚拟机为虚拟机2,则VGPU调度器可以向指令处理器下发切换至缓冲器3和缓冲器4的命令,指令处理器接收到该命令后,即从缓冲器3和缓冲器4中获取指令并执行,完成虚拟机的切换。该过程不会受到缓冲器1和缓冲器2中的指令是否执行错误的影响,也不会受到本轮执行了多少个虚拟机1的指令的影响,公平性和可切换性更高。

在本可选实施方式中,当电子设备创建了新的虚拟机后,则可以从对应有多个缓冲器的虚拟机中,取出一个或多个缓冲器分配给新的虚拟机。分配前,可以将该虚拟机的指令从这些缓冲器中取出并存入保留的那一个缓冲器中。仍以上例为例,假设电子设备创建了虚拟机3,则可以将缓冲器2分配给虚拟机3。分配前,将缓冲器2中存储的指令转存至缓冲器1中。

在本申请实施例的又一种可选实施方式中,每个虚拟机可以对应一个缓冲器,且每个缓冲器可以对应一个或多个不同的虚拟机。

可以理解,本可选实施方式可以允许多个虚拟机共享一个缓冲器,从而在虚拟机多于缓冲器数量时,可以利用现有的GPU资源,实现对于多个虚拟机的支持。也即通过本可选实施方式,电子设备可以支持超过其设计能力的虚拟机数量,从而使得电子设备具有强大的可扩展能力。

在本可选实施方式中,在将下一虚拟机对应的缓冲器切换为指令处理器的指令源之前,先判断下一虚拟机对应的缓冲器和当前虚拟机对应的缓冲器是否为不同缓冲器。

若为不同缓冲器,则可以按照图3方式,直接进行缓冲器的切换。

若为相同缓冲器,则可以保持该缓冲器为指令处理器的指令源,并取出下一虚拟机对应的n个待执行的指令放入下一虚拟机对应的缓冲器中。

示例性的,VGPU调度器可以为同一个缓冲器对应的多个虚拟机在内存中创建虚拟缓冲器(例如vring),然后将这些虚拟机的指令先存储至对应的虚拟缓冲器中。在进行切换时,若下一虚拟机对应的缓冲器和当前虚拟机对应的缓冲器为相同缓冲器,则可以从下一虚拟机对应的虚拟缓冲器中取出n个指令放入该缓冲器中,实现虚拟机切换。

可以理解,n为根据虚拟机的使用时长设定的常数值,例如可以设置为8。

还可以理解,本可选实施方式在可以实现多个虚拟机对于一个缓冲器的复用,从而可以使得电子设备能够支持更多的虚拟机的同时,相比与现有技术,仍能够在公平性和可切换性上具有一定的优势。具体而言,在进行对应不同缓冲器的虚拟机之间的切换时,直接进行缓冲器的切换,此时可以实现在当前虚拟机的使用时长结束时,就使得指令处理器获取到下一虚拟机的指令进行处理,同时也不会受到当前虚拟机的指令执行错误的影响。

示例性的,假设GPU中设置有4个缓冲器,分别记为缓冲器1、缓冲器2、缓冲器3和缓冲器4。假设电子设备中创建了5个虚拟机,分别记为虚拟机1、虚拟机2、虚拟机3、虚拟机4和虚拟机5。那么在上述可选实施方式中,则可以为虚拟机1、虚拟机2、虚拟机3分别分配1个缓冲器,为虚拟机4和虚拟机5共同分配一个缓冲器。例如,可以为虚拟机1分配缓冲器1,为虚拟机2分配缓冲器2,为虚拟机3分配缓冲器3,为虚拟机4和虚拟机5分配缓冲器4。并为虚拟机4和虚拟机5创建vring4和vring5。

虚拟机运行时,虚拟机1的指令直接存入缓冲器1中,虚拟机2的指令直接存入缓冲器2中,虚拟机3的指令直接存入缓冲器3中,不再需要为虚拟机1、虚拟机2、虚拟机3分别创建vring。虚拟机4的指令则存入vring4中,虚拟机5的指令则存入vring5中。

假设虚拟机切换顺序依次为虚拟机1、虚拟机2、虚拟机3、虚拟机4、虚拟机5。切换时:

例如,假设当前运行的虚拟机为虚拟机1,假设虚拟机1的使用时长结束,则VGPU调度器确定虚拟机2和虚拟机1对应的缓冲器不同,可以向指令处理器下发切换至缓冲器2的命令,指令处理器接收到该命令后,即从缓冲器2中获取指令并执行,完成虚拟机的切换。

假设虚拟机2的使用时长结束,则VGPU调度器确定虚拟机3和虚拟机2对应的缓冲器不同,可以向指令处理器下发切换至缓冲器3的命令,指令处理器接收到该命令后,即从缓冲器3中获取指令并执行,完成虚拟机的切换。

假设虚拟机3的使用时长结束,则VGPU调度器确定虚拟机4和虚拟机3对应的缓冲器不同,可以向指令处理器下发切换至缓冲器4的命令,同时由于虚拟机4具有vring4,则VGPU调度器从vring4中取出n条指令放入缓冲器4中。指令处理器接收到切换至缓冲器4的命令后,即从缓冲器4中获取指令并执行,完成虚拟机的切换。

假设虚拟机4的使用时长结束,则VGPU调度器确定虚拟机5和虚拟机4对应的缓冲器相同,此时不向指令处理器下发缓冲器切换命令,VGPU调度器从vring5中取出n条指令放入缓冲器4中。指令处理器持续从缓冲器4中获取指令并执行。

假设虚拟机5的使用时长结束,则VGPU调度器确定虚拟机1和虚拟机5对应的缓冲器不同,此时向指令处理器下发切换至缓冲器1的命令,指令处理器接收到该命令后,即从缓冲器1中获取指令并执行,完成虚拟机的切换。

可以理解,在本可选实施方式中,在电子设备内创建的虚拟机数量小于缓存器数量时,可以采用前述缓冲器与每个虚拟机一一对应的可选实施方式,或者可以采用前述一个虚拟机可以独占一个或多个缓冲器的可选实施方式进行实施,以达到在可扩展支持的虚拟机数量的同时,具有更优的实施效果。

本申请实施例所提供的虚拟机调度方法,通过采用多个缓冲器,并在缓冲器和虚拟机之间设置对应关系,从而在当前虚拟机的使用时长结束时,将下一虚拟机对应的缓冲器切换为指令处理器的指令源,使得指令处理器处理下一虚拟机对应的缓冲器中的指令。这样,在进行对应不同缓冲器的虚拟机之间的切换时,直接进行缓冲器的切换即可。而由于是直接进行的缓冲器之间的切换,因此在进行对应不同缓冲器的虚拟机之间的切换时,可以实现在当前虚拟机的使用时长结束时,就使得指令处理器获取到下一虚拟机的指令进行处理,从而更为准确地实现基于使用时长的虚拟机运行切换,提高公平性。

同时,由于是直接进行的缓冲器切换,因此即使当前虚拟机的指令在运行过程中出现了错误,其也不会影响到指令处理器对于下一虚拟机的指令的获取,从而不会影响到对于下一虚拟机的指令的执行。

此外,由于虚拟机和缓冲器具有对应关系,因此当一个虚拟机对应一个或多个缓冲器时,即当一个虚拟机可以独占一个或多个缓冲器时,虚拟机的指令可以直接存放于对应的缓冲器中而不会造成各虚拟机之间的指令执行顺序的混乱,可以无需再为虚拟机设置vring,从而进行虚拟机切换时,也就可以不再需要从vring中读取指令并重新写入缓冲器中的过程,从而可以减少一次内存拷贝操作,提高系统性能。

此外,当每个缓冲器与每个虚拟机一一对应,或当一个虚拟机可以独占一个或多个缓冲器时,整个调度策略可以仅涉及缓冲器的切换,从而VGPU调度器的设计可以变得简单、精确。

基于同一发明构思,本申请实施例中还提供了一种虚拟机调度装置400。请参阅图4所示,图4示出了采用图3所示的方法的虚拟机调度装置。应理解,装置400具体的功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。装置400包括至少一个能以软件或固件的形式存储于存储器中或固化在装置400的操作系统中的软件功能模块。具体地:

参见图4所示,装置400应用于具有GPU的电子设备中,GPU包括指令处理器以及多个缓冲器,每个缓冲器用于存储具有对应关系的虚拟机的指令。装置400包括:调度模块401。其中:

调度模块401用于在当前虚拟机的使用时长结束时,将下一虚拟机对应的缓冲器切换为所述指令处理器的指令源,以使所述指令处理器处理所述下一虚拟机对应的缓冲器中的指令。

在本申请实施例的一种可行实施方式中,每个所述缓冲器与每个所述虚拟机一一对应。

在本申请实施例的另一种可行实施方式中,每个所述缓冲器对应一个所述虚拟机,且每个所述虚拟机对应一个或多个不同的所述缓冲器。

在上述另一种可行实施方式中,调度模块401具体用于,将所述下一虚拟机对应的所有缓冲器全部切换为所述指令处理器的指令源,以使所述指令处理器从所述下一虚拟机对应的所有缓冲器中取出指令并处理。

在本申请实施例的又一种可行实施方式中,每个所述虚拟机对应一个所述缓冲器,且每个所述缓冲器对应一个或多个不同的所述虚拟机。

在上述又一种可行实施方式中,调度模块401还用于,在将下一虚拟机对应的缓冲器切换为所述指令处理器的指令源之前,确定所述下一虚拟机对应的缓冲器和所述当前虚拟机对应的缓冲器为不同缓冲器。

在上述又一种可行实施方式中,调度模块401还用于,若所述下一虚拟机对应的缓冲器和所述当前虚拟机对应的缓冲器为同一缓冲器,则保持该缓冲器为所述指令处理器的指令源,并取出所述下一虚拟机对应的n个待执行的指令放入所述下一虚拟机对应的缓冲器中。

需要理解的是,出于描述简洁的考量,部分方法实施例中描述过的内容,在装置实施例中不再赘述。

基于同一发明构思,本实施例还提供了一种电子设备,该电子设备包括本申请实施例提供的GPU。

可以理解,参见图5所示,电子设备中还可以包括处理器和存储器。

其中:

存储器中可以存储有用于实现VGPU调度器的相关程序,以及使得VGPU调度器实现上述虚拟机调度方法的相关程序。处理器用于从存储器中获取程序并运行,从而承载前述的VGPU调度器,并实现上述虚拟机调度方法。

可以理解,本申请实施例中的处理器可以是处理器核心或处理器芯片,或者是可进行程序配置与运行的其他电路。而存储器702可以是RAM(Random Access Memory,随机存取存储器)、ROM(Read-Only Memory,只读存储器)、闪存等,但不作为限制。

还可以理解,图5所示的结构仅为示意,电子设备还可包括比图5中所示更多或者更少的组件,或者具有与图5所示不同的配置。例如,还可以具有内部通信总线,用于实现处理器和存储器之间的通信;又例如,还可以具有外部通信接口,例如USB(Universal SerialBus,通用串行总线)接口、CAN(Controller Area Network,控制器局域网络)总线接口等;又例如,还可以具有显示屏等信息显示部件,但不作为限制。

基于同一发明构思,本实施例还提供了一种计算机可读存储介质,如软盘、光盘、硬盘、闪存、U盘、SD(Secure Digital Memory Card,安全数码卡)卡、MMC(MultimediaCard,多媒体卡)卡等,在该计算机可读存储介质中存储有实现上述各个步骤的一个或者多个程序,这一个或者多个程序可被一个或者多个处理器执行,以实现上述虚拟机调度方法。在此不再赘述。

在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。

在本文中,多个是指两个或两个以上。

以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

技术分类

06120115686349