CN103677990B - 虚拟机实时任务的调度方法、装置和虚拟机 - Google Patents
虚拟机实时任务的调度方法、装置和虚拟机 Download PDFInfo
- Publication number
- CN103677990B CN103677990B CN201310684535.0A CN201310684535A CN103677990B CN 103677990 B CN103677990 B CN 103677990B CN 201310684535 A CN201310684535 A CN 201310684535A CN 103677990 B CN103677990 B CN 103677990B
- Authority
- CN
- China
- Prior art keywords
- vcpu
- states
- credit value
- priority
- status information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Transfer Between Computers (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提出一种虚拟机实时任务的调度方法、装置和虚拟机。其中,所述方法包括以下步骤:当任务的执行周期开始时,分别初始化多个虚拟处理器VCPU,并为每个VCPU分配预设大小的信用值,其中,信用值为自然数;分别为每个VCPU分配指定的紧急度Urgency值;以及分别获取每个VCPU的状态信息,并根据状态信息和Urgency值生成优先级队列,以使物理处理器PCPU根据优先级队列选择对应的VCPU执行任务。本发明实施例方法,会在每个周期优先切换具有urgent状态的VCPU,由此,实时任务可以被及时响应。实验使用ping延迟与web服务器的吞吐量表明这种调度方法可以及时处理实时任务,并提高了响应时间的稳定性。
Description
技术领域
本发明涉及虚拟机调度领域,尤其涉及一种虚拟机实时任务的调度方法、装置和虚拟机。
背景技术
随着云计算的快速发展,业内公司提供了越来越多的基于虚拟化技术的服务。它们逐步使用虚拟机代替了传统的物理机,这种方式能够充分利用物理资源,并且提供更好的服务,成为了一种主要发展趋势。
目前,最常被使用到的虚拟机是VMware ESX和Xen(VMware ESX是由VMware公司研发的软件产品,Xen则是剑桥大学创建的开放源代码虚拟机监视器)。Xen作为虚拟机监控程序,使得多个操作系统可以同时运行在单个计算机上,并且支持半虚拟化和虚拟机的在线迁移。在Xen虚拟机中,管理程序会提供区域来运行虚拟机。Dom0是特殊的驱动区域,类似底层物理硬件与其他区域之间的抽象层。因此,Dom0将处理所有I/O(input/output,输入/输出端口)请求。当某个虚拟机产生I/O请求,就会产生虚拟中断,然后将该请求提交给Dom0。类似于进程的上下文切换,在调度器切换虚拟机时,也需要完成相应的上下文切换(例如,运行中虚拟机的状态将被保存,而其它虚拟机的状态将被恢复)。由于上下文切换会带来额外的开销,因此需要根据不同的应用属性做出良好的决策,避免不合理的切换,从而更好的利用物理机。
为此,Xen虚拟机监控程序提供了三种CPU调度算法,Borrowed Virtual Time调度算法、Simple Earliest Deadline First调度算法以及信用调度算法。例如,在信用调度算法中,由于在MapReduce程序中有很多I/O操作,Kang等推迟Dom0来聚集更多的I/O事件一并处理,这大大减少了虚拟处理器VCPU上下文切换的频率。其中还引入了group_id与group_credit的定义,并提供了一种组调度策略,使得在虚拟集群中能更好的运行MapReduce(映射规约编程模型,一种用于大规模数据集的并行运算的编程模型)程序。基于Xen信用调度器、Hu等针对多核机器将核进行分类以处理不同类型的任务(驱动,I/O密集型,计算密集型),而减少上下文切换的开销。
然而目前存在的问题是,上述的两种方法均将VCPU上下文切换开销作为主要考虑因素,从而加速了计算密集型任务的运行。但是不同于物理处理器PCPU,VCPU并不会一直在线,这将带来大量的自旋锁spinlock阻塞。虽然Weng等使用VCRD衡量VCPU之间的关系,并且使用机器学习的方法来预测未来使用情形,但是对于某些实时任务来说,由于实时任务的响应时间需要被限制在毫秒甚至微秒级别,VCPU在执行实时程序时,需要及时反馈信息。然而,Xen的调度策略并不单独标识运行实时任务的VCPU,这不仅导致了切换策略的结果不准确性,也推迟了实时计算的运行。
发明内容
本发明旨在至少解决上述技术问题之一。
为此,本发明的第一个目的在于提出一种虚拟机实时任务的调度方法。该方法会在每个周期优先切换具有urgent状态的VCPU,由此,实时任务可以被及时响应。实验使用ping延迟与web服务器的吞吐量表明这种调度方法可以及时处理实时任务,并提高了响应时间的稳定性。
本发明的第二个目的在于提出一种虚拟机实时任务的调度装置。
本发明的第三个目的在于提出一种虚拟机。
为了实现上述目的,本发明第一方面实施例的虚拟机实时任务的调度方法,包括以下步骤:当任务的执行周期开始时,分别初始化多个虚拟处理器VCPU,并为每个VCPU分配预设大小的信用值,其中,所述信用值为自然数;分别为每个所述VCPU分配指定的紧急度Urgency值;以及分别获取每个所述VCPU的状态信息,并根据所述状态信息和所述Urgency值生成优先级队列,以使物理处理器PCPU根据所述优先级队列选择对应的所述VCPU执行任务。
本发明实施例的虚拟机实时任务的调度方法,添加了新的VCPU的状态信息urgent状态用以标识实时任务,使其在单一的PCPU的运行队列中优先级高于under状态。因此,调度方法会在每个周期优先切换具有urgent状态的VCPU,由此,实时任务可以被及时响应。实验使用ping延迟与web服务器的吞吐量表明这种调度方法可以及时处理实时任务,并提高了响应时间的稳定性。
为了实现上述目的,本发明第二方面实施例的虚拟机实时任务的调度装置,包括:第一分配模块,用于当任务的执行周期开始时,分别初始化多个虚拟处理器VCPU,并为每个VCPU分配预设大小的信用值,其中,所述信用值为自然数;获取与分配模块,用于分别获取每个所述VCPU的状态信息,并为每个所述VCPU分配指定的紧急度Urgency值;以及生成模块,用于根据所述状态信息和所述Urgency值生成优先级队列,以使物理处理器PCPU根据所述优先级队列选择对应的所述VCPU执行任务。
本发明实施例的虚拟机实时任务的调度装置,添加了新的VCPU的状态信息urgent状态用以标识实时任务,使其在单一的PCPU的运行队列中优先级高于under状态。因此,调度方法会在每个周期优先切换具有urgent状态的VCPU,由此,实时任务可以被及时响应。实验使用ping延迟与web服务器的吞吐量表明这种调度方法可以及时处理实时任务,并提高了响应时间的稳定性。
为了实现上述目的,本发明第三方面实施例的虚拟机,包括本发明第二方面实施例的虚拟机实时任务的调度装置。
本发明实施例的虚拟机,添加了新的VCPU的状态信息urgent状态用以标识实时任务,使其在单一的PCPU的运行队列中优先级高于under状态。因此,调度方法会在每个周期优先切换具有urgent状态的VCPU,由此,实时任务可以被及时响应。实验使用ping延迟与web服务器的吞吐量表明这种调度方法可以及时处理实时任务,并提高了响应时间的稳定性。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中,
图1是根据本发明一个实施例的虚拟机实时任务的调度方法的流程图;
图2是根据本发明一个具体实施例的虚拟机实时任务的调度方法的流程图;
图3是根据本发明一个具体实施例的VCPU的状态信息转换的示意图;
图4是根据本发明一个具体实施例的ping延迟测试结果的示意图;
图5是根据本发明一个具体实施例的web服务器的吞吐量的示意图;
图6是根据本发明一个实施例的虚拟机实时任务的调度装置的结构示意图;
图7是根据本发明一个具体实施例的虚拟机实时任务的调度装置的结构示意图;
图8是根据本发明另一个具体实施例的虚拟机实时任务的调度装置的结构示意图;
图9是根据本发明又一个具体实施例的虚拟机实时任务的调度装置的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
下面参考附图描述根据本发明实施例的虚拟机实时任务的调度方法、装置和虚拟机。
实时任务是一类需要在严格时间内得到反馈的任务,然而目前的虚拟机调度方法中并没有提供对实时任务的充分支持,所以实时任务的运行总是被低效率的虚拟I/O以及调度延迟所限制。如果虚拟机调度器能够通过合理的切换与迁移虚拟机,从而实现整体系统的高性能。为此,本发明提出了一种虚拟机实时任务的调度方法,包括以下步骤:当任务的执行周期开始时,分别初始化多个虚拟处理器VCPU,并为每个VCPU分配预设大小的信用值,其中,信用值为自然数;分别为每个VCPU分配指定的紧急度Urgency值;以及分别获取每个VCPU的状态信息,并根据状态信息和Urgency值生成优先级队列,以使物理处理器PCPU根据优先级队列选择对应的VCPU执行任务。
图1是根据本发明一个实施例的虚拟机实时任务的调度方法的流程图。如图1所示,该虚拟机实时任务的调度方法包括以下步骤。
S101,当任务的执行周期开始时,分别初始化多个虚拟处理器VCPU,并为每个VCPU分配预设大小的信用值,其中,信用值为自然数。
S102,分别获取每个VCPU的状态信息,并为每个VCPU分配指定的紧急度Urgency值。
在本发明的实施例中,VCPU的状态信息包括boost状态、urgent状态、under状态、over状态和idle状态。具体地,基于信用调度算法,本发明中引入了一种新的VCPU的状态信息,即urgent状态。当某个VCPU仍然具有剩余的信用值,且该VCPU运行了实时任务时,则该VCPU的状态会被指派为urgent状态。此外,对于VCPU的其它状态信息而言,当某个VCPU仍然具有剩余的信用值时,则该VCPU的状态会被指派为under状态;当某个VCPU的信用值已用完时,则该VCPU的状态会被指派为over状态;当某个VCPU此时不需要PCPU时,则该VCPU的状态会被指派为idle状态;当某个VCPU处于idle状态,且该VCPU接收到了I/O事件时,则该VCPU的状态会被指派为boost状态。
进一步而言,为了保证PCPU及时响应实时任务,为每个VCPU分配指定的紧急度Urgency值。其中,Urgency值为小于等于10的自然数。本发明的方法和现有的信用调度算法不同的是,处于urgent状态的VCPU在PCPU的运行队列中不是以先进先出的方式排列的。在本发明中是通过Urgency值来衡量这些VCPU的实时任务的紧急度,Urgency值越大,VCPU实时任务的紧急度越高。应当理解的是,Urgency值的默认值是0,也就是说,如果某个VCPU处于boost状态,或者under状态,或者over状态,或者idle状态时,为该VCPU分配指定的Urgency值为0,这意味着该VCPU上的任务并不是实时的,可以推迟处理。其中,VCPU的Urgency值可以是用户设定的,或者是任务中被指定的。
S103,根据状态信息和Urgency值生成优先级队列,以使物理处理器PCPU根据优先级队列选择对应的VCPU执行任务。
具体而言,可以根据每个VCPU状态信息的优先级对VCPU进行排序,并根据排序结果按照VCPU状态信息的优先级从高至低的顺序生成优先级队列。其中,VCPU的状态信息的优先级为boost状态的优先级>urgent状态的优先级>under状态的优先级>over状态的优先级>idle状态的优先级。然后,PCPU可根据优先级队列,选择排在优先级队列中队首的VCPU执行任务。此外,如果其中某些VCPU的具有相同的状态信息,则根据VCPU被分配指定的Urgency值对这些VCPU进行排序,并根据排序结果按照VCPU的Urgency值从高至低的顺序生成优先级队列。换言之,本发明实施例中的方法是通过参考VCPU状态信息和VCPU的Urgency值相结合的方式,对VCPU的任务的执行顺序进行排序。应当理解的是,当多个VCPU的状态信息以及状态信息对应的Urgency相同时,根据先进先出的规则对多个VCPU进行排序,并根据排序结果生成优先级队列。也就是说,只有具有相同Urgency值,即具有相同紧急度的处于urgent状态的VCPU,PCPU才使用先进先出的方式选择VCPU执行任务,由此,可以保证紧急度高的实时任务先被执行。
本发明实施例的虚拟机实时任务的调度方法,添加了新的VCPU的状态信息urgent状态用以标识实时任务,使其在单一的PCPU的运行队列中优先级高于under状态。因此,调度方法会在每个周期优先切换具有urgent状态的VCPU,由此,实时任务可以被及时响应。实验使用ping延迟与web服务器的吞吐量表明这种调度方法可以及时处理实时任务,并提高了响应时间的稳定性。
图2是根据本发明一个具体实施例的虚拟机实时任务的调度方法的流程图。如图2所示,该虚拟机实时任务的调度方法包括以下步骤。
S201,当任务的执行周期开始时,分别初始化多个虚拟处理器VCPU,并为每个VCPU分配预设大小的信用值,其中,信用值为自然数。
S202,分别获取每个VCPU的状态信息,并为每个VCPU分配指定的紧急度Urgency值。
S203,根据状态信息和Urgency值生成优先级队列,以使物理处理器PCPU根据优先级队列选择对应的VCPU执行任务。
S204,当VCPU执行任务完成后,从VCPU分配的预设大小的信用值中减去对应的信用值,并根据剩余信用值和VCPU的状态信息获取VCPU更新后的状态信息。
如图3所示,优选地可以根据以下方法定义VCPU的状态信息的转换过程以及相应的转换条:
1、如果VCPU处于boost状态,且VCPU的剩余信用值大于0,且VCPU的Urgency值等于0,则将VCPU的状态信息更新为under状态;
2、如果VCPU处于boost状态,且VCPU的剩余信用值大于0,且VCPU的Urgency值大于0,则将VCPU的状态信息更新为urgent状态;
3、如果VCPU处于boost状态,且VCPU的剩余信用值等于0,则将VCPU的状态信息更新为over状态;
4、如果VCPU处于urgent状态,且VCPU接收到I/O事件,则将VCPU的状态信息更新为boost状态;
5、如果VCPU处于urgent状态,且VCPU的剩余信用值等于0,则将VCPU的状态信息更新为over状态;
6、如果VCPU处于urgent状态,且VCPU的I/O阻塞,则将VCPU的状态信息更新为idle状态;
7、如果VCPU处于under状态,且VCPU的剩余信用值等于0,则将VCPU的状态信息更新为over状态;
8、如果VCPU处于under状态,且VCPU的I/O阻塞,则将VCPU的状态信息更新为idle状态;
9、如果VCPU处于over状态,且VCPU重新分配信用值,且VCPU的Urgency值等于0,则将VCPU的状态信息更新为under状态;
10、如果VCPU处于over状态,且VCPU重新分配信用值,且VCPU的Urgency值大于0,则将VCPU的状态信息更新为urgent状态;
11、如果VCPU处于idle状态,且VCPU接收到I/O事件,则将VCPU的状态信息更新为boost状态。
S205,计算所有的VCPU的剩余信用值的总和。
S206,当VCPU的剩余信用值的总和等于0时,重新为每个VCPU分配预设大小的信用值。
本发明实施例的虚拟机实时任务的调度方法,添加了新的VCPU的状态信息urgent状态用以标识实时任务,使其在单一的PCPU的运行队列中优先级高于under状态。因此,调度方法会在每个周期优先切换具有urgent状态的VCPU,由此,实时任务可以被及时响应。实验使用ping延迟与web服务器的吞吐量表明这种调度方法可以及时处理实时任务,并提高了响应时间的稳定性。
下面结合图4和图5详细说明一下本发明实施例中的虚拟机实时任务的调度方法。
类似于Linux和Xen中的调度模型,我们的模型在每个时钟周期均被调用。在每个时钟周期中,运行于每个PCPU的调度模型将决定下一个执行的VCPU。调度模型同时也决定时间片的长度,其中,时间片即CPU分配给各个任务程序的时间。根据任务的不同种类,设计者和程序员可以设计不同的调度方法,以执行不同的调度策略。
Xen虚拟机使用结构体来表示不同的调度方法。针对于每个调度方法,我们需要定义该结构体中的参数与函数。类似于Xen信用调度算法的结构体,sched_urgent_def调度方法的具体定义如下:
基于信用调度算法,sched_urgent_def调度方法增加了名为urgent的新状态优先级,于是VCPU的所有优先级如下所示:
我们还在每个虚拟机中提供了代理,这些代理可以记录虚拟机的状态信息,例如CPU状态信息、内存状态信息和硬盘状态信息等。在这里它们被用于提供每个虚拟机的紧急度。同时,Xen的VCPU结构体需要被添加参数Urgency值来记录每个VCPU的紧急度。
由于Xen并没有为添加新的调度机制提供注册函数,所以当我们添加注册函数时,则需要修改调度方法数组。紧急调度方法sched_urgent_def在Xen中实现如下:
当调度组件需要调度虚拟机时,调度组件将会请求目前的调度器,然后,调度方法将返回task_slice结构体,该结构体包含了虚拟机的下一步调度操作。紧急调度实施的大体框架如下所示:
处于PCPU运行队列中的VCPU根据优先级从高到低的顺序排列,其中具有urgent状态的VCPU则根据紧急度Urgency值的大小排列。调度核心将选择队列中排在首位的VCPU运行,因此实时任务将会被及时的处理。
我们进行了若干实验来测试我们的紧急调度器,并将测试结果与信用调度模型进行比较。实验系统的硬件配置如下:两个四核Intel(R)Xeon(R)E5620CPU(每个CPU具有四个核共享L2缓存),DDR3内存16GB,DELL PERC 6/I 500GB IDE磁盘,网卡是NetXtreme IIBCM5709Gigabit Ethernet。虚拟机使用Xen 4.0.1,所有的domU运行Ubuntu 12.04i386系统,内核版本是Linux 3.2.0。为了更好的进行实验,每个虚拟机只被分配了一个VCPU。
我们启动了三个客户操作系统,通过修改Xen的配置文件,使得所有的domU运行在一个PCPU上,因为我们的目标是测试单个PCPU运行队列中VCPU之间的切换。我们在每个虚拟机中运行SEPC 2006标准测试程序,对其中的一个VCPU赋予优先级urgent,然后记录这些虚拟机对Ping命令的响应时间。我们比较了与信用调度器的实验结果。
如图4所示,图4中展示了15个连续Ping命令的延迟。其中圆形物理主机线条显示了物理主机的Ping延迟以作为参照。方形信用调度模型线条表示信用调度模型的情况,其平均延迟时间大约是0.605ms,并且某些峰值的延迟超过了0.8ms。实验结果中的大多数峰值是由于Ping的虚拟机位于PCPU运行队列的后端,需要等待之前的VCPU完成任务。相反的,三角紧急调度器线条显示了使用紧急调度器的情况,平均的Ping延迟降低至0.208ms,并且消除了大多数的峰值。这是因为Ping虚拟机被赋予了urgent优先级,在测试的过程中,它将处于PCPU运行队列的前端,因此降低了由于调度过程而造成的ping延迟。正如前面所说,在使用新调度器后,延迟的稳定性也有明显的提高,其标准差从0.406减少为0.026。这类测试证明了紧急调度器可以快速响应实时任务,并且提高了响应时间的稳定性。
然后,我们在虚拟机中部署了Apache2服务器,并使用Httperf测量Web服务器的吞吐量。Httperf是一种测量Web服务器性能的工具,它利用反馈时间来计算Web服务器的吞吐量。如图5所示,相对于信用调度模型,Web服务器的吞吐量在请求率为40req/sec(请求/秒)与70req/sec的情形下,分别增长了28.6%与31.5%。这是因为处于紧急区域的Web服务器的响应时间降低了,所以吞吐量就提高了。
为了实现上述实施例,本发明还提出一种虚拟机实时任务的调度装置。
图6是根据本发明一个实施例的虚拟机实时任务的调度装置的结构示意图。如图6所示,虚拟机实时任务的调度装置包括第一分配模块100、获取与分配模块200和生成模块300。
具体地,分配模块100用于当任务的执行周期开始时,分别初始化多个虚拟处理器VCPU,并为每个VCPU分配预设大小的信用值,其中,信用值为自然数。
获取与分配模块200用于分别获取每个VCPU的状态信息,并为每个VCPU分配指定的紧急度Urgency值。更具体地,VCPU的状态信息包括boost状态、urgent状态、under状态、over状态和idle状态。具体地,基于信用调度算法,本发明中引入了一种新的VCPU的状态信息,即urgent状态。当某个VCPU仍然具有剩余的信用值,且该VCPU运行了实时任务时,则该VCPU的状态会被指派为urgent状态。此外,对于VCPU的其它状态信息而言,当某个VCPU仍然具有剩余的信用值时,则该VCPU的状态会被指派为under状态;当某个VCPU的信用值已用完时,则该VCPU的状态会被指派为over状态;当某个VCPU此时不需要PCPU时,则该VCPU的状态会被指派为idle状态;当某个VCPU处于idle状态,且该VCPU接收到了I/O事件时,则该VCPU的状态会被指派为boost状态。
进一步而言,为了保证PCPU及时响应实时任务,获取与分配模块200为每个VCPU分配指定的紧急度Urgency值。其中,Urgency值为小于等于10的自然数。本发明的方法和现有的信用调度算法不同的是,处于urgent状态的VCPU在PCPU的运行队列中不是以先进先出的方式排列的。在本发明中是通过Urgency值来衡量这些VCPU的实时任务的紧急度,Urgency值越大,VCPU实时任务的紧急度越高。应当理解的是,Urgency值的默认值是0,也就是说,如果某个VCPU处于boost状态,或者under状态,或者over状态,或者idle状态时,获取与分配模块200为该VCPU分配指定的Urgency值为0,这意味着该VCPU上的任务并不是实时的,可以推迟处理。其中,VCPU的Urgency值可以是用户设定的,或者是任务中被指定的。
生成模块300用于根据状态信息和Urgency值生成优先级队列,以使物理处理器PCPU根据优先级队列选择对应的VCPU执行任务。
本发明实施例的虚拟机实时任务的调度装置,添加了新的VCPU的状态信息urgent状态用以标识实时任务,使其在单一的PCPU的运行队列中优先级高于under状态。因此,调度方法会在每个周期优先切换具有urgent状态的VCPU,由此,实时任务可以被及时响应。实验使用ping延迟与web服务器的吞吐量表明这种调度方法可以及时处理实时任务,并提高了响应时间的稳定性。
图7是根据本发明一个具体实施例的虚拟机实时任务的调度装置的结构示意图。如图7所示,虚拟机实时任务的调度装置包括第一分配模块100、获取与分配模块200和生成模块300,其中,生成模块300包括:第一排序单元310、第二排序单元330、第三排序单元340和生成单元320。
具体地,第一排序单元310用于根据每个VCPU状态信息的优先级对VCPU进行排序。更具体地,第一排序单元310可以根据每个VCPU状态信息的优先级对VCPU进行排序,其中,VCPU的状态信息的优先级为boost状态的优先级>urgent状态的优先级>under状态的优先级>over状态的优先级>idle状态的优先级。
生成单元320用于根据排序结果生成优先级队列。更具体地,生成单元320根据排序结果按照VCPU状态信息的优先级从高至低的顺序生成优先级队列。然后,PCPU可根据优先级队列,选择排在优先级队列中队首的VCPU执行任务。
第二排序单元330用于当多个VCPU的状态信息相同时,根据多个VCPU的Urgency值对多个VCPU进行排序,生成单元320还用于根据排序结果生成优先级队列。更具体地,如果其中某些VCPU的具有相同的状态信息,则第二排序单元330根据VCPU被分配指定的Urgency值对这些VCPU进行排序,生成单元320根据排序结果按照VCPU的Urgency值从高至低的顺序生成优先级队列。
第三排序单元340用于当多个VCPU的状态信息以及状态信息对应的Urgency相同时,根据先进先出的规则对多个VCPU进行排序,生成单元320还用于根据排序结果生成优先级队列。也就是说,只有具有相同Urgency值,即具有相同紧急度的处于urgent状态的VCPU,PCPU才使用先进先出的方式选择VCPU执行任务,由此,可以保证紧急度高的实时任务先被执行。
本发明实施例的虚拟机实时任务的调度装置,添加了新的VCPU的状态信息urgent状态用以标识实时任务,使其在单一的PCPU的运行队列中优先级高于under状态。因此,调度方法会在每个周期优先切换具有urgent状态的VCPU,由此,实时任务可以被及时响应。实验使用ping延迟与web服务器的吞吐量表明这种调度方法可以及时处理实时任务,并提高了响应时间的稳定性。
图8是根据本发明另一个具体实施例的虚拟机实时任务的调度装置的结构示意图。如图8所示,虚拟机实时任务的调度装置包括第一分配模块100、获取与分配模块200、生成模块300、更新模块400、计算模块500和第二分配模块600,其中,生成模块300包括:第一排序单元310、第二排序单元330、第三排序单元340和生成单元320。
具体地,更新模块400用于当所述VCPU执行任务完成后,从所述VCPU分配的所述预设大小的信用值中减去对应的信用值,并根据剩余信用值和所述VCPU的状态信息获取所述VCPU更新后的状态信息。
计算模块500用于计算所有的所述VCPU的剩余信用值的总和。
第二分配模块600用于当所述VCPU的剩余信用值的总和等于0时,重新为每个VCPU分配预设大小的信用值。
本发明实施例的虚拟机实时任务的调度装置,添加了新的VCPU的状态信息urgent状态用以标识实时任务,使其在单一的PCPU的运行队列中优先级高于under状态。因此,调度方法会在每个周期优先切换具有urgent状态的VCPU,由此,实时任务可以被及时响应。实验使用ping延迟与web服务器的吞吐量表明这种调度方法可以及时处理实时任务,并提高了响应时间的稳定性。
图9是根据本发明又一个具体实施例的虚拟机实时任务的调度装置的结构示意图。如图9所示,虚拟机实时任务的调度装置包括第一分配模块100、获取与分配模块200、生成模块300、更新模块400、计算模块500和第二分配模块600,其中,生成模块300包括:第一排序单元310、第二排序单元330、第三排序单元340和生成单元320,更新模块400包括:第一更新单元410、第二更新单元420、第三更新单元430、第四更新单元440、第五更新单元450、第六更新单元460、第七更新单元470、第八更新单元480、第九更新单元490、第十更新单元4100和第十一更新单元4110。
具体地,第一更新单元410用于在VCPU处于boost状态,且VCPU的剩余信用值大于0,且VCPU的Urgency值等于0时,将VCPU的状态信息更新为under状态。
第二更新单元420用于在VCPU处于boost状态,且VCPU的剩余信用值大于0,且VCPU的Urgency值大于0时,将VCPU的状态信息更新为urgent状态.
第三更新单元430用于在VCPU处于boost状态,且VCPU的剩余信用值等于0时,将VCPU的状态信息更新为over状态。
第四更新单元440用于在VCPU处于urgent状态,且VCPU接收到I/O事件时,将VCPU的状态信息更新为boost状态。
第五更新单元450用于在VCPU处于urgent状态,且VCPU的剩余信用值等于0时,将VCPU的状态信息更新为over状态。
第六更新单元460用于在VCPU处于urgent状态,且VCPU的I/O阻塞时,将VCPU的状态信息更新为idle状态。
第七更新单元470用于在VCPU处于under状态,且VCPU的剩余信用值等于0时,将VCPU的状态信息更新为over状态。
第八更新单元480用于在VCPU处于under状态,且VCPU的I/O阻塞时,将VCPU的状态信息更新为idle状态。
第九更新单元490用于在VCPU处于over状态,且VCPU重新分配信用值,且VCPU的Urgency值等于0时,将VCPU的状态信息更新为under状态。
第十更新单元4100用于在VCPU处于over状态,且VCPU重新分配信用值,且VCPU的Urgency值大于0时,将VCPU的状态信息更新为urgent状态。
第十一更新单元4110用于在VCPU处于idle状态,且VCPU接收到I/O事件时,将VCPU的状态信息更新为boost状态。
本发明实施例的虚拟机实时任务的调度装置,添加了新的VCPU的状态信息urgent状态用以标识实时任务,使其在单一的PCPU的运行队列中优先级高于under状态。因此,调度方法会在每个周期优先切换具有urgent状态的VCPU,由此,实时任务可以被及时响应。实验使用ping延迟与web服务器的吞吐量表明这种调度方法可以及时处理实时任务,并提高了响应时间的稳定性。
为了实现上述实施例,本发明还提出一种虚拟机。
一种虚拟机包括本发明任一项实施例所述的虚拟机实时任务的调度装置。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
Claims (15)
1.一种虚拟机实时任务的调度方法,其特征在于,包括以下步骤:
当任务的执行周期开始时,分别初始化多个虚拟处理器VCPU,并为每个VCPU分配预设大小的信用值,其中,所述信用值为自然数;
分别获取每个所述VCPU的状态信息,并为每个所述VCPU分配指定的紧急度Urgency值;
根据所述状态信息和所述Urgency值生成优先级队列,以使物理处理器PCPU根据所述优先级队列选择对应的所述VCPU执行任务;
当所述VCPU执行任务完成后,从所述VCPU分配的所述预设大小的信用值中减去对应的信用值,并根据剩余信用值和所述VCPU的状态信息获取所述VCPU更新后的状态信息,其中,如果所述VCPU处于boost状态,且所述VCPU的剩余信用值大于0,且所述VCPU的所述Urgency值等于0,则将所述VCPU的状态信息更新为under状态;如果所述VCPU处于boost状态,且所述VCPU的剩余信用值大于0,且所述VCPU的所述Urgency值大于0,则将所述VCPU的状态信息更新为urgent状态;如果所述VCPU处于boost状态,且所述VCPU的剩余信用值等于0,则将所述VCPU的状态信息更新为over状态;如果所述VCPU处于urgent状态,且所述VCPU接收到I/O事件,则将所述VCPU的状态信息更新为boost状态;如果所述VCPU处于urgent状态,且所述VCPU的剩余信用值等于0,则将所述VCPU的状态信息更新为over状态;如果所述VCPU处于urgent状态,且所述VCPU的I/O阻塞,则将所述VCPU的状态信息更新为idle状态;如果所述VCPU处于under状态,且所述VCPU的剩余信用值等于0,则将所述VCPU的状态信息更新为over状态;如果所述VCPU处于under状态,且所述VCPU的I/O阻塞,则将所述VCPU的状态信息更新为idle状态;如果所述VCPU处于over状态,且所述VCPU重新分配信用值,且所述VCPU的所述Urgency值等于0,则将所述VCPU的状态信息更新为under状态;如果所述VCPU处于over状态,且所述VCPU重新分配信用值,且所述VCPU的所述Urgency值大于0,则将所述VCPU的状态信息更新为urgent状态;如果所述VCPU处于idle状态,且所述VCPU接收到I/O事件,则将所述VCPU的状态信息更新为boost状态。
2.如权利要求1所述的方法,其特征在于,所述根据状态信息和所述Urgency值生成优先级队列具体包括:
根据所述每个VCPU状态信息的优先级对所述VCPU进行排序;以及
根据排序结果生成优先级队列。
3.如权利要求1所述的方法,其特征在于,所述根据状态信息和所述Urgency值生成优先级队列具体包括:
当多个所述VCPU的状态信息相同时,根据所述多个VCPU的所述Urgency值对所述多个VCPU进行排序;以及
根据排序结果生成优先级队列。
4.如权利要求1所述的方法,其特征在于,所述根据状态信息和所述Urgency值生成优先级队列具体包括:
当多个所述VCPU的状态信息以及所述状态信息对应的Urgency值相同时,根据先进先出的规则对所述多个VCPU进行排序;以及
根据排序结果生成优先级队列。
5.如权利要求1-4任意一项所述的方法,其特征在于,所述VCPU的状态信息包括:boost状态、urgent状态、under状态、over状态和idle状态,优先级为boost状态的优先级>urgent状态的优先级>under状态的优先级>over状态的优先级>idle状态的优先级。
6.如权利要求5所述的方法,其特征在于,所述Urgency值为小于等于10的自然数。
7.如权利要求1所述的方法,其特征在于,还包括:
计算所有的所述VCPU的剩余信用值的总和;以及
当所述VCPU的剩余信用值的总和等于0时,重新为每个VCPU分配预设大小的信用值。
8.一种虚拟机实时任务的调度装置,其特征在于,包括:
第一分配模块,用于当任务的执行周期开始时,分别初始化多个虚拟处理器VCPU,并为每个VCPU分配预设大小的信用值,其中,所述信用值为自然数;
获取与分配模块,用于分别获取每个所述VCPU的状态信息,并为每个所述VCPU分配指定的紧急度Urgency值;
生成模块,用于根据所述状态信息和所述Urgency值生成优先级队列,以使物理处理器PCPU根据所述优先级队列选择对应的所述VCPU执行任务;
更新模块,用于当所述VCPU执行任务完成后,从所述VCPU分配的所述预设大小的信用值中减去对应的信用值,并根据剩余信用值和所述VCPU的状态信息获取所述VCPU更新后的状态信息,其中,所述更新模块具体包括:
第一更新单元,用于在所述VCPU处于boost状态,且所述VCPU的剩余信用值大于0,且所述VCPU的所述Urgency值等于0时,将所述VCPU的状态信息更新为under状态;
第二更新单元,用于在所述VCPU处于boost状态,且所述VCPU的剩余信用值大于0,且所述VCPU的所述Urgency值大于0时,将所述VCPU的状态信息更新为urgent状态;
第三更新单元,用于在所述VCPU处于boost状态,且所述VCPU的剩余信用值等于0时,将所述VCPU的状态信息更新为over状态;
第四更新单元,用于在所述VCPU处于urgent状态,且所述VCPU接收到I/O事件时,将所述VCPU的状态信息更新为boost状态;
第五更新单元,用于在所述VCPU处于urgent状态,且所述VCPU的剩余信用值等于0时,将所述VCPU的状态信息更新为over状态;
第六更新单元,用于在所述VCPU处于urgent状态,且所述VCPU的I/O阻塞时,将所述VCPU的状态信息更新为idle状态;
第七更新单元,用于在所述VCPU处于under状态,且所述VCPU的剩余信用值等于0时,将所述VCPU的状态信息更新为over状态;
第八更新单元,用于在所述VCPU处于under状态,且所述VCPU的I/O阻塞时,将所述VCPU的状态信息更新为idle状态;
第九更新单元,用于在所述VCPU处于over状态,且所述VCPU重新分配信用值,且所述VCPU的所述Urgency值等于0时,将所述VCPU的状态信息更新为under状态;
第十更新单元,用于在所述VCPU处于over状态,且所述VCPU重新分配信用值,且所述VCPU的所述Urgency值大于0时,将所述VCPU的状态信息更新为urgent状态;
第十一更新单元,用于在所述VCPU处于idle状态,且所述VCPU接收到I/O事件时,将所述VCPU的状态信息更新为boost状态。
9.如权利要求8所述的装置,其特征在于,所述生成模块具体包括:
第一排序单元,用于根据所述每个VCPU状态信息的优先级对所述VCPU进行排序;以及
生成单元,用于根据排序结果生成优先级队列。
10.如权利要求9所述的装置,其特征在于,所述生成模块具体包括:
第二排序单元,用于当多个所述VCPU的状态信息相同时,根据所述多个VCPU的所述Urgency值对所述多个VCPU进行排序,
所述生成单元还用于根据排序结果生成优先级队列。
11.如权利要求9所述的装置,其特征在于,所述生成模块具体包括:
第三排序单元,用于当多个所述VCPU的状态信息以及所述状态信息对应的Urgency值相同时,根据先进先出的规则对所述多个VCPU进行排序,
所述生成单元还用于根据排序结果生成优先级队列。
12.如权利要求8-11任意一项所述的装置,其特征在于,所述VCPU的状态信息包括:boost状态、urgent状态、under状态、over状态和idle状态,优先级为boost状态的优先级>urgent状态的优先级>under状态的优先级>over状态的优先级>idle状态的优先级。
13.如权利要求12所述的装置,其特征在于,所述Urgency值为小于等于10的自然数。
14.如权利要求8所述的装置,其特征在于,还包括:
计算模块,用于计算所有的所述VCPU的剩余信用值的总和;以及
第二分配模块,用于当所述VCPU的剩余信用值的总和等于0时,重新为每个VCPU分配预设大小的信用值。
15.一种虚拟机,其特征在于,包括权利要求8-14任一项所述的虚拟机实时任务的调度装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310684535.0A CN103677990B (zh) | 2013-12-13 | 2013-12-13 | 虚拟机实时任务的调度方法、装置和虚拟机 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310684535.0A CN103677990B (zh) | 2013-12-13 | 2013-12-13 | 虚拟机实时任务的调度方法、装置和虚拟机 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103677990A CN103677990A (zh) | 2014-03-26 |
CN103677990B true CN103677990B (zh) | 2018-01-16 |
Family
ID=50315645
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310684535.0A Active CN103677990B (zh) | 2013-12-13 | 2013-12-13 | 虚拟机实时任务的调度方法、装置和虚拟机 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103677990B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105159752B (zh) * | 2015-09-22 | 2018-03-30 | 中国人民解放军国防科学技术大学 | 虚拟化云中机器启动时间感知的实时任务与资源调度方法 |
CN105955796B (zh) * | 2016-04-22 | 2018-12-07 | 华中科技大学 | 一种云平台上高性能并行应用的调度方法及系统 |
CN106250217A (zh) * | 2016-07-22 | 2016-12-21 | 无锡华云数据技术服务有限公司 | 一种多虚拟处理器间的同步调度方法及其调度系统 |
CN106897199B (zh) * | 2017-01-12 | 2020-03-10 | 河南理工大学 | 一种基于大数据处理框架的批作业执行时间预测方法 |
CN107678860A (zh) * | 2017-10-13 | 2018-02-09 | 郑州云海信息技术有限公司 | 一种kvm虚拟机cpu调度策略的优化方法及系统 |
CN109814985B (zh) * | 2017-11-20 | 2021-07-16 | 华为技术有限公司 | 一种任务调度方法及调度器、计算设备、系统 |
CN108595249A (zh) * | 2018-05-02 | 2018-09-28 | 联想(北京)有限公司 | 一种虚拟机任务调度方法及电子设备 |
CN112667364B (zh) * | 2021-01-05 | 2022-07-01 | 烽火通信科技股份有限公司 | 绑核与非绑核虚拟混合部署方法、装置、设备及存储介质 |
CN113434262A (zh) * | 2021-08-30 | 2021-09-24 | 云宏信息科技股份有限公司 | dom0调度方法、虚拟机运行方法、存储介质和计算机 |
CN114327767B (zh) * | 2021-12-28 | 2022-08-05 | 元心信息科技集团有限公司 | 任务处理的方法、装置、电子设备及计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102270159A (zh) * | 2011-08-11 | 2011-12-07 | 浙江大学 | 一种虚拟化环境中的准入控制与负载均衡方法 |
CN103064746A (zh) * | 2013-01-23 | 2013-04-24 | 上海交通大学 | 基于当前credit进行预测调度的处理器资源精确分配方法 |
US8539499B1 (en) * | 2008-02-18 | 2013-09-17 | Parallels IP Holdings GmbH | Symmetric multiprocessing with virtual CPU and VSMP technology |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8245234B2 (en) * | 2009-08-10 | 2012-08-14 | Avaya Inc. | Credit scheduler for ordering the execution of tasks |
KR101658035B1 (ko) * | 2010-03-12 | 2016-10-04 | 삼성전자주식회사 | 가상 머신 모니터 및 가상 머신 모니터의 스케줄링 방법 |
KR101690652B1 (ko) * | 2010-08-25 | 2016-12-28 | 삼성전자주식회사 | 멀티코어 시스템의 스케쥴링 장치 및 방법 |
-
2013
- 2013-12-13 CN CN201310684535.0A patent/CN103677990B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8539499B1 (en) * | 2008-02-18 | 2013-09-17 | Parallels IP Holdings GmbH | Symmetric multiprocessing with virtual CPU and VSMP technology |
CN102270159A (zh) * | 2011-08-11 | 2011-12-07 | 浙江大学 | 一种虚拟化环境中的准入控制与负载均衡方法 |
CN103064746A (zh) * | 2013-01-23 | 2013-04-24 | 上海交通大学 | 基于当前credit进行预测调度的处理器资源精确分配方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103677990A (zh) | 2014-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103677990B (zh) | 虚拟机实时任务的调度方法、装置和虚拟机 | |
Le et al. | Allox: compute allocation in hybrid clusters | |
Al-Dhuraibi et al. | Elasticity in cloud computing: state of the art and research challenges | |
CN103069390B (zh) | 在混合计算环境中重新调度工作量的方法和系统 | |
Hussain et al. | A survey on resource allocation in high performance distributed computing systems | |
CN103069389B (zh) | 混合计算环境中的高吞吐量计算的方法和系统 | |
US11816509B2 (en) | Workload placement for virtual GPU enabled systems | |
US11526382B2 (en) | Cascading job scheduling in guests | |
WO2016105732A1 (en) | Techniques to generate a graph model for cloud infrastructure elements | |
US20230035310A1 (en) | Systems that deploy and manage applications with hardware dependencies in distributed computer systems and methods incorporated in the systems | |
CN106250217A (zh) | 一种多虚拟处理器间的同步调度方法及其调度系统 | |
Agbaje et al. | A survey of game-theoretic approach for resource management in cloud computing | |
US20210390405A1 (en) | Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof | |
Emara et al. | Genetic-Based Multi-objective Task Scheduling Algorithm in Cloud Computing Environment. | |
Harichane et al. | KubeSC‐RTP: Smart scheduler for Kubernetes platform on CPU‐GPU heterogeneous systems | |
CN107528871A (zh) | 存储系统中的数据分析 | |
Niu et al. | An adaptive efficiency-fairness meta-scheduler for data-intensive computing | |
CN110275756A (zh) | 虚拟化网元的部署方法以及装置 | |
Grigoras et al. | Elastic management of reconfigurable accelerators | |
US10572412B1 (en) | Interruptible computing instance prioritization | |
Shiekh et al. | A load-balanced hybrid heuristic for allocation of batch of tasks in cloud computing environment | |
Al-Dhuraibi | Flexible framework for elasticity in cloud computing | |
Mian et al. | Managing data-intensive workloads in a cloud | |
Zhang et al. | COBRA: Toward provably efficient semi-clairvoyant scheduling in data analytics systems | |
Baert et al. | A location-aware strategy for agents negotiating load-balancing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |