一种多虚拟处理器间的同步调度方法及其调度系统与流程

文档序号:12469701阅读:207来源:国知局
一种多虚拟处理器间的同步调度方法及其调度系统与流程

本发明涉及虚拟机技术领域,尤其涉及一种虚拟处理器间的同步调度方法及其基于该同步调度方法的一种多虚拟处理器间的同步调度系统。



背景技术:

虚拟机管理器(VMM)主要包括KVM、XEN、VMware、Hyper-V,并通过虚拟化技术在物理机上虚拟出多个虚拟机。虚拟处理器(VCPU)是虚拟机的一个核心组件,同时也是虚拟机管理器实现调度的基础单元,其类似于传统操作系统(OS)的系统调度进程。

虚拟处理器受到虚拟机管理器的控制,也就是虚拟机看到的虚拟处理器可能不是同时运行。真实物理环境下,操作系统看到的物理处理器(PCPU)总是处于可运行状态,这样导致虚拟化环境和真实物理环境不一致。这种场景进而会影响虚拟机内部的任务,虚拟机内部的程序比传统物理环境下多了一层调度。虚拟处理器如果没有运行,那么它上面的任务队列都会被挂起,并且虚拟机的操作系统不能控制。此情况下,对于并行任务运行和持有锁任务的场景,虚拟机内部是解决不了他们并行和不被挂起的需求。

当前虚拟机管理器更多的考虑到了每个虚拟处理器的公平性,忽略了它们之间的关系,尤其是同一个虚拟机内部多个虚拟处理器同步运行的问题。



技术实现要素:

本发明的目的在于公开一种多虚拟处理器间的同步调度方法,以及基于该方法的一种多虚拟处理器间的同步调度系统,用以实现对位于不同物理处理器中的多个虚拟处理器之间的同步调度,提高对并发操作的执行效果。

为实现上述第一个发明目的,本发明提供了一种多虚拟处理器间的同步调度方法,包括以下步骤:

S1、创建至少包括一个虚拟处理器的若干虚拟处理器组;

S2、为物理处理器创建调度队列;

S3、以时间片为调度周期,根据物理处理器的负载以及虚拟处理器组的优先级,以确定是否将虚拟处理器调入调度队列,并通过物理处理器上所运行的调度器执行将虚拟处理器调入调度队列的操作;

S4、确定被分配物理处理器的虚拟处理器组并更新调度队列。

作为本发明的进一步改进,所述虚拟处理器组以SMP虚拟机为单位被调度器所创建。

作为本发明的进一步改进,所述物理处理器上所运行的调度器基于物理处理器的空闲资源剩余量,优先将处于空闲状态的物理处理器调用给在同一调度队列中发生位置变化的虚拟处理器。

作为本发明的进一步改进,还包括根据物理处理器空闲资源剩余量,通过调度器抢占优先级较低的虚拟处理器所关联的物理处理器并调用给在同一调度队列中发生位置变化的虚拟处理器。

作为本发明的进一步改进,当存在两个空闲资源剩余量相等的物理处理器时,则以虚拟处理器组内的虚拟处理器数量较少组的作为优先级较低的虚拟处理器组,并通过调度器抢占优先级较低的虚拟处理器所关联的物理处理器并调用给在同一调度队列中发生位置变化的虚拟处理器。

作为本发明的进一步改进,当物理处理器所关联的调度队列中的所包含的虚拟处理器的数量相同,则以物理处理器id较大的作为优先级较低的虚拟处理器组,并通过调度器抢占优先级较低的虚拟处理器所关联的物理处理器并调用给在同一调度队列中发生位置变化的虚拟处理器。

作为本发明的进一步改进,在步骤S1还包括对虚拟处理器组的初始化操作,以将虚拟处理器组中的虚拟处理器型号、虚拟处理器数量、socket属性、numa node属性、vm-id属性行进标示并记录于虚拟处理器组中。

作为本发明的进一步改进,所述调度器包括全局调度器、抢占式调度器或者混合式调度器。

为实现上述第二个发明目的,本发明还提供了一种多虚拟处理器间的同步调度系统,包括:

初始化模块、物理处理器资源检测模块、虚拟处理器调度运行模块、调度队列管理模块;其中,

初始化模块,用以创建至少包括一个虚拟处理器的若干虚拟处理器组,并为物理处理器创建调度队列;

物理处理器资源检测模块,用于检测物理处理器的负载;

虚拟处理器调度运行模块,以时间片为调度周期,根据物理处理器的负载以及虚拟处理器组的优先级,以确定是否将虚拟处理器调入调度队列,并通过物理处理器上所运行的调度器执行将虚拟处理器调入调度队列的操作;

调度队列管理模块,确定被分配物理处理器的虚拟处理器组并更新调度队列。

作为本发明的进一步改进,还包括物理处理器资源仲裁模块,其根据虚拟处理器组的需求,准备相应数目的物理处理器;

若物理处理器个数不够,则抢占优先级较低的虚拟处理器所关联的物理处理器;

若同时存在两个或两个以上优先级相等的虚拟处理器组,则以虚拟处理器组内的虚拟处理器数量较少组的作为优先级较低的虚拟处理器组,并通过调度器抢占优先级较低的虚拟处理器所关联的物理处理器并调用给在同一调度队列中发生位置变化的虚拟处理器;

若物理处理器所关联的调度队列中的所包含的虚拟处理器的数量相同,则以物理处理器id较大的作为优先级较低的虚拟处理器组,并通过调度器抢占优先级较低的虚拟处理器所关联的物理处理器并调用给在同一调度队列中发生位置变化的虚拟处理器。

与现有技术相比,本发明的有益效果是:在本发明中,可根据物理处理器的负载以及虚拟处理器组的优先级,以对位于同一调度队列中的不同虚拟处理器重新排序,以确保同一虚拟处理器组中的多个虚拟处理器保持同步,从而实现了对位于不同物理处理器(PCPU)中的多个虚拟处理器(VCPU)之间的同步调度,提高了对并发操作的执行效果。

附图说明

图1为本发明一种多虚拟处理器间的同步调度方法流程图;

图2为一台主机安装四个物理处理器的场景图;

图3为图2中的四个物理处理器中所形成的四个调度队列中的多个虚拟处理器在同步调度前的示意图;

图4为图2中的四个物理处理器中所形成的四个调度队列中的多个虚拟处理器在同步调度后的示意图;

图5为本发明一种多虚拟处理器的同步调度方法的程序执行流程图;

图6为本发明一种多虚拟处理器间的调度系统在一种具体实施方式中的结构图;

图7为本发明一种多虚拟处理器间的调度系统在另一种具体实施方式中的结构图。

具体实施方式

下面结合附图所示的各实施方式对本发明进行详细说明,但应当说明的是,这些实施方式并非对本发明的限制,本领域普通技术人员根据这些实施方式所作的功能、方法、或者结构上的等效变换或替代,均属于本发明的保护范围之内。

本说明书中所指的物理处理器包括安装于物理机主板上的物理中央处理器(PCPU),也可为具有逻辑和/或指令运算功能的ASIC(Application Specific Integrated Circuit)芯片,也可为FPGA(Field-Programmable Gate Array)芯片。

本说明书中所公开的一个或者多个实施例所揭示的方法、装置、系统或者应用均可以单独或者组合的方式展现。所述模块或者单元的划分,仅仅是计算机内部的一种逻辑功能的划分,实际上也可为其他的划分方式,例如多个单元或者模块或者组件可以结合或者集成或者固化到另一个计算机系统或者计算机装置中。

其中,计算机系统或者计算机装置可以为本地物理计算机,包括但不限于台式机、膝上型计算机、服务器,也可被配置为分布式计算系统或者各种类型的云计算主机或者虚拟计算机集群服务器。

本说明书的具体实施方式中,物理处理器以物理形态的中央处理器(Processor)为例示范性说明,PCPU相当于物理处理器,但不能因此对物理处理器构成任何限定。在下文中,PCPU与物理处理器具有等同含义,VCPU与虚拟处理器具有等同含义。

VMM的虚拟管理方式能够从软硬件的层面灵活处理物理资源和虚拟资源的映射关系,提供性能隔离、安全隔离及状态监控等多种功能。VMM作为一种软件管理层,其构建于硬件层与传统操作系统之间,并用于管理物理设备,例如:物理处理器(PCPU)、内存(MEMORY)等设备,并将底层的硬件抽象为对应的虚拟化设备接口,使多个操作系统分配到定制化的虚拟硬件资源(虚拟处理器资源、虚拟内存等),从而使多个操作系统能够同时运行在同一设备上。

图1示出了本发明一种多虚拟处理器间的同步调度方法的流程图,具体的,该多虚拟处理器间的同步调度方法包括以下步骤。

S1、创建至少包括一个虚拟处理器的若干虚拟处理器组;

S2、为物理处理器创建调度队列;

S3、以时间片为调度周期,根据物理处理器的负载以及虚拟处理器组的优先级,以确定是否将虚拟处理器调入调度队列,并通过物理处理器上所运行的调度器执行将虚拟处理器调入调度队列的操作;

S4、确定被分配物理处理器的虚拟处理器组并更新调度队列。

具体的,请参图2所示,图2中示出的一台主机A,其内含四个物理处理器(PCPU),即PCPU_1、PCPU_2、PCPU_3及PCPU_4,这四个物理处理器基于VMM(virtual machine monitor),例如KVM、XEN、VMware或者Hyper-V等虚拟化技术,通过软件的方式虚拟化出一个或者多个虚拟机,每个虚拟机包括虚拟处理器(VCPU)。四个物理处理器(PCPU)可基于虚拟化技术,支持SMP虚拟机的结构。

对称多处理器(Symmetrical Multi-Processing,SMP)被广泛应用在虚拟化领域,也是许多虚拟机软件的多处理器默认选项。SMP对存储器、I/O和外部中断具有同等的访问权限。操作系统的单份拷贝就能控制所有内核,使任何处理器都能运行所有的线程,而无需考虑内核、应用或中断服务的区分。

在本实施方式中,PCPU_1创建有其专属的调度队列11,同理PCPU_2创建有其专属的调度队列12,PCPU_3创建有其专属的调度队列13,PCPU_4创建有其专属的调度队列14。具体的,可通过图6中的初始化模块10对虚拟处理器组的初始化操作,以将虚拟处理器组(即VCPU组21、VCPU组22、VCPU组23、VCPU组24及VCPU组25)中的虚拟处理器型号、虚拟处理器数量、socket属性、numa node属性、vm-id属性行进标示并记录于虚拟处理器组中。每个PCPU组通过虚拟化技术所形成的一个或者多个VCPU归入同一个调度队列中。

如图3所示,调度器以SMP虚拟机为单位创建了五个虚拟处理器组,即图3中的VCPU组21、VCPU组22、VCPU组23、VCPU组24、VCPU组25。优选的额,该调度器包括全局调度器、抢占式调度器或者混合式调度器,并最优选为抢占式调度器。抢占式调度器允许高优先级的任务打断(interrupt)当前执行的任务,抢占VCPU的控制权。

同时,VCPU遵循同一个VCPU组内的VCPU放入不同的调度队列内的基本原则。由于虚拟处理器组中的VCPU的数量不一定相等,因此形成了如图3所的结构。在图3中,主机A的四个物理处理器通过虚拟化技术形成了十六个虚拟处理器;其中,

VCPU_1、VCPU_5、VCPU_8、VCPU_12共同组成了VCPU组21,

VCPU_2、VCPU_6、VCPU_9、VCPU_13共同组成了VCPU组22,

VCPU_3、VCPU_7、VCPU_10、VCPU_14共同组成了VCPU组23,

VCPU_4、VCPU_11、VCPU_15共同组成了VCPU组24,

VCPU_16共同组成了VCPU组21。

VCPU组21、VCPU组22、VCPU组23、VCPU组24及VCPU组25分别与五台虚拟机对应,并执行数据吞吐及运算等任务。

由于位于用一个PCPU中的一个调度队列中的所有虚拟处理器不可能全部过载运行,而位于同一个虚拟处理组中的多个位于不同物理处理器中的虚拟处理器就不能全完同步。如图3中所示,VCPU组21中的VCPU_1及VCPU_8处于空闲状态,而VCPU_5与VCPU_12处于非空闲状态。此时,就以时间片为调度周期,根据物理处理器(PCPU1、PCPU3)的负载以及虚拟处理器组(VCPU组22)的优先级,以确定是否将虚拟处理器调入调度队列,并通过物理处理器上所运行的调度器执行将虚拟处理器调入调度队列的操作。

时间片是物理处理器(PCPU)分配给各个程序的时间,每个线程被分配一个时间段,称作它的时间片,即该进程允许运行的时间,使各个程序从表面上看是同时进行的。如果在时间片结束时进程还在运行,则PCPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则PCPU当即进行切换。而不会造成PCPU资源浪费。

结合图4所示,为了保证VCPU组21中的四个虚拟处理器保持同步,因此可将VCPU_5与VCPU_6在调度器的调度下,在调度队列12中发生位置变化,并互换位置;同时,VCPU_12与VCPU_13在调度器的调度下,在调度队列14中发生位置变化,并互换位置。从而使得VCPU组21中的四个虚拟处理器都处于可用状态,并实现了同步调度,避免了现有技术中在虚拟化环境与真实的物理环境不一致时可能因为某一个或者某几个虚拟处理器没有分配到足够的空闲资源而被挂起的问题。最后,对调度队列12及调度队列13进行更新操作。

虚拟机内部的调度程序与传统的物理机环境下,多了一层调度层。因此,如果一个物理处理器中通过虚拟化技术所形成的一个或者多个虚拟机因为没有被分配或者占用有效的资源而无法正常运行时,则该虚拟处理器就会被挂起,并且基于该虚拟机的虚拟操作系统也无法控制。在此情形下,对于并发任务和持有锁任务的场景,虚拟机无法解决这些位于同一个物理处理器中的多个虚拟处理器中的一个或者多个虚拟处理器因为缺乏资源而不被挂起的需求,且也无法实现对并发任务的执行。而在本发明中,正是通过根据物理处理器(PCPU1、PCPU3)的负载以及虚拟处理器组(VCPU组22)的优先级,以确定是否将虚拟处理器调入调度队列,并通过物理处理器上所运行的调度器执行将虚拟处理器调入调度队列的操作的技术方案,解决了上述技术问题,并且能够有效应对并发任务和锁任务的应用场景。

优选的,在本实施方式中,该多虚拟处理器间的同步调度方法还包括,根据物理处理器空闲资源剩余量,通过调度器抢占优先级较低的虚拟处理器所关联的物理处理器并调用给在同一调度队列中发生位置变化的虚拟处理器。当存在两个空闲资源剩余量相等的物理处理器时,则以虚拟处理器组内的虚拟处理器数量较少组的作为优先级较低的虚拟处理器组,并通过调度器抢占优先级较低的虚拟处理器所关联的物理处理器并调用给在同一调度队列中发生位置变化的虚拟处理器。当物理处理器所关联的调度队列中的所包含的虚拟处理器的数量相同,则以物理处理器id较大的作为优先级较低的虚拟处理器组,并通过调度器抢占优先级较低的虚拟处理器所关联的物理处理器并调用给在同一调度队列中发生位置变化的虚拟处理器。

具体的,该多虚拟处理器间的同步调度方法更加具体的实现步骤可参图5所示。

首先,执行步骤S10、VCPU虚拟化。

然后,执行步骤S11、通过初始化模块10(参图6所示)创建VCPU组,VCPU组中包括一个或者多个VCPU。

然后,执行步骤S12、通过初始化模块10为每个PCPU创建调度队列。

然后,执行步骤S13、由调度队列管理模块40执行调度队列管理,并与主机A中的多个物理处理器执行“请求-响应”操作。

然后,执行步骤S15、由调度器根据物理处理器(例如,PCPU1、PCPU3)的负载以及虚拟处理器组(例如,VCPU组22)的优先级,以确定是否将虚拟处理器调入调度队列。在此步骤S15中,需要调用步骤S12所创建的一个或者多个调度队列。

然后,执行步骤S16、判断VCPU组内的VCPU的个数是否≥2个,若为1个,则直接将该VCPU直接运行而无需记性队列调度操作,并跳转执行步骤S19、VCPU运行,将被调度的VCPU的状态载入PCPU(物理处理器);若VCPU组内的VCPU的个数≥2个,则执行步骤S17。该步骤S16具体可由物理处理器资源监测模块50执行。

步骤S17、准备PCPU。

然后,跳转执行步骤S18、判断PCPU资源是否充足,并可由物理处理器资源监测模块50执行。若PCPU资源充足,则直接跳转执行步骤S19;若PCPU资源不充足,则向上返回并跳转执行步骤S15,并依次循环往复操作,直至找到合适的物理处理器(PCPU)。

结束。

实施例二:

请参图6所示出的本发明一种多虚拟处理器间的同步调度系统的一种具体实施方式。

在本实施方式中,该多虚拟处理器间的同步调度系统,包括:

初始化模块10、物理处理器资源检测模块50、虚拟处理器调度运行模块20、调度队列管理模块40;其中,

初始化模块10,用以创建至少包括一个虚拟处理器的若干虚拟处理器组,并为物理处理器创建调度队列;

物理处理器资源检测模块50,用于检测物理处理器的负载;

虚拟处理器调度运行模块20,以时间片为调度周期,根据物理处理器的负载以及虚拟处理器组的优先级,以确定是否将虚拟处理器调入调度队列,并通过物理处理器上所运行的调度器执行将虚拟处理器调入调度队列的操作;

调度队列管理模块40,确定被分配物理处理器的虚拟处理器组并更新调度队列。

本实施例与实施例一相同的技术方案在此不再赘述,请参实施例一所述。

实施例三:

请参图7所示出的本发明一种多虚拟处理器间的同步调度系统的另一种调度系统。该多虚拟处理器间的同步调度系统相对于实施例二所存在的区别是,在本实施方式中,多虚拟处理器间的同步调度系统还包括物理处理器资源仲裁模块30,其根据虚拟处理器组的需求,准备相应数目的物理处理器;

若物理处理器个数不够,则抢占优先级较低的虚拟处理器所关联的物理处理器;

若同时存在两个或两个以上优先级相等的虚拟处理器组,则以虚拟处理器组内的虚拟处理器数量较少组的作为优先级较低的虚拟处理器组,并通过调度器抢占优先级较低的虚拟处理器所关联的物理处理器并调用给在同一调度队列中发生位置变化的虚拟处理器;

若物理处理器所关联的调度队列中的所包含的虚拟处理器的数量相同,则以物理处理器id较大的作为优先级较低的虚拟处理器组,并通过调度器抢占优先级较低的虚拟处理器所关联的物理处理器并调用给在同一调度队列中发生位置变化的虚拟处理器。

在本实施方式中,该调度器包括全局调度器、抢占式调度器或者混合式调度器,并优选为抢占式调度器。

在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)磁碟、非易失性存储器装置(NVM)或者光盘等各种可以存储程序代码的介质。

上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1