资源调度方法以及装置与流程

文档序号:30307440发布日期:2022-06-05 07:18阅读:89来源:国知局
资源调度方法以及装置与流程

1.本说明书实施例涉及计算机技术领域,特别涉及一种资源调度方法。


背景技术:

2.由于虚拟化技术的引入,在操作系统与硬件之间增加了一层虚拟机监测器(virtual machine monitor,vmm),它负责管理计算机系统的硬件资源。在虚拟化场景下,虚拟中央处理器(virtual central processing unit,vcpu)在执行hlt(退出指令)操作时,都会引发虚拟机(virtual machine)退出,该操作也会消耗一定的计算资源以及占据物理cpu的资源;若虚拟机频繁地处于进入、退出的状态时,将导致虚拟cpu消耗大量的物理cpu资源,使得在虚拟化环境中虚拟机的虚拟cpu应用性能会下降。


技术实现要素:

3.有鉴于此,本说明书实施例提供了一种资源调度方法。本说明书一个或者多个实施例同时涉及一种资源调度装置,一种计算设备,一种计算机可读存储介质以及一种计算机程序,以解决现有技术中存在的技术缺陷。
4.根据本说明书实施例的第一方面,提供了一种资源调度方法,应用于物理机,包括:
5.所述物理机的内核调度器基于预设资源调度周期,确定目标物理cpu的运行队列中所运行的虚拟机的虚拟cpu的数量;
6.基于所述虚拟cpu的数量确定所述虚拟cpu不退出功能的开关状态,基于所述开关状态确定所述虚拟cpu的目标调度策略;
7.基于所述目标调度策略调整所述虚拟机的虚拟cpu的运行状态。
8.根据本说明书实施例的第二方面,提供了一种资源调度装置,应用于物理机,包括:
9.所述物理机的内核调度器,被配置为基于预设资源调度周期,确定目标物理cpu的运行队列中所运行的虚拟机的虚拟cpu的数量;
10.所述物理机的内核调度器,进一步被配置为基于所述虚拟cpu的数量确定所述虚拟cpu不退出功能的开关状态,基于所述开关状态确定所述虚拟cpu的目标调度策略;
11.所述物理机的内核调度器,进一步被配置为基于所述目标调度策略调整所述虚拟机的虚拟cpu的运行状态。
12.根据本说明书实施例的第三方面,提供了一种计算设备,包括:
13.存储器和处理器;
14.所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现上述资源调度方法的步骤。
15.根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现上述资源调度方法的步骤。
16.根据本说明书实施例的第五方面,提供了一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述资源调度方法的步骤。
17.本说明书一个实施例提供的资源调度方法,应用于物理机,该物理机的内核调度器通过预设资源调度周期,确定目标物理cpu的运行队列中所运行的虚拟机的虚拟cpu的数量;基于所述虚拟cpu的数量确定所述虚拟cpu不退出功能的开关状态,基于所述开关状态确定所述虚拟cpu的目标调度策略;基于所述目标调度策略调整所述虚拟机的虚拟cpu的运行状态。
18.具体的,物理机的内核调度器通过目标物理cpu运行队列中所运行的虚拟机的虚拟cpu的数量,确定虚拟cpu的不退出功能是否开启,进而,根据不退出功能是否开启的状态确定虚拟cpu对应的目标调度策略,以调整虚拟cpu的运行状态;根据目标调度策略动态调整虚拟cpu的不退出功能,进而实现了及时关闭虚拟cpu的不退出功能,保证不消耗不必要的物理cpu资源,以及开启虚拟cpu的不退出功能,提升虚拟cpu的应用性能。
附图说明
19.图1是本说明书一个实施例提供的一种资源调度方法的流程图;
20.图2是本说明书一个实施例提供的一种资源调度方法的处理过程流程图;
21.图3是本说明书一个实施例提供的一种资源调度装置的结构示意图;
22.图4是本说明书一个实施例提供的一种计算设备的结构框图。
具体实施方式
23.在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
24.在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
25.应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
26.首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
27.虚拟机(virtual machine):指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
28.虚拟机监测器(virtual machine monitor,vmm):运行在基础物理服务器和操作系统之间的虚拟化抽象层,可允许多个操作系统和应用共享硬件。
29.cpu调度器(cpu scheduler):linux针对进程/线程设计的调度算法,在进程/线程
exit时,并不会直接将其设置为空闲,而是会在内核态polling(轮询)一段时间,检查是否有新的请求,有的话就直接继续处理请求,能够消除掉一次调度引入的开销;当polling的时间段内没有任何请求时,将虚拟cpu标记为空闲,让出物理cpu给需要的其它虚拟cpu。但是hlt-polling方案依赖于虚拟机内部是否有负载,而不是取决于物理cpu上是否有其余虚拟cpu;当有多个虚拟cpu竞争底层cpu资源时,该方案往往会导致所有的虚拟cpu性能全部受损,不适用于共享的场景;hlt-polling会让vcpu有一段轮询是否有请求的时间,如果没有请求,则这部分时间的cpu资源是完全被浪费掉的,并且此时如果有在等待cpu资源的虚拟cpu,即耗费了大量不必要的计算资源;但本说明书实施例提供的一种动态hlt退出的虚拟cpu调度策略相比较于hlt-polling方案具有一定的优势,即在没有其余虚拟cpu竞争物理cpu资源时,有效消除虚拟化和调度引入的开销,提升虚拟机的性能;在有虚拟cpu竞争时也不会有hlt-polling的缺点,因为会动态的将hlt不退出功能直接关闭,以防止物理cpu资源被轮询浪费,可以避免对共享物理cpu的虚拟cpu造成严重的争抢。
38.基于此,在本说明书中,提供了一种资源调度方法,本说明书同时涉及一种资源调度装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
39.参见图1,图1示出了根据本说明书一个实施例提供的一种资源调度方法的流程图,具体包括以下步骤。
40.需要说明的是,本说明书实施例提供的资源调度方法应用于物理机中的内核调度器,以实现对虚拟机中的虚拟cpu占用物理cpu资源的调度。
41.步骤102:所述物理机的内核调度器基于预设资源调度周期,确定目标物理cpu的运行队列中所运行的虚拟机的虚拟cpu的数量。
42.实际应用中,物理机中的内核调度器每隔预设资源调度周期,就会读取当前目标物理cpu的运行队列,检查该目标物理cpu上所运行的虚拟cpu的数量,以便于后续根据该虚拟cpu的数量调度目标物理cpu的使用资源。
43.需要说明的是,本说明书实施例提供的资源调度方法中物理cpu的数量可以配置1个,也可以配置多个,若系统中配置多个物理cpu时,则可确定每个物理cpu的运行队列中所运行的虚拟cpu的数量,进而实现对虚拟cpu的资源调度,即动态调整hlt不退出功能的开关是取决于单个物理cpu上的虚拟cpu的数量决策的;而本说明书实施例提供的资源调度方法以物理cpu数量为1为例进行详细说明,那么,一个物理cpu可运行一个虚拟cpu,或者一个物理cpu对应着多个(两个或两个以上)虚拟cpu;基于此,本方案提出的资源调度方法对适用的应用场景并不做任何限定;需要强调的是,在整个物理机中虚拟cpu的数量大于整个物理机中物理cpu的数量的场景下,即发生资源竞争的情况,则可利用本实施例提供的资源调度方法动态调整hlt不退出状态,以避免对共享物理cpu的虚拟cpu造成严重的争抢。
44.而本方案还可适用于整个物理机上的虚拟cpu数量小于整个物理机中的物理cpu数量的两倍,且大于整个物理机中物理cpu数量的应用场景下,以实现较优的资源调度决策,但在除上述应用场景以外的其他应用场景下,均可适用本说明书实施例中提出的资源调度方法,在此对应用场景则不做具体限定。
45.为了提高虚拟cpu的性能,虚拟机监测层先进行初始化,向内核调度器暴露可以查询以及动态调整hlt不退出的功能接口,进而实现虚拟cpu具有不退出功能;具体的,所述物
理机的内核调度器基于预设资源调度周期,确定物理cpu的运行队列中所运行的虚拟cpu的数量之前,还包括:
46.所述物理机的内核调度器调用所述虚拟机中的监测层发送的针对所述虚拟cpu的调度接口,其中,所述调度接口为转发所述虚拟机的虚拟cpu运行状态的调整参数的接口。
47.实际应用中,虚拟机监测层做初始化的操作,向内核调度器暴露可以查询以及动态调整hlt不退出的功能的接口;进而,虚拟机在创建时,虚拟机监测层通过设置vmcs(控制寄存器)的cpu_based_hlt_exiting位(开关位)保证新启动的虚拟机hlt不退出功能是保持关闭的状态;进一步地,物理机的内核调度器即可调用虚拟机监测层发送的调度接口,该调度接口以实现对cpu_based_hlt_exiting位(开关位)的调整,能够开启虚拟机hlt不退出功能或者是关闭虚拟机hlt不退出功能;需要说明的是,该对于虚拟机hlt不退出功能的开启或关闭,可以通过该调度接口对虚拟cpu运行状态的调整参数进行转发,以实现对虚拟机cpu占用物理cpu的资源调度。
48.本说明书实施例提供的资源调度方法,通过虚拟机向内核调度器暴露可以查询以及动态调整hlt不退出功能的接口,以实现对虚拟机hlt不退出功能的开启或关闭,便于后续通过动态调整,提升虚拟cpu的应用性能。
49.步骤104:基于所述虚拟cpu的数量确定所述虚拟cpu不退出功能的开关状态,基于所述开关状态确定所述虚拟cpu的目标调度策略。
50.其中,虚拟cpu不退出功能可以理解为虚拟机接收到htl指令之后,虚拟cpu并不执行退出操作,使得当前虚拟机cpu处于不退出的状态;开关状态可以理解为对虚拟cpu不退出功能的开启状态或者关闭状态;目标调度策略可以理解为对于虚拟cpu占用物理cpu的调度策略,以根据该调度策略实现对虚拟cpu性能的提成,以及避免不必要的计算资源的浪费。
51.实际应用中,内核调度器在物理cpu的运行队列中确定所运行的虚拟cpu的数量的情况下,可进一步地确定虚拟cpu不退出功能是否需要被开启或者是被关闭,即虚拟cpu不退出功能处于开启状态或者关闭状态(虚拟cpu不退出功能即为hlt不退出功能);再根据不同的开关状态确定对虚拟cpu的目标调度策略。
52.需要说明的是,对于虚拟cpu的不退出功能是可以被内核调度器通过开关位调整的,以实现虚拟化的共享场景中,共享型虚拟机也能享受到hlt不退出技术所带来的性能提升,本说明书实施例提供的对虚拟cpu不退出功能的调整不作任何限定,也可以采用其他调整虚拟cpu不退出功能的方式。
53.具体实施时,内核调度器可根据物理cpu的运行队列中确定虚拟cpu的数量,进而确定将虚拟cpu的不退出功能的开关状态,根据开关状态确定调整虚拟cpu的调度策略,可分为两种调度策略,其中,第一种调度策略可根据虚拟cpu不退出功能的开启状态确定,第二种调度策略可根据虚拟cpu不退出功能的关闭状态确定;本说明书实施例提供的资源调度方法,根据虚拟cpu不退出功能的开启状态确定的第一目标调度策略,具体的,所述基于所述虚拟cpu的数量确定所述虚拟cpu不退出功能的开关状态,包括:
54.在确定所述运行队列中所运行的虚拟cpu的数量小于等于1的情况下,确定所述虚拟cpu不退出功能的开关状态为开启状态。
55.实际应用中,内核调度器确定运行队列中所运行的虚拟cpu数量小于等于1的情况
下,即可确定虚拟cpu不退出功能的开关状态为开启状态;在确定运行在物理cpu的运行队列中的虚拟cpu数量为1时,意味着只有一个虚拟cpu占用物理cpu的资源,即独占使用,那么,对于虚拟cpu不退出功能可以被开启,使得虚拟cpu在接收到退出指令时,也仍旧不退出,可进入休眠状态,以减少虚拟化层面引入的开销,比如,在退出状态之后的恢复过程中,需要重新读取内存中的上下文所带来的不必要的开销,因此,让独占物理cpu的虚拟cpu处于不退出状态(休眠状态),而非退出状态,有效地提升了虚拟机的性能。
56.本说明书实施例提供的资源调度方法,在确定物理cpu运行队列中的虚拟cpu数量小于等于1的情况下,可确定虚拟cpu不退出功能的开关状态为开启状态,便于后续虚拟cpu实现不退出功能,以提升虚拟cpu的性能。
57.进一步地,内核调度器在确定虚拟cpu的不退出功能的开关状态为开启状态之后,表明该虚拟cpu可以独占物理cpu的计算资源,那么,内核调度器可进一步地确定针对虚拟cpu的调度策略,以实现虚拟cpu的不退出功能;具体的,所述基于所述开关状态确定所述虚拟cpu的目标调度策略,包括:
58.确定所述虚拟cpu的当前运行状态,基于所述开启状态以及所述当前运行状态确定所述虚拟cpu的第一目标调度策略。
59.实际应用中,虚拟机在进行初始化时,虚拟机监测层利用开关位将虚拟hlt不退出功能保持关闭的状态,也即是说,虚拟cpu的不退出状态在初始运行中开关是处于关闭的状态,即在接收到hlt退出指令时,是正常执行退出功能的;那么,内核调度器在确定目标调度策略时,先确定运行在物理cpu的运行队列中的虚拟cpu的当前运行状态,需要说明的是,沿用上例,物理cpu的运行队列中的虚拟cpu的数量为1,即内核调度器仅需确定一个虚拟cpu的当前运行状态即可,其中,当前运行状态可以为虚拟cpu不退出功能的开启状态、虚拟cpu不退出功能的关闭状态。
60.进一步地,内核调度器根据虚拟cpu的当前运行状态以及根据虚拟cpu的数量确定的不退出功能的开启状态,再确定针对该虚拟cpu的第一目标调整策略,以便于后续根据第一目标调整策略对虚拟cpu的不退出功能进行调整。
61.本说明书实施例提供的资源调度方法,通过判定物理cpu运行队列中虚拟cpu的当前运行状态,再根据虚拟cpu的开启状态确定虚拟cpu的第一目标调度策略,以实现虚拟cpu独占物理cpu资源,提升虚拟cpu的性能。
62.此外,内核调度器根据运行在物理cpu队列中虚拟cpu数量确定了虚拟cpu的第一目标调度策略之后,内核调度器还可根据虚拟cpu不退出功能的关闭状态确定对应的第二目标调度策略;具体的,所述基于所述虚拟cpu的数量确定所述虚拟cpu不退出功能的开关状态,包括:
63.在确定所述运行队列中所运行的虚拟cpu的数量大于1的情况下,确定所述虚拟cpu不退出功能的开关状态为关闭状态。
64.实际应用中,内核调度器在确定物理cpu运行队列中所运行的虚拟cpu的数量大于1的情况下,可以理解为当前物理cpu的运行队列中包括多个运行的虚拟cpu,多个虚拟cpu在分时复用底层的物理cpu资源;那么,在此状态下,若虚拟cpu的不退出功能开启的情况下,会造成虚拟cpu因为竞争全部处于可运行的状态,即便是虚拟cpu空闲也会尽量抢占物理cpu时间,造成不必要的争抢,因此,虚拟cpu退出功能无法在虚拟cpu数量比物理cpu数量
多的共享场景中发挥较好的效果。
65.本说明书实施例提供的资源调度方法,再确定物理cpu运行队列中的虚拟cpu数量大于1的情况下,可确定虚拟cpu不退出功能的开关状态为关闭状态,便于后续避免虚拟cpu因不退出功能的实现导致的抢占物理cpu的计算资源。
66.进一步地,内核调度器在确定虚拟cpu的不退出功能的开关状态为关闭状态的情况下,还可通过判定虚拟cpu当前的运行状态,进而确定虚拟cpu的第二目标调度策略;具体的,所述基于所述开关状态确定所述虚拟cpu的目标调度策略,包括:
67.确定所述虚拟cpu的当前运行状态,基于所述关闭状态以及所述当前运行状态确定所述虚拟cpu的第二目标调度策略。
68.实际应用中,内核调度器在确定调度策略之前,均可确定运行在目标物理cpu的运行队列中的虚拟cpu的当前运行状态,在本实施例中,在确定虚拟cpu的数量为多个的情况下,需要确定每个虚拟cpu的当前运行状态;进而,根据虚拟cpu不退出功能的关闭状态以及多个虚拟cpu的当前运行状态确定虚拟cpu对应的第二目标调度策略;以便于根据第二目标调度策略对虚拟cpu占用物理cpu的计算资源进行调度处理。
69.本说明书实施例提供的资源的调度方法,通过判定目标物理cpu运行队列中虚拟cpu的当前运行状态,再根据虚拟cpu的开启状态确定虚拟cpu的第二目标调度策略,以避免多个虚拟cpu会抢占物理cpu的时间,造成不必要的争抢,所带来的不必要资源的浪费。
70.步骤106:基于所述目标调度策略调整所述虚拟机的虚拟cpu的运行状态。
71.实际应用中,在内核调度器确定好不同的目标调度策略之后,即可基于该目标调度策略调整每个虚拟机上虚拟cpu的运行状态,比如,将虚拟cpu的不退出功能开启、将虚拟cpu的不退出功能关闭等操作。
72.具体的,本说明书实施例提供的资源调度方法中第一目标调度策略为不退出功能策略,相对应的实现效果为虚拟cpu可执行不退出功能,该虚拟cpu可独占物理cpu的计算资源。
73.相应地,所述基于所述目标调度策略调整所述虚拟cpu的运行状态,包括:
74.基于所述不退出功能策略调整所述虚拟机的虚拟cpu的运行状态。
75.实际应用中,内核调度器可根据不退出功能策略进一步地调整虚拟机中虚拟cpu的运行状态,进而实现虚拟cpu的不退出功能,使得虚拟cpu可独占物理cpu资源,在接收到退出指令时,依旧不退出,可保持睡眠状态,以提高虚拟cpu的性能。
76.需要说明的是,本说明书实施例提供的资源调度方法,基于不同的调度策略对虚拟cpu运行状态的调整方式可采用多种方式,对此则不作具体限定。
77.本说明书实施例提供的资源调度方法,通过不退出功能策略动态调整虚拟机的虚拟cpu运行状态,将hlt不退出功能应用到虚拟化的共享场景中,使得虚拟cpu因不退出功能带来性能的提升。
78.具体实施时,内核调度器还需要针对虚拟cpu当前运行状态所确定的不退出功能策略确定对应的调整方式;具体的,所述基于所述不退出功能策略调整所述虚拟机的虚拟cpu的运行状态,包括:
79.在确定所述当前运行状态为不退出功能状态的情况下,基于所述不退出功能策略保持所述虚拟机的虚拟cpu的当前运行状态;或者
80.在确定所述当前运行状态为退出功能状态的情况下,基于所述不退出功能策略开启所述虚拟机的虚拟cpu的不退出功能,基于所述虚拟cpu的不退出功能将所述虚拟cpu的运行状态切换为不退出功能状态。
81.实际应用中,由于不退出功能策略是为了让虚拟cpu处于不退出功能开启的状态,即接收到退出指令后,仍旧不退出可保持休眠状态;那么,内核调度器就需要先确定运行在物理cpu的运行队列中的虚拟cpu的当前运行状态,在确定该当前运行状态为不退出功能状态的情况下,说明虚拟cpu不退出功能的开关已经开启,那么内核调度器对虚拟cpu不作任何处理操作,使得虚拟cpu保持现状,就能实现虚拟cpu性能的提高。
82.另外,内核调度器确定当前运行状态为退出功能状态的情况下,说明虚拟cpu不退出功能的开关是关闭的,那么,内核调度器可基于不退出功能策略将虚拟cpu不退出功能的开关修改为开启的状态,具体的,内核调度器可通知虚拟机监测层修改该虚拟cpu的vmcs,使能cpu_based_hlt_exiting位,让虚拟cpu从退出功能状态切换为不退出功能状态。
83.需要说明的是,上述内核调度器针对虚拟cpu运行状态的调度操作,均可实现虚拟cpu独占物理cpu时,虚拟cpu根据不退出功能提升性能。
84.本说明书实施例提供的资源调度方法,通过确定虚拟cpu当前运行状态,进而执行不同的切换虚拟cpu不退出的功能,改变虚拟cpu的运行状态,进而,能够有效地提升独占虚拟cpu的性能。
85.此外,本说明书实施例提供了资源调度方法中第二目标调度策略为退出功能策略,相应实现的技术效果为使得虚拟cpu的不退出功能关闭,实现在接收到退出指令时,即执行虚拟cpu的退出功能。
86.相应地,基于所述目标调度策略调整所述虚拟机的虚拟cpu的运行状态,包括:
87.基于所述退出功能策略调整所述虚拟机的虚拟cpu的运行状态。
88.实际应用中,内核调度器可根据退出功能策略进一步地调整虚拟机中虚拟cpu的运行状态,以实现虚拟cpu的不退出功能处于关闭状态,使得虚拟机在接收到退出指令时,即执行正常的退出功能。
89.本说明书实施例提供的资源调度方法,通过退出功能策略动态调整虚拟机的虚拟cpu运行状态,以实现在发现虚拟cpu存在不必要的抢占物理cpu资源的情况下,及时关闭虚拟cpu不退出功能,保证不消耗不必要的物理cpu资源。
90.具体实施时,内核调度器还需要针对虚拟cpu当前运行状态所确定的退出功能策略确定对应的调整方式;具体的,所述基于所述退出功能策略调整所述虚拟机的虚拟cpu的运行状态,包括:
91.在确定所述当前运行状态为不退出功能状态的情况下,基于所述退出功能策略关闭所述虚拟机的虚拟cpu的不退出功能,基于所述虚拟cpu的不退出功能将所述虚拟cpu的运行状态切换为退出功能状态;或者
92.在确定所述当前运行状态为退出功能状态的情况下,基于所述退出功能策略保持所述虚拟机的虚拟cpu的当前运行状态。
93.实际应用中,由于退出功能策略是为了让虚拟cpu在接收到退出指令时,执行正常退出的操作,那么,内核调度器在确定虚拟cpu当前的运行状态为不退出功能状态的情况下,可根据退出功能策略关闭虚拟cpu的不退出功能,使得虚拟cpu从不退出功能状态切换
为退出功能状态;具体的,内核调度器通知虚拟机监测层修改该虚拟cpu的vmcs,使能cpu_based_hlt_exiting位,让该虚拟cpu切换为hlt退出。
94.另外,内核调度器在确定虚拟cpu当前的运行状态为退出功能状态的情况下,则对虚拟cpu不作任何处理,使得虚拟cpu保持现状,由于关闭了不退出功能,能够保证非独占的虚拟cpu不消耗不必要的物理cpu资源。
95.本说明书实施例提供的资源调度方法,在多个虚拟cpu在同一个物理cpu上竞争计算资源时,需要将虚拟cpu的不退出功能保持为关闭状态,即可实现避免虚拟cpu造成的不必要的争抢,影响虚拟cpu数量大于物理cpu数量的共享场景下的资源应用效果。
96.综上,本说明书实施例提供的资源调度方法,基于调度系统以及hlt不退出的技术,实现了一种动态hlt退出的虚拟cpu调度策略,当根据虚拟cpu是否独占底层物理cpu资源来动态切换虚拟机的hlt是否退出,当检查到虚拟cpu是独占物理cpu时,将其hlt不退出功能打开,提升性能;当检查到虚拟cpu并非独占物理cpu时,关闭其hlt不退出的功能。本方案在共享场景下,能有效的提升那些独占虚拟cpu的性能,并保证非独占的虚拟cpu不消耗不必要的物理cpu资源。
97.下述结合附图2,以本说明书提供的资源调度方法在虚拟cpu的应用为例,对所述资源调度方法进行进一步说明。其中,图2示出了本说明书一个实施例提供的一种资源调度方法的处理过程流程图,具体包括以下步骤。
98.步骤202:调度器检查物理cpu运行队列。
99.步骤204:调度器判断在物理cpu运行队列中虚拟cpu数量是否大于1,若是,则执行步骤206,若否,则执行步骤208。
100.步骤206:调度器判断虚拟cpu是否处于hlt不退出状态,若是,则执行步骤210,若否,则执行步骤212。
101.步骤208:调度器判断虚拟cpu是否处于hlt不退出状态,若是,则执行步骤212,若否,则执行步骤214。
102.步骤210:虚拟机监测层关闭虚拟cpu hlt不退出功能。
103.步骤212:调度器不做任何处理。
104.步骤214:虚拟机监测层开启虚拟cpu hlt不退出功能。
105.需要说明的是,在步骤210、步骤212以及步骤214执行完毕之后,每个预设调度周期之后,调度器可继续执行步骤202;且图2中还说明了在虚拟机创建时,虚拟机监测层做的初始化状态即为关闭虚拟cpu hlt不退出功能。
106.实际应用中,具体的执行步骤可参考如下,步骤1:虚拟机监测层初始化。向内核调度器暴露可以查询以及动态调整hlt不退出的功能的接口;步骤2:虚拟化初始化。当虚拟机刚创建时,虚拟机监测层通过设置vmcs的cpu_based_hlt_exiting位保证新启动的虚拟机hlt不退出功能是保持关闭的状态;步骤3:调度器调整动态hlt不退出状态。当调度器为物理cpu选择一个虚拟cpu运行时,读取物理cpu的运行队列,检查物理cpu上是否仅有一个虚拟cpu;步骤3.1:当物理cpu上仅有一个虚拟cpu时,通过虚拟机监测层提供的接口检查该虚拟cpu的hlt不退出状态;步骤3.1.1:当该虚拟cpu处于hlt不退出时,保持现状;步骤3.1.2:当该虚拟cpu处于hlt退出时,调度器通知虚拟机监测层修改该虚拟cpu的vmcs,关闭cpu_based_hlt_exiting位;让该虚拟cpu切换为hlt不退出;步骤3.2:当物理cpu上有多个虚拟
cpu时,仍然通过虚拟机监测层提供的接口检查该虚拟cpu的hlt不退出状态;步骤3.2.1:当该虚拟cpu处于hlt退出时,保持现状;步骤3.2.2:当该虚拟cpu处于hlt不退出时,调度器通知虚拟机监测层修改该虚拟cpu的vmcs,使能cpu_based_hlt_exiting位;让该虚拟cpu切换为hlt退出。
107.本说明书实施例提供的资源调度方法,在虚拟机监测器中实现了动态hlt不退出开关的功能,并且通过在调度器中实现了实时监测物理cpu上是否有虚拟cpu竞争的策略来通知虚拟机监测器动态开关hlt不退出功能。通过该技术将hlt不退出功能应用到了虚拟化的共享场景,让共享型虚拟机也能享受到hlt不退出技术所能带来的性能提升,同时动态调整策略又能在发现虚拟cpu有竞争时,及时关闭hlt不退出功能,保证不消耗不必要的物理cpu资源。
108.与上述方法实施例相对应,本说明书还提供了资源调度装置实施例,图3示出了本说明书一个实施例提供的一种资源调度装置的结构示意图。如图3所示,该装置应用于物理机302,包括:
109.所述物理机302的内核调度器,被配置为基于预设资源调度周期,确定目标物理cpu的运行队列中所运行的虚拟机304的虚拟cpu的数量;
110.所述物理机302的内核调度器,进一步被配置为基于所述虚拟cpu的数量确定所述虚拟cpu不退出功能的开关状态,基于所述开关状态确定所述虚拟cpu的目标调度策略;
111.所述物理机302的内核调度器,进一步被配置为基于所述目标调度策略调整所述虚拟机304的虚拟cpu的运行状态。
112.可选地,所述物理机302的内核调度器,进一步被配置为:
113.在确定所述运行队列中所运行的虚拟cpu的数量小于等于1的情况下,确定所述虚拟cpu不退出功能的开关状态为开启状态。
114.可选地,所述物理机302的内核调度器,进一步被配置为:
115.确定所述虚拟cpu的当前运行状态,基于所述开启状态以及所述当前运行状态确定所述虚拟cpu的第一目标调度策略。
116.可选地,第一目标调度策略为不退出功能策略;
117.可选地,所述物理机302的内核调度器,进一步被配置为:
118.基于所述不退出功能策略调整所述虚拟机的虚拟cpu的运行状态。
119.可选地,所述物理机302的内核调度器,进一步被配置为:
120.在确定所述当前运行状态为不退出功能状态的情况下,基于所述不退出功能策略保持所述虚拟机的虚拟cpu的当前运行状态;或者
121.在确定所述当前运行状态为退出功能状态的情况下,基于所述不退出功能策略开启所述虚拟机的虚拟cpu的不退出功能,基于所述虚拟cpu的不退出功能将所述虚拟cpu的运行状态切换为不退出功能状态。
122.可选地,所述物理机302的内核调度器,进一步被配置为:
123.在确定所述运行队列中所运行的虚拟cpu的数量大于1的情况下,确定所述虚拟cpu不退出功能的开关状态为关闭状态。
124.可选地,所述物理机302的内核调度器,进一步被配置为:
125.确定所述虚拟cpu的当前运行状态,基于所述关闭状态以及所述当前运行状态确
定所述虚拟cpu的第二目标调度策略。
126.可选地,第二目标调度策略为退出功能策略;
127.可选地,所述物理机302的内核调度器,进一步被配置为:
128.基于所述退出功能策略调整所述虚拟机的虚拟cpu的运行状态。
129.可选地,所述物理机302的内核调度器,进一步被配置为:
130.在确定所述当前运行状态为不退出功能状态的情况下,基于所述退出功能策略关闭所述虚拟机的虚拟cpu的不退出功能,基于所述虚拟cpu的不退出功能将所述虚拟cpu的运行状态切换为退出功能状态;或者
131.在确定所述当前运行状态为退出功能状态的情况下,基于所述退出功能策略保持所述虚拟机的虚拟cpu的当前运行状态。
132.可选地,所述物理机302的内核调度器,进一步被配置为:
133.调用所述虚拟机中的监测层发送的针对所述虚拟cpu的调度接口,其中,所述调度接口为转发所述虚拟机的虚拟cpu运行状态的调整参数的接口。
134.本说明书实施例提供的资源调度装置,通过目标物理cpu运行队列中所运行的虚拟机的虚拟cpu的数量,确定虚拟cpu的不退出功能是否开启,进而,根据不退出功能是否开启的状态确定虚拟cpu对应的目标调度策略,以调整虚拟cpu的运行状态;根据目标调度策略动态调整虚拟cpu的不退出功能,进而实现了及时关闭虚拟cpu的不退出功能,保证不消耗不必要的物理cpu资源,以及开启虚拟cpu的不退出功能,提升虚拟cpu的应用性能。
135.上述为本实施例的一种资源调度装置的示意性方案。需要说明的是,该资源调度装置的技术方案与上述的资源调度方法的技术方案属于同一构思,资源调度装置的技术方案未详细描述的细节内容,均可以参见上述资源调度方法的技术方案的描述。
136.图4示出了根据本说明书一个实施例提供的一种计算设备400的结构框图。该计算设备400的部件包括但不限于存储器410和处理器420。处理器420与存储器410通过总线430相连接,数据库450用于保存数据。
137.计算设备400还包括接入设备440,接入设备440使得计算设备400能够经由一个或多个网络460通信。这些网络的示例包括公用交换电话网(pstn)、局域网(lan)、广域网(wan)、个域网(pan)或诸如因特网的通信网络的组合。接入设备440可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(nic))中的一个或多个,诸如ieee802.11无线局域网(wlan)无线接口、全球微波互联接入(wi-max)接口、以太网接口、通用串行总线(usb)接口、蜂窝网络接口、蓝牙接口、近场通信(nfc)接口,等等。
138.在本说明书的一个实施例中,计算设备400的上述部件以及图4中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图4所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
139.计算设备400可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或pc的静止计算设备。计算设备400还可以是移动式或静止式的服务器。
140.其中,处理器420用于执行如下计算机可执行指令,该计算机可执行指令被处理器执行时实现上述资源调度方法的步骤。
141.上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的资源调度方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述资源调度方法的技术方案的描述。
142.本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述资源调度方法的步骤。
143.上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的资源调度方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述资源调度方法的技术方案的描述。
144.本说明书一实施例还提供一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述资源调度方法的步骤。
145.上述为本实施例的一种计算机程序的示意性方案。需要说明的是,该计算机程序的技术方案与上述的资源调度方法的技术方案属于同一构思,计算机程序的技术方案未详细描述的细节内容,均可以参见上述资源调度方法的技术方案的描述。
146.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
147.所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
148.需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
149.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
150.以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1