任务调度方法、虚拟机、物理主机和存储介质与流程

文档序号:29615074发布日期:2022-04-13 11:12阅读:89来源:国知局
任务调度方法、虚拟机、物理主机和存储介质与流程

1.本发明涉及虚拟化技术领域,尤其涉及一种任务调度方法、虚拟机、物理主机和存储介质。


背景技术:

2.虚拟化技术是对物理主机上物理资源的一种逻辑表示。并且随着虚拟化技术的发展,可以大幅降低物理硬件设备的成本,减少了物理资源的浪费。
3.在虚拟化的场景下,当虚拟机执行特定指令比如终止指令即halt指令后,可以使虚拟机处于不陷出状态,也即是可以使虚拟机在自身的虚拟中央处理器(virtual central processing unit,简称vcpu)线程处于空闲状态时,不释放vcpu线程对应的物理资源释放回物理主机。此时,物理主机会认为虚拟机的vcpu线程仍在执行任务,也就不会将任务分配给发生物理资源独占的虚拟机,但实际上此虚拟机的vcpu线程是处于空闲状态的,从而出现任务调度不准确的情况。
4.因此,如何保证任务调度的准确性就成为一个亟待解决的问题。


技术实现要素:

5.有鉴于此,本发明实施例提供一种任务调度方法、虚拟机、物理主机和存储介质,用以保证任务调度的准确性。
6.第一方面,本发明实施例提供一种任务调度方法,包括:
7.执行虚拟中央处理器vcpu线程处于空闲状态时调用的终止指令,使包含所述vcpu线程的虚拟机不释放所述vcpu线程对应的物理资源至物理主机;
8.记录所述vcpu线程处于空闲状态的第一时段;
9.与所述物理主机共享所述第一时段,以使所述物理主机根据所述第一时段调度所述物理主机中的待执行任务。
10.第二方面,本发明实施例提供一种虚拟机,包括:虚拟中央处理vcpu线程、虚拟内存和内核模块;
11.所述虚拟机,用于执行所述vcpu线程处于空闲状态时调用的终止指令,使包含所述vcpu线程的虚拟机不释放所述vcpu线程对应的物理资源至物理主机;与所述物理主机共享所述vcpu线程处于空闲状态的第一时段,以使所述物理主机根据所述第一时段调度所述物理主机中的待执行任务;
12.所述内核模块,用于确定所述虚拟内存中的共享内存空间;记录所述第一时段至所述共享内存空间。
13.第三方面,本发明实施例提供另一种任务调度方法,包括:
14.获取虚拟机记录的所述虚拟机中虚拟中央处理器vcpu线程处于空闲状态的第一时段,其中,所述vcpu线程处于空闲状态并调用终止指令后,不释放所述vcpu线程对应的物理资源至所述物理主机;
15.根据所述第一时段,调度所述物理主机中的待执行任务。
16.第四方面,本发明实施例提供一种物理主机,包括:存储器和处理器,以及运行在由所述存储器和所述处理器构建的隔离环境中的虚拟机;
17.所述存储器,用于存储计算机程序;
18.所述处理器,用于执行所述计算机程序,以实现如第一方面或第三方面所述的任务调度方法。
19.第五方面,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器至少可以实现如第一方面或第三方面所述的任务调度方法。
20.本发明实施例提供的任务调度方法,虚拟机的中央处理器vcpu线程处于空闲状态时可以调用终止指令,调用该指令后,虚拟机并不会将此vcpu线程对应的物理资源释放回物理主机,而是继续独占vcpu线程对应的物理资源,但实际上此vcpu线程并没有需要执行的任务。同时,虚拟机可以记录vcpu线程处于空闲状态的第一时段,并将此第一时段共享给物理主机,以使物理主机在不回收物理资源的情况下也能够准确了解vcpu线程的工作状态,了解自身物理资源尤其是cpu资源的使用情况,以进一步根据资源使用情况进行任务调度。
21.可见,在上述方法中,虚拟机在不释放vcpu线程对应的物理资源的情况下,通过第一时段的共享,能够使物理主机准确知晓此vcpu线程的工作情况,也即是能够准确了解自身cpu资源的使用情况,从而进一步提高任务调度的准确性,保证任务的正常执行。同时,当任有新任务分配至虚拟机后,可以直接将任务分配至独占有物理主机的物理资源的、处于空闲状态的vcpu线程,vcpu线程可以直接利用没有释放给物理主机的物理资源执行该任务,从而提高任务的响应速度。
附图说明
22.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
23.图1为本发明实施例提供的一种任务调度方法的流程示意图;
24.图2为本发明实施例提供的另一种任务调度方法的流程示意图;
25.图3为与图1或图2所示实施例提供的任务调度方法对应的虚拟机的结构示意图;
26.图4为本发明实施例提供的又一种任务调度方法的流程示意图;
27.图5为本发明实施例提供的又一种任务调度方法的流程示意图;
28.图6为与图3或图4所示实施例提供的任务调度方法对应的物理主机的结构示意图;
29.图7为本发明实施例提供的一种物理主机的结构示意图;
30.图8为本发明实施例提供的另一种物理主机的结构示意图。
具体实施方式
31.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
32.在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。
33.应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
34.取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”或“响应于识别”。类似地,取决于语境,短语“如果确定”或“如果识别(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当识别(陈述的条件或事件)时”或“响应于识别(陈述的条件或事件)”。
35.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
36.下面结合附图对本发明的一些实施方式作详细说明。在各实施例之间不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
37.图1为本发明实施例提供的一种任务调度方法的流程示意图,本发明实施例提供的该任务调度方法可以由运行在物理主机构建的隔离环境中的虚拟机执行。如图1所示,该方法包括如下步骤:
38.s101,执行虚拟中央处理器vcpu线程处于空闲状态时调用的终止指令,使包含vcpu线程的虚拟机不释放vcpu线程对应的物理资源至物理主机。
39.虚拟机中的vcpu线程在处理任务时,该线程显然是处于工作状态。则当vcpu线程未执行任务时即cpu处于空闲状态时,会调用终止指令,通过终止指令的调用,能够是虚拟机处于不陷出状态。此不陷出状态可以认为是:在vcpu线程处于空闲状态时,包含此vcpu线程的虚拟机不将vcpu线程对应的物理资源释放回物理主机,虚拟机对vcpu线程对应的物理资源享有独占权。
40.可选地,物理主机的管理方可以通过修改物理主机中虚拟机监控程序(virtual machine monitor,简称vmm)的代码使运行在物理主机中的虚拟机在调用终止指令后不释放物理资源。更具体地,可以通过修改基于核的虚拟机(kernel-based virtual machine,简称kvm)中的虚拟机控制结构(virtual machine control structure,简称vmcs)寄存器中的内容以实现调用终止指令后不陷出。其中,kvm又包含于vmm中。
41.可选地,对于部署有linux操作系统的虚拟机,上述描述中提及的终止指令可以是halt指令。
42.s102,记录vcpu线程处于空闲状态的第一时段。
43.在调用终止指令后,虚拟机可以记录自身vcpu线程处于空闲状态的开始时间;同时,当vcpu线程重新开始执行任务时,虚拟机还会记录vcpu线程处于空闲状态的停止时间,则可以由开始时间和停止时间构成虚拟机处于空闲状态的第一时段。
44.可选地,该第一时段可以记录在虚拟机的虚拟内存空间中。具体地,第一时段可以记录在虚拟内存空间中的共享内存空间内,并且物理主机和虚拟机共享该共享内存空间。对于共享内存空间的获取,可选地,虚拟机在启动时,虚拟机可以在物理主机分配的虚拟内存空间中申请一部分作为上述的共享内存空间,该共享内存空间是虚拟机跟物理主机共享的,双方都可以进行数据的读取和写入。可选地,虚拟机中可以具有配置有内核模块,则可以响应于内核模块的启动,利用内核模块从虚拟内存空间中申请到共享内存空间。并且可选地,也可以利用该内核模块记录上述的第一时段。
45.s103,与物理主机共享第一时段,以使物理主机根据第一时段调度物理主机中的待执行任务。
46.通过执行步骤101,虚拟机处于空闲状态导致的不陷出会造成的物理资源的独占,但物理主机并不知晓虚拟机的vcpu线程当前处于空闲状态,从而导致物理主机不能准确的知晓自身物理资源尤其是cpu资源的使用情况。而为了改善上述情况,虚拟机可以将步骤102中记录的第一时段共享给物理主机,以使物理主机能够准确地了解自身cpu资源的使用情况,也可以根据cpu资源准确的使用情况调度待执行任务。
47.对于第一时段的共享,可选地,可以是虚拟机发送共享内存空间的内存地址至物理主机,物理主机按照内存地址便能够得到第一时段。
48.本实施例中,虚拟机的vcpu线程处于空闲状态时可以调用终止指令,调用该指令后,虚拟机并不会将此vcpu线程对应的物理资源释放回物理主机,而是继续独占vcpu线程对应的物理资源,但实际上此vcpu线程并没有需要执行的任务。同时,虚拟机可以记录vcpu线程处于空闲状态的第一时段,并将此第一时段同步给物理主机,以使物理主机在不回收物理资源的情况下也能够准确了解vcpu线程的工作状态,了解自身物理资源尤其是cpu资源的使用情况,以进一步根据资源使用情况进行任务调度。
49.可见,在上述方法中,虚拟机在不释放vcpu线程对应的物理资源的情况下,通过第一时段的共享,能够使物理主机准确知晓此vcpu线程的工作情况,也即是能够准确了解自身cpu资源的使用情况,以进一步提高任务调度的准确性,保证任务的正常执行。
50.另外,通过执行上述方案,当任有新任务分配至虚拟机后,由于处于空闲状态的vcpu线程独占物理主机分配的物理资源,因此,vcpu线程可以直接利用独占的物理资源执行该任务,从而提高对任务的响应速度。而对于提高任务的响应速度的原因,更详细来说:
51.上述实施例的步骤101中,虚拟机在调用终止指令后处于不陷出状态,而与此方式不同的,可选地,当vcpu线程处于空闲状态并调用终止指令后,虚拟机也可以处于陷出状态,即虚拟机会释放物理资源至物理主机。则在虚拟机陷出后,当出现新任务时,物理主机会重新分配物理资源给虚拟机,使虚拟机的vcpu线程利用重新分配到的物理资源响应新任务。
52.在上述过程中,由于虚拟机调用指令后导致的陷出,会出现物理资源释放并重新分配的过程,使得虚拟机需要经过长链路后才能对新任务进行响应,从而影响任务的响应速度。而按照图1所示实施例的方式,由于虚拟机在调用终止指令后不陷出,这样能够省去虚拟机释放物理资源,物理主机重新分配物理资源的过程,从而缩短执行任务所走的链路,也就能够提高虚拟机对任务的响应速度。
53.可选地,由于物理主机中通常可以运行多个虚拟机,则当出现新任务时,实际上可以将新任务分配至包含空闲vcpu线程的任一虚拟机。若存在多个虚拟机均包含的vcpu线程均处于工作状态,并且物理主机中也存在未分配至虚拟机的物理资源,则也可以将新任务分配至物理主机。
54.但需要说明的有,由于虚拟机自身的虚拟性,对于相同的任务,虚拟机执行该任务所需的时间要长于物理主机执行该任务所需的时间,因此,相比于使用虚拟机的vcpu线程执行任务,使用物理主机对任务的响应速度更快。同样考虑都虚拟机的虚拟性,在实际中,通常将对任务响应速度要求不高的、低优先级任务分配至虚拟机,将对任务响应速度要求较高的、高优先级任务分配至物理主机。与下述描述对应的,高优先级任务可以认为是在线任务,低优先级任务可以认为是离线任务。
55.在实际中,虚拟机在vcpu线程处于空闲状态时调用终止指令,并且还可以执行物理设备产生的的其他控制指令,则图2为本发明实施例提供的另一种任务调度方法的流程示意图。
56.如图2所示,该方法可以包括如下步骤:
57.s201,执行虚拟中央处理器vcpu线程处于空闲状态时调用的终止指令,使包含vcpu线程的虚拟机不释放vcpu线程对应的物理资源至物理主机。
58.s202,记录vcpu线程处于空闲状态的第一时段。
59.上述步骤s201~步骤s202的执行过程与前述实施例的相应步骤相似,可以参见如图1所示实施例中的相关描述,在此再不赘述。
60.s203,执行物理主机产生的目标控制指令,使虚拟机释放vcpu线程对应的物理资源至物理主机,使物理主机获取释放vcpu线程对应的物理资源的第二时段,并根据第一时段和第二时段调度待执行任务。
61.当虚拟机执行物理主机产生的目标控制指令后,会释放vcpu线程对应的物理资源至物理主机,即虚拟机处于陷出状态。此时,物理主机可以自主获知虚拟机释放vcpu线程对应的物理资源的第二时段,也即是物理主机能够了解自身物理资源尤其是cpu资源的释放情况。
62.可选地,目标控制指令可以是中断指令或者写数据寄存器(write to model specific register,简称wrmsr)指令。当物理主机存在写数据任务时,则可以生成wrmsr指令。此写数据任务实际上是对任务响应速度有较高要求的高优先级任务,与下述描述对应的,高优先级任务可以认为是在线任务。其中,
63.当物理主机中存在其他类型的高优先级的任务时,则可以生成中断指令。举例来说,高优先级的任务还可以包括用户对安装于终端设备中的社交类应用程序、购物类应用程序、资讯类应用程序等应用程序触发的交互操作。物理主机需要快速响应用户触发的交互操作,以及时为用户反馈交互结果,从而保证用户的人机交互体验。
64.可选地,vcpu线程释放物理资源的第二时段即为执行高优先级的目标待执行任务的时段。
65.可见,虚拟机执行上述步骤s201~步骤s202,可以使物理主机知晓虚拟机的vcpu线程处于空闲状态的第一时段,即知晓物理主机cpu资源的独占情况。执行上述步骤s203~步骤s204,可以使物理主机知晓自身cpu资源的释放情况。
66.最终,物理主机可以根据准确的cpu资源的使用情况进行待执行任务的调度,以进一步保证任务调度的准确性。
67.需要说明的有,在实际中,目标控制指令产生的依据是高优先级任务的产生,终止指令调用的原因是vcpu线程处于空闲状态。由于任务的产生和vcpu线程处于空闲状态之间并没有严格的先后顺序,使得虚拟机执行的终止指令和目标控制指令也不具有严格的先后顺序,即上述步骤s201~步骤s202和步骤s203~步骤s204之间也没有严格的先后顺序。
68.需要说明的还有,由于目标控制指令的产生是因为高优先级任务的产生,因此,若虚拟机中的vcpu线程处于工作状态即存在正在处理任务,而此时物理主机了产生目标控制指令,则虚拟机会优先响应此目标控制指令,停止执行当前任务并陷出,即释放vcpu线程对应的物理资源,由物理主机利用释放出的物理资源执行高优先级任务。
69.而当高优先级任务执行完毕后,还可以继续由物理主机使用虚拟机释放出的物理资源继续执行虚拟机由于响应目标控制指令而产生的未完成任务。由于虚拟机执行目标控制指令并释放物理资源后,物理主机可以直接利用释放出的物理资源继续执行未完成任务,而无需将物理资源重新分配给虚拟机,再由虚拟机继续执行未完成任务,因此,也能够提高任务的响应速度。
70.可选地,当高优先级任务执行完毕后,若物理主机中的运行有包含空闲vcpu线程的虚拟机,则也可以让此虚拟机执行未完成任务。并且在实际中,未完成任务在目标控制指令产生的前后可以由不同的虚拟机执行。
71.本实施例中,虚拟机通过数据共享的方式能够使物理主机得到vcpu线程处于空闲状态的第一时段,即了解物理主机cpu资源的独占情况,同时还能够自主得到虚拟机释放vcpu线程对应的物理资源的第二时段,即了解物理主机cpu资源的释放情况,最终,物理主机可以根据准确的cpu资源使用情况对待执行任务进行更准确的调度。
72.上述各实施例是从虚拟机的角度描述任务调度方法的实现过程。基于上述各实施例,图3为本发明实施例提供的一种虚拟机的结构示意图。如图3所示,该虚拟机可以包括:vcpu线程、虚拟内存和内核模块。
73.虚拟机在vcpu线程处于空闲状态时可以调用终止指令,以使虚拟机不释放自身包含的vcpu线程对应的物理资源至物理主机,也即是由虚拟机独占vcpu线程对应的物理资源。
74.在虚拟机启动的同时,虚拟机中的内核模块也会一并启动,此时,可选地,内核模块可以从虚拟机的虚拟内存中确定一部分虚拟内存空间作为共享内存空间,以供虚拟机和物理主机双方进行数据读写。虚拟机会将vcpu线程处于空闲状态的第一时段记录在此共享内存空间中,并将共享内存空间中的第一时段共享给物理主机。可选地,第一时段的记录也可以由虚拟机中的内核模块进行。一种可选地共享方式,虚拟机可以将共享内存空间的内存地址发送至物理主机,以使物理主机按照内存地址读取到其中记录的第一时段。
75.最终,物理主机可以根据cpu资源的独占情况进行待执行任务的调度。
76.在实际中,可选地,虚拟机还可以执行物理主机产生的目标控制指令,则响应于此指令的执行,虚拟机可以处于陷出状态即将vcpu线程对应的物理资源至物理主机,以使物理主机自主获得虚拟机释放物理资源的第二时段,以使物理主机了解自身cpu资源的释放情况。
77.此时,物理主机便可以同时根据cpu资源的独占情况和释放情况进行待执行任务的调度,从而提高任务调度的准确性。
78.另外,本实施例未详细描述的部分,可参考对图1至图2所示实施例的相关说明。该技术方案的执行过程和技术效果参见图1至图2所示实施例中的描述,在此不再赘述。
79.在上述各实施例中,物理主机可以根据自身cpu资源的使用情况进行任务调度,则图4为本发明实施例提供的又一种任务调度方法的流程示意图。本发明实施例提供的该任务调度方法可以由部署有虚拟机的物理主机执行。如图4所示,该方法可以包括如下步骤:
80.s301,获取虚拟机记录的虚拟机中vcpu线程处于空闲状态的第一时段,其中,vcpu线程处于空闲状态并调用终止指令后,不释放vcpu线程对应的物理资源至物理主机。
81.s302,根据第一时段,调度物理主机中的待执行任务。
82.虚拟机可以按照图1或图2所示实施例中的方式记录vcpu线程处于空闲状态的第一时段,即在此第一时段内,虚拟机可以独占物理主机的部分物理资源尤其是cpu资源。接着,虚拟机还可以通过设置共享虚拟内存的方式,将独占cpu资源的第一时段共享给物理主机,以使物理主机了解自身cpu资源被独占的情况。物理主机即可进一步根据资源独占情况调度待执行任务。
83.可选地,物理主机的管理方可以通过修改物理主机中vmm的代码的方式使得运行在物理主机中的虚拟机在调用终止指令后不释放物理资源。更具体地,可以通过修改运行于kvm中的vmcs寄存器来实现虚拟机调用终止指令后不陷出。其中,kvm包含于vmm中。
84.本实施例中,虚拟机处于不陷出状态时对物理资源的独占情况可以共享给物理主机,以使物理主机能够在虚拟机不释放物理资源的情况下也能够准确得到自身物理资源尤其是cpu资源的使用情况,从而根据准确的资源使用情况进行任务调度,保证任务的响应速度。
85.另外,本实施例未详细描述的部分,可参考对图1所示实施例的相关说明。该技术方案的执行过程和技术效果参见图1所示实施例中的描述,在此不再赘述。
86.在图4所示实施例的基础上,图5为本发明实施例提供的又一种任务调度方法的流程示意图。如图5所示,该方法可以包括如下步骤:
87.s401,获取虚拟机记录的虚拟机中vcpu线程处于空闲状态的第一时段,其中,vcpu线程处于空闲状态并调用终止指令后,不释放vcpu线程对应的物理资源至物理主机。
88.上述步骤s401的执行过程与前述实施例的相应步骤相似,可以参见如图3所示实施例中的相关描述,在此再不赘述。
89.s402,发送目标控制指令至虚拟机,以使虚拟机中的vcpu线程响应于目标控制指令,释放vcpu线程对应的物理资源至物理主机。
90.s403,获取释放vcpu线程对应的物理资源的第二时段。
91.物理主机还可以在得到待执行任务后发送目标控制指令,以使虚拟机响应于该目
标控制指令,使自身处于陷出状态即虚拟机释放vcpu线程对应的物理资源至物理主机。其中,与图2所示实施例相同的,目标控制指令可以是出现高优先级任务时,物理主机产生的中断指令或者wrmsr指令。并且响应于虚拟机对vcpu线程释放对应的物理资源的释放,物理主机还可以自主记录虚拟机释放物理资源的第二时段。
92.可见,通过执行步骤s401,物理主机能够知晓虚拟机处于不陷出状态时,自身cpu资源的独占情况;通过执行步骤s402~步骤s403,物理主机能够知晓虚拟机处于陷出状态时,自身cpu资源的释放情况,也即是能够准确得到在不同时段、自身cpu资源不同的使用情况。
93.s404,根据第一时段和第二时段,调度物理主机中的待执行任务。
94.最终,物理主机可以根据自身的cpu资源在不同时段的不同使用情况,调度待执行任务。
95.并且需要说明的有,由于待执行任务的产生和vcpu线程处于空闲状态之间并没有严格的先后顺序,使得虚拟机执行的终止指令和目标控制指令也不具有严格的先后顺序,因此,步骤s401和步骤s402~步骤s403之间也没有严格执行先后顺序。
96.本实施例中,虚拟机处于不陷出状态时对物理资源的独占情况可以共享给物理主机,同时物理主机也能够自主得到虚拟机执行目标控制指令后对物理资源的释放情况。物理主机能够了解自身物理资源,主要是cpu资源的在不同时段的不同使用情况,从而根据准确的资源使用情况进行任务调度,保证任务的响应速度。
97.另外,本实施例未详细描述的部分,可参考对图2所示实施例的相关说明。该技术方案的执行过程和技术效果参见图2所示实施例中的描述,在此不再赘述。
98.通过上述各实施例,物理主机已经能够准确地得到自身物理资源尤其是cpu资源的使用情况,则可以以此为依据进行任务调度。而在详细描述调度过程之前,还可以先对待执行任务进行说明:在实际中,可以按照对任务响应速度的要求将物理主机需要调度的待执行任务划分成在线任务和离线任务。
99.举例来说,用户使用的终端设备中可以安装有不同类型的应用程序。用户可以对不同类型的应用程序触发交互操作,同时也需要实时得到交互操作对应的交互结果。更具体地,用户触发的交互操作可以是对社交类应用程序、购物类应用程序、资讯类应用程序等应用程序触发的启动操作、搜索操作等等,则用户需要实时看到不同操作对应的操作结果。则像上述这种需要实时响应的任务可以认为是在线任务。
100.而对于一些无需实时响应的任务,比如与购物类应用程序配套使用的物理主机的管理方需要借助物理主机统计在过去一个月内,购物类应用程序的访问情况、商品的售卖情况等等,物理主机需要在24小时之后得到统计结果。可见,像这种规定了较长的任务处理时间,对响应速度要求不高的任务可以为是离线任务。
101.基于上述划分得到的在线任务以及离线任务可以根据按照不同的情况进行不同方式的调度。
102.当虚拟机的vcpu线程在第一时段处于空闲状态且不陷出时,对于在第一时段内任一时间得到的待执行任务,物理主机可以直接将此待执行任务分配给此空闲vcpu线程。也即是当物理主机在第一时段内获取到待执行任务时,可以直接由包含空闲vcpu线程虚拟机来执行该任务。可选地,分配给vcpu线程的待执行任务可以是离线任务或者在线任务。但考
虑到虚拟机是虚拟化设备,对于相同的任务,虚拟机执行该任务所需的时间通常要长于物理主机执行该任务所需的时间,因此,上述直接由空闲的vcpu线程执行的待执行任务通常是对响应速度要求不高的离线任务。
103.上述调度方式可以理解成:当存在包含空闲vcpu线程的虚拟机,并且此vcpu线程对应的物理资源并未释放,则可以直接将此待执行任务分配给此虚拟机。并且这种调度方式更适用于离线任务。
104.对于在第一时段内得到的待执行任务,可选地,若物理主机中包含未分配给任一虚拟机的剩余物理资源,则也可以直接利用物理主机中的剩余物理资源执行该待执行任务。并且相比于由包含空闲vcpu线程的虚拟机执行该任务,直接使用物理主机中的剩余物理资源执行待执行任务,更能够保证任务的响应速度。对于这种调度方式,第一时段内得到的待执行任务可以是离线任务也可以是在线任务。
105.当得到的待执行任务是在线任务时,其对任务响应速度有较高的要求,则一种情况,若物理主机中存在未分配给虚拟机的剩余物理资源,则可以直接利用此剩余物理资源执行该在线任务。另一种情况,若物理主机的全部物理资源都分配至内部运行的至少一个虚拟机,则物理主机响应于此在线任务的获取,向目标虚拟机发送目标控制指令,以使目标虚拟机响应于此目标控制指令,释放vcpu线程对应的物理资源,则物理主机便利用目标虚拟机释放的物理资源执行此在线任务。
106.在实际中,可选地,上述目标控制指令通常为中断指令或者wrmsr指令。可选地,目标虚拟机可以是至少一个虚拟机中的任一个,可选地,还可以根据至少一个虚拟机中各虚拟机当前的负载情况、历史运行状态等选择目标虚拟机。其中,历史运行状态可以包括虚拟机的历史任务执行情况和/或在预设时长内虚拟机的vcpu线程处于空闲状态的第三时段。
107.上述调度方式可以理解成:当物理主机获取到高优先级的在线任务时,若物理主机中存在未分配给虚拟机的剩余物理资源,则物理主机可以直接利用此剩余物理资源执行任务,以保证任务的响应速度。若物理主机中的物理资源全部分配给虚拟机,则可以借助目标控制指令使虚拟机释放自身vcpu线程对应的物理资源,以使物理主机利用释放出的物理资源来执行在线任务,同样也能够保证任务的响应速度。
108.上述针对在线任务的调度方式中,并没有限定在接收到目标控制指令时,虚拟机的vcpu线程是否处于空闲状态,一种情况,虚拟机对目标控制指令的响应发生在虚拟机调用终止指令之后,即当虚拟机中的vcpu线程处于空闲状态时,虚拟机响应目标控制指令。此时,响应目标控制指令并释放vcpu线程对应的物理资源的过程并不会影响虚拟机自身任务的执行进度。
109.另一种情况,虚拟机对目标控制指令的响应发生在虚拟机调用终止指令之前,即当虚拟机中的vcpu线程处于工作状态时,虚拟机响应目标控制指令。此时,响应目标控制指令会强行使虚拟机释放物理资源,从而导致虚拟机正在执行的任务成为未完成任务,从而影响虚拟机自身任务的执行进度。
110.针对这种情况,当物理主机使用虚拟机释放的物理资源完成在线任务后,可选地,若物理主机中存在vcpu处于空闲状态的虚拟机,则物理主机可以将此未完成任务分配给此具有空闲状态的vcpu线程的虚拟机。可选地,若存在多个vcpu处于空闲状态的虚拟机,则同样可以参考各虚拟机当前的负载情况以及历史运行状态从中选择目标虚拟机,并将未完成
任务分配给目标虚拟机。
111.可选地,若物理主机中不存在vcpu处于空闲状态的虚拟机,则物理主机可以将物理资源重新分配给虚拟机,以由此虚拟机继续执行此未完成任务。
112.可选地,由于虚拟机已经释放了物理资源,因此,物理主机可以直接利用释放回物理主机的物理资源执行虚拟机由于响应目标控制指令而产生的未完成任务。并且相比于物理主机重新为虚拟机分配物理资源,再由虚拟机继续执行未完成任务,直接使用物理主机中的物理资源完成虚拟机之前的未完成任务能够提高任务的响应速度。
113.上述调度方式可以理解成:物理主机在完成在线任务后,还可以进一步根据自身的物理资源主要是cpu资源的使用情况进一步调度虚拟机由于响应于目标控制指令而产生的未完成任务。
114.上述各实施例是从物理主机的角度来描述任务调度的过程。基于上述各实施例,图6为本发明实施例提供的一种物理主机的结构示意图。如图6所示,该物理主机可以包括:处理器、存储器、以及运行在由存储器和处理器构建的隔离环境中的虚拟机。
115.存储器,用于存储计算机程序;
116.处理器,用于执行所述计算机程序,以实现上述图1~图2或者图4~图5所示实施例中提供的任务调度方法。
117.为了便于理解,以在线购物场景为例对以上各实施例提供的任务调度方法的具体实现过程进行示例性说明。
118.用户的终端设备中安装有购物应用程序,该应用程序的管理方还维护有用于保证应用程序正常运行的服务器也即是物理主机1,因此,应用程序的管理方也即是上述实施例中的物理设备的管理方。并且在该物理主机1中还运行有虚拟机2和虚拟机3。
119.在使用购物应用程序在线购物的过程中,从用户角度来说,用户可以对应用程序触发启动操作,以使终端设备展示购物应用程序的主界面。之后,用户还可以在主界面上触发搜索操作,以使终端设备展示搜索界面。进一步地,用户还可以对搜索结果中商品a触发点击操作,以使终端设备展示该商品a的商品详情页面。对于上述用户触发的各种交互操作,物理主机都需要对其进行快速响应,以将响应结果反馈给终端设备,并最终让终端设备进行展示。因此,物理主机对交互操作进行响应可以认为是对响应速度要求较高的在线任务。
120.从应用程序的管理方角度来说,为了更好地为用户提供购物服务,管理方往往需要利用物理主机定期收集并统计购物应用程序的使用情况,并且统计结果往往需要在一段时长后比如几小时后反馈给管理方即可。其中,使用情况可以包括应用程序的访问次数、交易次数、各类型商品的售卖情况等等。对于如统计任务等不需要实时反馈结果的任务,可以认为是对响应速度要求不高的离线任务。
121.基于上述描述可知,部署有多台虚拟机的物理主机需要对在线任务或者离线任务进行调度,以保证购物应用程序能够正常为用户提供在线购物功能。
122.具体来说,当物理主机中的虚拟机2包含的vcpu线程处于空闲状态时会调用终止指令,以使虚拟机处于不陷出状态即虚拟机2不将vcpu线程对应的物理资源释放回物理主机,即虚拟机2会独占物理主机分配的物理资源。同时虚拟机2还会记录自身的vcpu线程处于空闲状态的第一时段,并将第一时段记录于虚拟机2设置的共享内存中,使物理主机也能
够借助共享内存能够得到虚拟机2中vcpu线程处于空闲状态的时段,也即是了解自身cpu资源的独占情况。
123.同样的,当虚拟机3包含的vcpu线程处于空闲状态时,也会按照上述方式通知给物理主机。
124.当物理主机得到应用程序的管理方产生的离线任务时,若虚拟机2或虚拟机3中包含空闲状态的vcpu线程,则可以直接将离线任务分配给包含空闲状态的vcpu线程的虚拟机。
125.若虚拟机2和虚拟机3各自的vcpu线程均处于工作状态,且物理主机中未分配至虚拟机的物理资源处于空闲状态,则可以将离线任务分配至物理主机。
126.若虚拟机2和虚拟机3各自的vcpu线程均处于工作状态,且物理主机中未分配至虚拟机的物理资源也处于工作状态,则可以根据均各虚拟机以及物理主机当前的负载情况以及历史运行状态,进行离线任务的分配。
127.需要说明的有,由于包含空闲状态的vcpu线程的虚拟机不会释放物理资源给物理主机,因此,当离线任务出现时,虚拟机可以直接利用未释放的物理资源执行离线任务,省去虚拟机释放物理资源,物理主机再重新为虚拟机分配物理资源的过程,从而提高虚拟机对任务的响应速度。
128.当物理主机得到离线任务时,若物理主机中存在未分配至虚拟机的物理资源,则可以直接由物理主机执行此离线任务。
129.并且在实际中,考虑到虚拟机对任务的响应速度慢于物理主机对任务的响应速度,因此,虚拟机的任务通常是物理主机管理方产生的离线任务。
130.当物理主机得到用户产生的在线任务时,一种情况,若物理主机中存在未分配至虚拟机的物理资源,则可以直接将在线任务分配至物理主机。
131.另一种情况,若物理主机中不存在为分配至虚拟机的物理资源,则响应于在线任务的获取,物理主机会产生中断指令,以使虚拟机2和/或虚拟机3停止执行当前正在执行的任务,并将自身vcpu线程对应的物理资源释放回物理主机,即虚拟机处于陷出状态,物理主机会记录不同虚拟机释放物理资源的第二时段,从而了解自身cpu资源的释放情况。此时,物理主机可以利用虚拟机释放的物理资源执行在线任务。并且由于物理资源的释放,使得虚拟机2和/或虚拟机3中之前正在执行的任务成为未完成任务。
132.并且当在线任务执行完成后,可以继续由释放回物理主机的物理资源执行虚拟机2和虚拟机3对应的未完成任务,而无需继续由虚拟机执行未完成任务,从而提高任务的响应速度。
133.本发明各实施例提供的任务调度方法也可以结合图7所示的物理主机进行理解。
134.需要说明的有,上述各实施例提供的任务调度方法中提到的虚拟机,也可以替换成如安全容器(即沙箱容器)等从操作系统级别实现资源隔离后得到的其他虚拟设备。并且在实际中,离线任务通常可以由物理主机或者物理主机中运行的安全容器执行;在线任务通常可以由物理主机执行或者物理主机中运行的普通容器执行。其中,普通容器与物理主机共享物理主机中未分配给虚拟机或安全容器等虚拟设备的物理资源。则图7所示场景下物理主机任务调度的过程还可结合图8理解。
135.另外,本发明实施例提供了一种计算机存储介质,用于储存上述电子设备所用的
计算机软件指令,其包含用于执行上述图1~图2或者图4~图5所示方法实施例中用户程序运行方法所涉及的程序。
136.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1