一种vCPU调度方法、装置、设备及存储介质与流程
未命名
09-29
阅读:87
评论:0

一种vcpu调度方法、装置、设备及存储介质
技术领域
1.本方案属于计算机操作系统领域,尤其涉及一种vcpu调度方法、装置、设备及存储介质。
背景技术:
2.目前,在type1虚拟化方案中,已支持了虚拟机的vcpu的动态调度,但动态调度方法基本都是基于时间片轮询,即对于单一物理cpu核调度多个vcpu的情况,将分配各vcpu拥有相同的、固定的调度时间片,在vcpu消耗完自己的时间片时,切换到下一个vcpu运行,此方法虽然能调度多个vcpu,但无法保证某一主虚拟机对应的vcpu的运行时间,导致这一主虚拟机对应的vcpu需要获得运行时,却因此时在运行其他vcpu,而无法获得运行,从而降低了主虚拟机的实时性。
技术实现要素:
3.有鉴于此,本发明实施例提供了一种vcpu调度方法、装置、设备及存储介质,用于调度type1虚拟机的vcpu,所述方法包括:把第一虚拟机的vcpu配置为主vcpu,其他虚拟机的vcpu配置为从vcpu,主vcpu的每个物理cpu核至少在一个从vcpu对应物理cpu核中;当任一虚拟机因为空闲而陷入到hypervisor中时,把该虚拟机的当前vcpu移出其物理cpu核的调度队列;当前vcpu为主vcpu时,在该当前vcpu的调度计时器下一个到期时调度该当前vcpu;当前vcpu为从vcpu时,在该当前vcpu的调度计时器下一个到期后将其加入到该物理cpu核上的调度队列中。本发明实施例的技术方案设置vcpu的主从关系,主vcpu在空闲时才运行其他vcpu,进而实现保证主vcpu的运行时间,提高其对应的虚拟机的实时性。
4.第一方面,本发明实施例提供了一种vcpu调度方法,用于调度type1虚拟机的vcpu,包括:把第一虚拟机的vcpu配置为主vcpu,其他虚拟机的vcpu配置为从vcpu,主vcpu的每个物理cpu核至少在一个从vcpu对应物理cpu核中;当任一虚拟机因为空闲而陷入到hypervisor中时,把该虚拟机的当前vcpu移出其物理cpu核的调度队列;当前vcpu为主vcpu时,在该当前vcpu的调度计时器下一个到期时调度该当前vcpu;当前vcpu为从vcpu时,在该当前vcpu的调度计时器下一个到期时将其加入到该物理cpu核上的调度队列中。
5.由上,通过设置vcpu的主从关系对主从vcpu进行不同的处理,主vcpu不空闲时则一直运行,主vcpu空闲时在其调度计时器到期时被调度,从vcpu在空闲且其调度计时器到期时加入到调度队列中按照该队列调度,进而保证主vcpu的运行时间,提高其对应的虚拟机的实时性。
6.在第一方面的一种可能实施方式中,当前vcpu为主vcpu时,把当前vcpu移出其物理cpu核的调度队列后调度其物理cpu核的调度队列中下一个从vcpu。
7.由上,通过上述方法在主vcpu空闲时调度从vcpu。
8.在第一方面的一种可能实施方式中,当前vcpu为从vcpu时,把该当前vcpu移出该物理cpu核的调度队列后,该物理cpu核的调度队列存在下一个从vcpu时调度该下一个从
vcpu,否则该物理cpu核进入空闲状态。
9.由上,通过上述方法在主vcpu空闲实现从vcpu之间按照调度队列进行调度。
10.在第一方面的一种可能实施方式中,所述的在该当前vcpu的调度计时器下一个到期时调度该当前vcpu,具体包括:通过hypervisor的时间事件在该当前vcpu的调度计时器下一个到期时调度该当前vcpu。
11.由上,通过hypervisor的时间事件在主vcpu的调度计时器下一个到期时及时调度主vcpu。
12.在第一方面的一种可能实施方式中,所述的在该当前vcpu的调度计时器下一个到期时将其加入到该物理cpu核上的调度队列中,具体包括:通过hypervisor超时队列在该当前vcpu的调度计时器下一个到期时将其加入到该物理cpu核上的调度队列中。
13.由上,通过hypervisor超时队列在从vcpu的调度计时器下一个到期时将其加入到该物理cpu核上的调度队列中,在主vcpu空闲时则根据该调度队列调度从vcpu。
14.在第一方面的一种可能实施方式中,当任一虚拟机因为空闲而陷入到hypervisor,具体包括:任一虚拟机空闲时,其空闲线程通过运行wfi指令陷入到hypervisor中。
15.由上,任一虚拟机因为空闲而陷入到hypervisor,不空闲时则不陷入到hypervisor,主vcpu不空闲时则一直运行,保障其实时性。
16.第二方面,本发明实施例提供了一种vcpu调度装置,用于调度type1虚拟机的vcpu,包括:配置模块,用于把第一虚拟机的vcpu配置为主vcpu,其他虚拟机的vcpu配置为从vcpu,主vcpu的每个物理cpu核至少在一个从vcpu对应物理cpu核中;空闲模块,用于当任一虚拟机因为空闲而陷入到hypervisor中时,把该虚拟机的当前vcpu移出其物理cpu核的调度队列;主vcpu调度模块,用于当前vcpu为主vcpu时,在该当前vcpu的调度计时器下一个到期时调度该当前vcpu;从vcpu调度模块,用于当前vcpu为从vcpu时,在该当前vcpu的调度计时器下一个到期时将其加入到该物理cpu核上的调度队列中。
17.由上,通过设置vcpu的主从关系对主从vcpu进行不同的处理,主vcpu不空闲时则一直运行,主vcpu空闲时在其调度计时器到期时被调度,从vcpu在空闲且其调度计时器到期时加入到调度队列中按照该队列调度,进而保证主vcpu的运行时间,提高其对应的虚拟机的实时性。
18.在第二方面的一种可能实施方式中,主vcpu调度模块还具体用于当前vcpu为主vcpu时,把当前vcpu移出其物理cpu核的调度队列后调度其物理cpu核的调度队列中下一个从vcpu。
19.由上,通过上述装置在主vcpu空闲时调度从vcpu。
20.在第二方面的一种可能实施方式中,从vcpu调度模块还具体用于当前vcpu为从vcpu时,把该当前vcpu移出该物理cpu核的调度队列后,该物理cpu核的调度队列存在下一个从vcpu时调度该下一个从vcpu,否则该物理cpu核进入空闲状态。
21.由上,通过上述装置在主vcpu空闲实现从vcpu间按照调度队列进行调度。
22.在第二方面的一种可能实施方式中,主vcpu调度模块在该当前vcpu的调度计时器下一个到期时调度该当前vcpu,具体包括:通过hypervisor的时间事件在该当前vcpu的调度计时器下一个到期时调度该当前vcpu。
23.由上,通过hypervisor的时间事件在主vcpu的调度计时器下一个到期时及时调度主vcpu。
24.在第二方面的一种可能实施方式中,从vcpu调度模块在该当前vcpu的调度计时器下一个到期时将其加入到该物理cpu核上的调度队列中,具体包括:通过hypervisor超时队列在该当前vcpu的调度计时器下一个到期时将其加入到该物理cpu核上的调度队列中。
25.由上,通过hypervisor超时队列在从vcpu的调度计时器下一个到期时将其加入到该物理cpu核上的调度队列中。
26.在第二方面的一种可能实施方式中,空闲模块具体用于任一虚拟机空闲时,其空闲线程通过运行wfi指令陷入到hypervisor中。
27.由上,任一虚拟机因为空闲而陷入到hypervisor,不空闲时则不陷入到hypervisor,主vcpu不空闲时则一直运行,保障其实时性。
28.第三方面,本发明实施例提供了一种操作系统,其被计算机执行时使得所述计算机执行第一方面任一所述方法。
29.第四方面,本发明实施例提供了一种计算设备,包括:总线;通信接口,其与所述总线连接;至少一个处理器,其与所述总线连接;以及至少一个存储器,其与所述总线连接并存储有程序指令,所述程序指令当被所述至少一个处理器执行时使得所述至少一个处理器执行本发明第一方面任一所述实施方式。
30.第五方面,本发明实施例提供了一种计算机可读存储介质,其上存储有程序指令,所述程序指令当被计算机执行时使得所述计算机执行本发明第一方面任一所述实施方式。
附图说明
31.图1为本发明的一种vcpu调度方法实施例一的流程示意图;
32.图2为本发明的一种vcpu调度方法实施例二中物理cpu与vcpu的关系示意图;
33.图3为本发明的一种vcpu调度方法实施例二的流程示意图;
34.图4为本发明的一种vcpu调度装置实施例的结构示意图;
35.图5为本发明各实施例计算设备的结构示意图。
具体实施方式
36.在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
37.在以下的描述中,所涉及的术语“第一\第二\第三等”或模块a、模块b、模块c等,仅用于区别类似的对象,或用于区别不同的实施例,不代表针对对象的特定排序,可以理解地,在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本发明实施例能够以除了在这里图示或描述的以外的顺序实施。
38.在以下的描述中,所涉及的表示步骤的标号,如s110、s120
……
等,并不表示一定会按此步骤执行,在允许的情况下可以互换前后步骤的顺序,或同时执行。
39.除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,
不是旨在限制本发明。
40.本发明实施例提供了一种vcpu调度方法、装置、设备及存储介质,用于调度type1虚拟机的vcpu,所述方法包括:把第一虚拟机的vcpu配置为主vcpu,其他虚拟机的vcpu配置为从vcpu,主vcpu的每个物理cpu核至少在一个从vcpu对应物理cpu核中;当任一虚拟机因为空闲而陷入到hypervisor中时,把该虚拟机的当前vcpu移出其物理cpu核的调度队列;当前vcpu为主vcpu时,在该当前vcpu的调度计时器下一个到期时调度该当前vcpu;当前vcpu为从vcpu时,在该当前vcpu的调度计时器下一个到期时将其加入到该物理cpu核上的调度队列中。本发明实施例的技术方案设置vcpu的主从关系,主vcpu在空闲时才运行其他vcpu,进而实现保证主vcpu的运行时间,提高其对应的虚拟机的实时性。
41.首先介绍本发明实施例的使用场景,本发明实施例用于调度type1虚拟机的vcpu。type1虚拟机的hypervisor直接建立在硬件裸机上,在其上运行各虚拟机,其中一个虚拟机为主虚拟机(在各实施例中为第一虚拟机),需要较高的实时性,本发明实施例的技术方案为主虚拟机的vcpu及时调度,提高主虚拟机的实时性。
42.下面结合附图介绍本发明的各实施例。
43.首先结合图1介绍本发明的一种vcpu调度方法实施例一。
44.图1示出了一种vcpu调度方法实施例一的流程,包括步骤s110至s150。
45.s110:把第一虚拟机的vcpu配置为主vcpu,其他虚拟机的vcpu配置为从vcpu,主vcpu的每个物理cpu核至少在一个从vcpu对应物理cpu核中。
46.其中,第一虚拟机为实时性要求较高的虚拟机,其对应的vcpu需要及时调度,以提高第一虚拟机的实时性。
47.s120:当任一虚拟机因为空闲而陷入到hypervisor中时,把该虚拟机的当前vcpu移出其物理cpu核的调度队列。
48.其中,把该虚拟机的当前vcpu移出其物理cpu核的调度队列也就是停止该vcpu的调度。
49.需要注意的是,在本发明中主vcpu的虚拟机不空闲时,主vcpu一直运行,不会陷入到hypervisor进行重调度。在本发明中从vcpu的虚拟机不空闲且被不被主虚拟机抢占时,从vcpu按照调度队列调度,也主动不会主动陷入到hypervisor进行重调度,但从vcpu运行的物理cpu核会被主cpu抢占,从而从vcpu暂停运行。
50.还需要注意的是,本发明中每个vcpu存在一个调度计时器(timer),该调度计时器不同于传统的时间轮询调度周期,一般小于该时间轮询调度周期,根据vcpu对应的虚拟机的实时要求设置,其大小随对应的虚拟机的实时性要求反向设置,第一虚拟机实时性要求高,其vcpu的调度计时器周期短。在该调度计时器到期后hypervisor会触发对应的vcpu的一些与调度相关事件。在一些实施例中还获取该当前vcpu的调度计时器下一个到期的时间。
51.在一些实施例中,使用arm架构cpu的虚拟机中,当虚拟机空闲时通过其操作系统的空闲线程运行wfi指令而陷入hypervisor中。
52.s130:判断当前vcpu是否是主vcpu。如果是,则运行步骤s140,否则运行步骤s150。
53.s140:当前vcpu为主vcpu时,在该当前vcpu的调度计时器下一个到期时调度该当前vcpu。
54.其中,现有轮询调度方法中不存在本发明的调度计时器,无法获得当前vcpu的调度计时器下一个到期时间,在该当前vcpu的调度计时器下一个到期对应的时刻,不一定会调度该当前vcpu,即不一定调度该主vcpu。本发明则在该主vcpu的调度计时器下一个到期时肯定调度该主vcpu,从而在第一虚拟机需要运行时实时调度主vcpu。
55.在一些实施例中,在hypervisor的时间事件中添加该vcpu的调度计时器下一个到期的时间事件中,在该当前vcpu的调度计时器下一个到期时通过该时间事件触发调度该当前vcpu。
56.在一些实施例中,本步骤中在该主vcpu的调度计时器下一个到期前,还调度该当前vcpu对应物理cpu核上的调度队列中的下一个vcpu。
57.由上,当前vcpu为主vcpu时,在该当前vcpu的调度计时器下一个到期时调度该当前vcpu,主vcpu无需按照传统的时间轮询调度周期等待调度,从而使主vcpu被及时实时调度,同时主vcpu被调度后如果不空闲则一直运行,也无需按照传统的时间轮询调度周期而间隔运行,提高了对应的第一虚拟机的实时性。
58.s150:当前vcpu为从vcpu时,在该当前vcpu的下一被调度时间到期后将其加入到该物理cpu核上的调度队列中。
59.其中,在该从vcpu的调度计时器下一个到期时将其加入到该物理cpu核上的调度队列中,如果此时该物理cpu核上对应的主vcpu在运行,则该主vcpu一直运行,该从vcpu肯定不会被调度;如果此时该物理cpu核上对应的主vcpu不在运行时,则根据该从vcpu在调度队列中位置调度。
60.在一些实施例中,在hypervisor的超时队列中添加该当前vcpu的调度计时器下一个到期的超时事件,该超时事件把当前vcpu加入到该物理cpu核上的调度队列中,以按照该调度队列进行调度。
61.在一些实施例中,本步骤中在该从vcpu的调度计时器下一个到期前,在该物理cpu核的调度队列存在下一个从vcpu时调度该下一个从vcpu,否则该物理cpu核进入空闲状态。
62.由上,当前vcpu为从vcpu时,在该当前vcpu的调度计时器下一个到期时将其加入到该物理cpu核上的调度队列中,从而在主vcpu不忙时才按照该调度队列调度从vcpu,提高主vcpu的调度实施性。
63.综上,一种vcpu调度方法实施例一设置vcpu的主从关系,对主从vcpu进行不同的处理,主vcpu不空闲时则一直运行,主vcpu空闲时调度从vcpu且主vcpu在调度计时器到期时被调度,从vcpu在空闲且其调度计时器到期时加入到调度队列中按照该队列调度,进而保证主vcpu的运行时间,提高其对应的虚拟机的实时性。
64.下面结合图2和图3介绍本发明的一种vcpu调度方法实施例二。
65.一种vcpu调度方法实施例二是一种vcpu调度方法实施例一在一个具体场景的实施方式,具有一种vcpu调度方法实施例一的一切优点。
66.一种vcpu调度方法实施例二的使用场景为对arm架构的物理cpu进行typ1虚拟化的场景。
67.图2示出了一种vcpu调度方法实施例二中物理cpu与vcpu的关系,该物理cpu有4个物理cpu核,分别为cpu0、cpu1、cpu2和cpu3,第一虚拟机具有vcpu10,vcpu10为主vcpu,运行在cpu0上,第二虚拟机有4个vcpu,分别为vcpu20、vcpu21、vcpu22和vcpu23,均为从vcpu,分
别运行在cpu0、cpu1、cpu2和cpu3上,cpu0上将运行两个vcpu。
68.图3示出了一种vcpu调度方法实施例二的流程,包括步骤s210至s280。
69.s210:把第一虚拟机的vcpu10配置为主vcpu,第二虚拟机的各vcpu配置为从vcpu。
70.s220:当任一虚拟机空闲时,其空闲线程运行wfi指令陷入到hypervisor中。
71.s230:在hypervisor中,在wfi陷入处将当前vcpu移出其物理cpu核的调度队列,并获取该当前vcpu的调度计时器的下一个到期时间。
72.s240:判断当前vcpu是否是主vcpu10。如果是,则运行步骤s250,否则运行步骤s270。
73.其中,vcpu10为主vcpu,判断当前vcpu是否是vcpu10就是判断当前vcpu是否是主vcpu。
74.s250:在hypervisor时间事件中添加vcpu10的调度计时器的下一个到期的时间事件,并调度cpu0的调度队列中下一个从vcpu。
75.其中,该时间事件为在vcpu10的调度计时器的下一个到期时调度vcpu10,vcpu10为主vcpu,也就是在主vcpu的调度计时器的下一个到期时调度主vcpu,从而及时调度主vcpu。
76.其中,因为cpu0上的从vcpu为vcpu20,调度cpu0的调度队列中下一个从vcpu,即在vcpu10(主vcpu)空闲时调度vcpu20(从vcpu)。
77.s260:在vcpu10的调度计时器的下一个到期时在cpu0调度vcpu10。
78.s270:在hypervisor超时队列中添加该当前vcpu的调度计时器的下一个到期的超时事件,进入空闲状态。
79.其中,该超时事件在该当前vcpu的调度计时器的下一个到期时把该当前vcpu加入到调度队列。
80.其中,无论该当前vcpu为vcpu20、vcpu21、vcpu22或vcpu23均执行本步骤,cpu0、cpu1、cpu2和cpu3的从vcpu分别对应vcpu20、vcpu21、vcpu22和vcpu23,也就是只有一个从vcpu,在当前vcpu的调度计时器的下一个到期之前,其对应的物理cpu核进入空闲状态。
81.s280:在该当前vcpu的调度计时器的下一个到期时把该当前vcpu加入到调度队列
82.其中,如果该当前vcpu为从vcpu20,运行在cpu0上,在该从vcpu的调度计时器下一个到期时,如果此时cpu0运行vcpu10即运行主vcpu,则该vcpu20肯定不会被调度,如果此时vcpu10空闲,则根据调度队列调度vcpu20;如果该当前vcpu为其他从vcpu,其他从vcpu对应的物理cpu核上没有主vcpu,则根据调度队列调度该当前vcpu。
83.下面结合图4介绍本发明的一种vcpu调度装置实施例。
84.一种vcpu调度装置实施例运行一种vcpu调度方法实施例一的所述方法,具有一种vcpu调度方法实施例一的一切优点。
85.图4示出了一种vcpu调度装置实施例包括:配置模块410、空闲模块420、主从判断模块430、主vcpu调度模块440和从vcpu调度模块450。
86.配置模块410用于把第一虚拟机的vcpu配置为主vcpu,其他虚拟机的vcpu配置为从vcpu,主vcpu的每个物理cpu核至少在一个从vcpu对应物理cpu核中。其具体原理和优点请参照一种vcpu调度方法实施例一的步骤s110。
87.空闲模块420用于当任一虚拟机因为空闲而陷入到hypervisor中时,把该虚拟机
的当前vcpu移出其物理cpu核的调度队列。其具体原理和优点请参照一种vcpu调度方法实施例一的步骤s120。
88.主从判断模块430用于判断当前vcpu是否是主vcpu。如果是,则运行主vcpu调度模块440,否则运行从vcpu调度模块450。其具体原理和优点请参照一种vcpu调度方法实施例一的步骤s130。
89.主vcpu调度模块440用于当前vcpu为主vcpu时,在该当前vcpu的调度计时器下一个到期时调度该当前vcpu。其具体原理和优点请参照一种vcpu调度方法实施例一的步骤s140。
90.从vcpu调度模块450用于当前vcpu为从vcpu时,在该当前vcpu的调度计时器下一个到期时将其加入到该物理cpu核上的调度队列中。其具体原理和优点请参照一种vcpu调度方法实施例一的步骤s150。
91.本发明实施例还提供了一种操作系统,其被计算机执行时使得所述计算机执行一种vcpu调度方法实施例一或一种vcpu调度方法实施例二所述方法。
92.本发明实施例还提供了一种计算设备,下面图5详细介绍。
93.该计算设备500包括,处理器510、存储器520、通信接口530、总线540。
94.应理解,该图所示的计算设备500中的通信接口530可以用于与其他设备之间进行通信。
95.其中,该处理器510可以与存储器520连接。该存储器520可以用于存储该程序代码和数据。因此,该存储器520可以是处理器510内部的存储单元,也可以是与处理器510独立的外部存储单元,还可以是包括处理器510内部的存储单元和与处理器510独立的外部存储单元的部件。
96.可选的,计算设备500还可以包括总线540。其中,存储器520、通信接口530可以通过总线540与处理器510连接。总线540可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(efstended industry standard architecture,eisa)总线等。所述总线540可以分为地址总线、数据总线、控制总线等。为便于表示,该图中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。
97.应理解,在本发明实施例中,该处理器510可以采用中央处理单元(central processing unit,cpu)。该处理器还可以是其它通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field programmable gate array,fpga)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。或者该处理器510采用一个或多个集成电路,用于执行相关程序,以实现本发明实施例所提供的技术方案。
98.该存储器520可以包括只读存储器和随机存取存储器,并向处理器510提供指令和数据。处理器510的一部分还可以包括非易失性随机存取存储器。例如,处理器510还可以存储设备类型的信息。
99.在计算设备500运行时,所述处理器510执行所述存储器520中的计算机执行指令执行各方法实施例的操作步骤。
100.应理解,根据本发明实施例的计算设备500可以对应于执行根据本发明各实施例
的方法中的相应主体,并且计算设备500中的各个模块的上述和其它操作和/或功能分别为了实现本方法实施例各方法的相应流程,为了简洁,在此不再赘述。
101.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
102.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
103.在本发明所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
104.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本方法实施例方案的目的。
105.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
106.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述译码方法的全部或部分步骤。而前述的存储介质包括,u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
107.本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时用于执行各方法实施例的操作步骤。
108.本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括,具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
109.计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
110.计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括、但不限于无线、电线、光缆、rf等等,或者上述的任意合适的组合。
111.可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
112.注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,均属于本发明保护范畴。
技术特征:
1.一种vcpu调度方法,其特征在于,用于调度type1虚拟机的vcpu,包括:把第一虚拟机的vcpu配置为主vcpu,其他虚拟机的vcpu配置为从vcpu,主vcpu的每个物理cpu核至少在一个从vcpu对应的物理cpu核中;当任一虚拟机因为空闲而陷入到hypervisor中时,把该虚拟机的当前vcpu移出其物理cpu核的调度队列;当前vcpu为主vcpu时,在该当前vcpu的调度计时器下一个到期时调度该主vcpu;当前vcpu为从vcpu时,在该当前vcpu的调度计时器下一个到期时将其加入到该物理cpu核上的调度队列中。2.根据权利要求1所述方法,其特征在于,当前vcpu为主vcpu时,把当前vcpu移出其物理cpu核的调度队列后调度其物理cpu核的调度队列中下一个从vcpu。3.根据权利要求1所述方法,其特征在于,当前vcpu为从vcpu时,把该当前vcpu移出该物理cpu核的调度队列后,该物理cpu核的调度队列存在下一个从vcpu时还调度该下一个从vcpu,否则该物理cpu核进入空闲状态。4.根据权利要求1所述方法,其特征在于,所述的在该当前vcpu的调度计时器下一个到期时调度该当前vcpu,具体包括:通过hypervisor的时间事件在该当前vcpu的调度计时器下一个到期时调度该当前vcpu。5.根据权利要求2所述方法,其特征在于,所述的在该当前vcpu的调度计时器下一个到期时将其加入到该物理cpu核上的调度队列中,具体包括:通过hypervisor超时队列在该当前vcpu的调度计时器下一个到期时将其加入到该物理cpu核上的调度队列中。6.根据权利要求1至5任一所述方法,其特征在于,当任一虚拟机因为空闲而陷入到hypervisor,具体包括:任一虚拟机空闲时,其空闲线程通过运行wfi指令陷入到hypervisor中。7.一种vcpu调度装置,其特征在于,用于调度type1虚拟机的vcpu,包括:配置模块,用于把第一虚拟机的vcpu配置为主vcpu,其他虚拟机的vcpu配置为从vcpu,主vcpu的每个物理cpu核至少在一个从vcpu对应物理cpu核中;空闲模块,用于当任一虚拟机因为空闲而陷入到hypervisor中时,把该虚拟机的当前vcpu移出其物理cpu核的调度队列;主vcpu调度模块,用于当前vcpu为主vcpu时,在该当前vcpu的调度计时器下一个到期时调度该当前vcpu;从vcpu调度模块,用于当前vcpu为从vcpu时,在该当前vcpu的调度计时器下一个到期时将其加入到该物理cpu核上的调度队列中。8.一种操作系统,其特征在于,其被计算机执行时使得所述计算机执行权利要求1至6任一所述方法。9.一种计算设备,其特征在于,包括:总线;通信接口,其与所述总线连接;至少一个处理器,其与所述总线连接;以及
至少一个存储器,其与所述总线连接并存储有程序指令,所述程序指令当被所述至少一个处理器执行时使得所述至少一个处理器执行权利要求1至6任一所述方法。10.一种计算机可读存储介质,其特征在于,其上存储有程序指令,所述程序指令当被计算机执行时使得所述计算机执行权利要求1至6任一所述方法。
技术总结
本发明实施例提供了一种vCPU调度方法、装置、设备及存储介质,用于调度type1虚拟机的vCPU,所述方法包括:把第一虚拟机的vCPU配置为主vCPU,其他虚拟机的vCPU配置为从vCPU;当任一虚拟机因为空闲而陷入到hypervisor中时,把该虚拟机的当前vCPU移出其物理CPU核的调度队列;当前vCPU为主vCPU时,在该当前vCPU的调度计时器下一个到期时调度该当前vCPU;当前vCPU为从vCPU时,在该当前vCPU的调度计时器下一个到期时将其加入到该物理CPU核上的调度队列中。本发明实施例的技术方案设置vCPU的主从关系,主vCPU在空闲时才运行其他vCPU,进而实现保证主vCPU的运行时间,提高其对应的虚拟机的实时性。的实时性。的实时性。
技术研发人员:田焱
受保护的技术使用者:科东(广州)软件科技有限公司
技术研发日:2023.06.29
技术公布日:2023/9/23
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/