CN101408853A - 一种虚拟机调度的装置及方法 - Google Patents
一种虚拟机调度的装置及方法 Download PDFInfo
- Publication number
- CN101408853A CN101408853A CNA2008102249403A CN200810224940A CN101408853A CN 101408853 A CN101408853 A CN 101408853A CN A2008102249403 A CNA2008102249403 A CN A2008102249403A CN 200810224940 A CN200810224940 A CN 200810224940A CN 101408853 A CN101408853 A CN 101408853A
- Authority
- CN
- China
- Prior art keywords
- virtual
- virtual processor
- processor
- window
- completed
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 35
- 238000001514 detection method Methods 0.000 claims abstract description 74
- 230000000737 periodic effect Effects 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明涉及虚拟机调度的方法和装置,所述方法包括,按调度优先级从高到低的顺序将虚拟处理器排列在可运行队列中,还包括:步骤1,将I/O密集型的虚拟处理器加入到检测窗口,为虚拟处理器分配初始的资源配额;步骤2,按顺序调度可运行队列中的虚拟处理器,如果被调度的虚拟处理器不在检测窗口内,运行虚拟处理器,运行完成后调度可运行队列中下一个虚拟处理器,否则,依据虚拟处理器当前的剩余资源配额确定是否运行虚拟处理器,在运行完成后更新虚拟处理器的剩余资源配额,调度可运行队列中下一个虚拟处理器。本发明能够保证CPU密集型应用、周期型I/O应用和I/O密集型应用,占用处理器资源和I/O资源的公平性。
Description
技术领域
本发明涉及虚拟化领域,尤其涉及一种虚拟机调度的装置及方法。
背景技术
虚拟化使得不同服务可以互不干扰的整合在同一物理机器上,充分利用系统资源。当服务整合时,通常将每个服务放在一个独立的虚拟机中。因此,需要保证虚拟机之间的公平和效率。公平是指同一个物理节点上的虚拟机,应该以用户指定的配额共享物理资源,互不干扰;效率是指尽可能提高整个系统的吞吐率。
在虚拟机系统中,调度器是用于调度虚拟机的VCPU(虚拟处理器)的装置。在系统启动时,每个虚拟机的VCPU根据其所属虚拟机包含的VCPU的数量,获得对应的信誉度。当VCPU还有剩余信誉度时,该VCPU处于UNDER状态;当VCPU的信誉度被用完时,该VCPU处于OVER状态;当VCPU进行I/O处理时,该VCPU处于BOOST状态。每个被调度运行的VCPU最多运行30ms,对于被调度运行的VCPU,每隔10毫秒将该VCPU的信誉度的值减去100。当系统中VCPU的信誉度总和小于0时,由调度器重新为各个VCPU分配信誉度。
调度器的调度方法如图1所示。调度器将具有任务等待调度的VCPU按调度的优先级排列到可运行队列中。按VCPU所处的状态确定VCPU的调度优先级,由高到低的顺序为BOOST状态、UNDER状态、OVER状态,可运行队列的队尾为系统的空转VCPU。在图1中,虚拟处理器A、B、H处于BOOST状态,虚拟处理器C、D、E处于UNDER状态,虚拟处理器F处于OVER状态,虚拟处理器G为空转VCPU。被调度运行完的虚拟处理器H插入到其相同状态的所有VCPU之后。
现有技术中的调度器可以保证VCPU之间按照信誉度的比例公平共享处理器资源,但是没有考虑I/O资源共享的公平性。例如,在同一物理机器上的两个虚拟机A和B上运行阿帕奇网络服务器,并赋予A和B相同的信誉度的值。若虚拟机B上阿帕奇服务器的服务线程远多于虚拟机A的服务线程,或虚拟机B上的负载远大于虚拟机A,则虚拟机B获得的网络带宽远远高于虚拟机A。这意味着虚拟机B“偷走”了虚拟机A的部分网络处理能力。这种I/O资源共享的不公平会导致I/O性能隔离较差且不可预测,使得虚拟化技术不能适用于性能依赖于I/O公平性的应用程序。
发明内容
为解决上述问题,本发明提供了一种虚拟机调度的装置及方法,能够提高虚拟机之间占用资源的公平性。
本发明公开了一种虚拟机调度的方法,按调度优先级从高到低的顺序将待调度的虚拟机的虚拟处理器排列在可运行队列中,包括:
步骤1,将I/O密集型的虚拟处理器加入到检测窗口,为所述虚拟处理器分配初始的资源配额;
步骤2,按顺序调度所述可运行队列中的虚拟处理器,如果被调度的虚拟处理器不在所述检测窗口内,运行所述虚拟处理器,运行完成后调度所述可运行队列中下一个虚拟处理器,否则,执行下一步骤;
步骤3,依据所述虚拟处理器当前剩余的资源配额确定是否运行所述虚拟处理器,在运行完成后更新所述虚拟处理器的剩余资源配额,调度所述可运行队列中下一个虚拟处理器。
所述资源配额对应表示为I/O信誉度。
所述步骤3进一步为:
步骤31,如果所述虚拟处理器当前的I/O信誉度大于0,则确定运行所述虚拟处理器,在运行完成后,将所述虚拟处理器的I/O信誉度减去所述运行中完成的I/O处理数量,并调度所述可运行队列中下一个虚拟处理器,否则,调度所述可运行队列中下一个虚拟处理器。
所述步骤2和所述步骤3之间还包括:
步骤41,判断所述检测窗口中包含的虚拟处理器个数是否为1,如果是,运行所述虚拟处理器,在运行完成后调度所述可运行队列中下一个虚拟处理器,否则,执行所述步骤3。
所述步骤2和所述步骤41间还包括:
步骤51,判断所述虚拟处理器所属的虚拟机是否属于驱动域或特权虚拟机所在的域,如果是,则运行所述虚拟处理器,在运行完成后调度所述可运行队列中下一个虚拟处理器,否则,执行所述步骤41。
所述将所述虚拟处理器的I/O信誉度减去所述运行中完成的I/O处理数量后还包括:
步骤61,在所述检测窗口内的所有虚拟处理器的I/O信誉度都小于0时,按所述初始的资源配额增加所述检测窗口内的所有虚拟处理器的I/O信誉度。
所述步骤1中将I/O密集型的虚拟处理器加入到检测窗口进一步为:
步骤71,统计所述虚拟处理器运行时完成的I/O操作数量大于预设值的次数占所述虚拟处理器运行的次数的比值;
步骤72,当所述比值大于1/2时,将所述虚拟处理器加入到检测窗口。
所述步骤71进一步为:
步骤81,对应于每个虚拟处理器维护一历史窗口,每个所述历史窗口的长度相同;
步骤82,如果所述虚拟处理器运行时完成的I/O操作数量大于预设值,则将所述历史窗口的对应位置为1,否则,将所述历史窗口的对应位置为0;
步骤83,将所述历史窗口中1的个数除以所述历史窗口长度,所得商为所述比值。
所述步骤71进一步为:
步骤91,对应于每个虚拟处理器维护一历史窗口,每个所述历史窗口的长度相同;
步骤92,如果所述虚拟处理器运行时完成对网络设备或块设备的I/O操作数量大于预设值,则将所述历史窗口的对应位置为1,否则,将所述历史窗口的对应位置为0;
步骤93,将所述历史窗口中1的个数除以所述历史窗口长度,所得商为所述比值。
对于网络设备,所述I/O处理数量为发送和接收的网络包的数量。
对于块设备,所述I/O处理数量为读和写的磁盘块的数量。
本发明还公开了一种虚拟机调度的装置,用于按调度优先级从高到低的顺序将待调度的虚拟机的虚拟处理器排列在可运行队列中,所述装置包括:
检测窗口模块,用于将I/O密集型的虚拟处理器加入到检测窗口,为所述虚拟处理器分配初始的资源配额;
调度判断模块,用于按顺序调度所述可运行队列中的虚拟处理器,如果被调度的虚拟处理器不在所述检测窗口内,运行所述虚拟处理器,运行完成后调度所述可运行队列中下一个虚拟处理器,否则,启动调度控制模块;
所述调度控制模块包括资源配额判断模块,
所述资源配额判断模块,用于依据所述虚拟处理器当前剩余的资源配额确定是否运行所述虚拟处理器,在运行完成后更新所述虚拟处理器的剩余资源配额,调度所述可运行队列中下一个虚拟处理器。
所述资源配额对应表示为I/O信誉度。
所述资源配额判断模块,进一步用于在所述虚拟处理器当前的I/O信誉度大于0时,确定运行所述虚拟处理器,在运行完成后,将所述虚拟处理器的I/O信誉度减去所述运行中完成的I/O处理数量,并调度所述可运行队列中下一个虚拟处理器,在所述虚拟处理器当前的I/O信誉度不大于0时,调度所述可运行队列中下一个虚拟处理器。
所述调度控制模块还包括数量判断模块,
所述数量判断模块用于判断所述检测窗口中包含的虚拟处理器个数是否为1,如果是,运行所述虚拟处理器,在运行完成后调度所述可运行队列中下一个虚拟处理器,否则,启动所述资源配额判断模块。
所述调度控制模块还包括所属域判断模块,
所述所属域判断模块用于判断所述虚拟处理器所属的虚拟机是否属于驱动域或特权虚拟机所在的域,如果是,则运行所述虚拟处理器,在运行完成后调度所述可运行队列中下一个虚拟处理器,否则,启动所述数量判断模块。
所述资源配额判断模块还用于在将所述虚拟处理器的I/O信誉度减去所述运行中完成的I/O处理数量后,在所述检测窗口内的所有虚拟处理器的I/O信誉度都小于0时,按所述初始的资源配额增加所述检测窗口内的所有虚拟处理器的I/O信誉度。
所述检测窗口模块在将I/O密集型的虚拟处理器加入到检测窗口时进一步用于统计所述虚拟处理器运行时完成的I/O操作数量大于预设值的次数占所述虚拟处理器运行的次数的比值,并在所述比值大于1/2时,将所述虚拟处理器加入到检测窗口。
所述检测窗口模块在统计所述虚拟处理器运行时完成的I/O操作数量大于预设值的次数占所述虚拟处理器运行的次数的比值时进一步用于对应于每个虚拟处理器维护一历史窗口,每个所述历史窗口的长度相同;如果所述虚拟处理器运行时完成的I/O操作数量大于预设值,则将所述历史窗口的对应位置为1,否则,将所述历史窗口的对应位置为0;将所述历史窗口中1的个数除以所述历史窗口长度,所得商为所述比值。
所述检测窗口模块在统计所述虚拟处理器运行时完成的I/O操作数量大于预设值的次数占所述虚拟处理器运行的次数的比值时进一步用于对应于每个虚拟处理器维护一历史窗口,每个所述历史窗口的长度相同;如果所述虚拟处理器运行时完成对网络设备或块设备的I/O操作数量大于预设值,则将所述历史窗口的对应位置为1,否则,将所述历史窗口的对应位置为0;将所述历史窗口中1的个数除以所述历史窗口长度,所得商为所述比值。
对于网络设备,所述I/O处理数量为发送和接收的网络包的数量。
对于块设备,所述I/O处理数量为读和写的磁盘块的数量。
本发明的有益效果在于,通过检测窗口和I/O信誉度对I/O密集型VCPU占用处理器资源进行控制,从而保证CPU密集型应用、周期型I/O应用和I/O密集型应用,占用处理器资源和I/O资源的公平性。
附图说明
图1是现有技术的调度器工作方法的示意图;
图2是本发明虚拟机调度的方法流程图;
图3是本发明中向检测窗口加入VCPU的方法流程图;
图4是本发明中对在检测窗口内的VCPU调度的方法流程图;
图5是本发明的实施例的工作方法的示意图;
图6是本发明虚拟机调度的装置结构图。
具体实施方式
下面结合附图,对本发明做进一步的详细描述。
本发明在现有技术的基础上增加检测窗口和I/O信誉度。I/O信誉度用于表示检测窗口中的VCPU的资源配额。
资源配额由用户指定,I/O信誉度的值同该资源配额成正比,从而保证采用本发明,使每个虚拟机的VCPU获得的I/O处理能力与用户指定的资源配额一致。
采用现有技术中方案按调度优先级从高到低的顺序将待调度的虚拟机的虚拟处理器排列在可运行队列中后,执行步骤如图2所示。
步骤S201,将I/O密集型的VCPU加入到检测窗口,为该VCPU分配初始的I/O信誉度。
步骤S202,按顺序调度可运行队列中的VCPU,判断被调度的VCPU是否不在所述检测窗口内,如果是,执行步骤S203,否则,执行步骤S204。
步骤S203,运行该VCPU,运行完成后调度所述可运行队列中下一个VCPU。
步骤S204,依据该VCPU的I/O信誉度调度该VCPU,完成后调度可运行队列中的下一个VCPU。
系统中应用可分为三种:CPU密集型、周期性I/O型和I/O密集型,相应于应用,VCPU也分为上述三种。由于只有I/O密集型应用会对系统I/O资源造成压力,因而只需要限制I/O密集型应用获得的I/O处理能力,同时保证其不会由于其它两种应用的存在,而不被调度。
I/O密集型VCPU为一半以上的负载都是I/O操作的VCPU。
所述步骤S202中将I/O密集型的VCPU加入到检测窗口的具体实施方式如图3所示。
步骤S301,对应于每个VCPU维护一历史窗口,每个历史窗口的长度相同。
步骤S302,如果VCPU运行时完成的I/O操作数量大于预设值,则将其对应的历史窗口的对应位置为1,否则,将其对应的历史窗口的对应位置为0。
步骤S303,将历史窗口中1的个数计为io-degree,将io-degree除以该历史窗口长度,所得商为比值。
步骤S304,当所述比值大于1/2时,确定该比值对应的VCPU为I/O密集型,将该VCPU加入到检测窗口中。
采用上述方法能够区分所述三类VCPU。CPU密集型VCPU的io-degree的值通常为0;周期型I/O的VCPU的io-degree的值通常小于历史窗口长度的一半;I/O密集型的VCPU的io-degree的值大于历史窗口长度的一半,且小于或等于历史窗口的长度。
上述算法中使用预设值,用以防止干扰。因为在非特权虚拟机的操作系统中,包含有守护程序,尤其是网络守护程序。当该虚拟机没有任何负载时,所述守护程序周期性的进行I/O操作,然后不做任何CPU处理,进行空转。因而部分VCPU可能被唤醒,执行上述I/O操作,然后继续空转。
如果只考虑VCPU以BOOST状态被选中运行的次数,而忽略被选中运行后执行的I/O处理数量,则由于所述进行空转的VCPU的历史窗口中1的个数的不断累加,而无法区分I/O密集型VCPU和所述进行空转的VCPU。基于上述原因,在本实施例中预设值为3或4。
所述步骤S204的具体实施方式如图4所示。
步骤S401,判断VCPU当前的I/O信誉度是否大于0,如果是,则执行步骤S402,否则,执行步骤S403.
步骤S402,确定运行VCPU,在运行完成后,将该VCPU的I/O信誉度减去本次运行中完成的I/O处理数量,在检测窗口内的所有VCPU的I/O信誉度都小于0时,按初始的资源配额增加检测窗口内的所有VCPU的I/O信誉度,并调度所述可运行队列中下一个VCPU。
步骤S403,调度可运行队列中下一个VCPU。
在上述方法中,如果可运行队列上只有一个虚拟机的VCPU,且其I/O信誉度小于0,而检测窗口中还有I/O信誉度的值大于0的VCPU,但是由于该VCPU在等待I/O事件,并不在可运行队列上,因此,可运行队列上虚拟机的VCPU的I/O信誉度的值不会被增加。此时可运行队列上虚拟机的VCPU不被运行,调度所述可运行队列中下一个VCPU,该VCPU为系统空转VCPU。
在另一个实施方式中,在I/O检测窗口中只有一个VCPU时,因为此时系统中没有其它VCPU与其竞争I/O资源,所以不对该VCPU进行限制。具体方法为在所述步骤S401前增加步骤411,判断所述检测窗口中包含的VCPU个数是否为1,如果是,运行该VCPU,在运行完成后调度可运行队列中的下一个VCPU,否则,执行所述步骤S401。
在另一个实施方式中,对特权虚拟机的CPU占用I/O资源不做限制,给予驱动域和D0域,D0域为特权虚拟机所在的域。虚拟机更多I/O特权。具体方法为在步骤411前增加步骤421,判断VCPU所属的虚拟机是否属于驱动域或D0域,如果是,则运行该VCPU,在运行完成后调度可运行队列中的下一个VCPU,否则,执行所述步骤411。
在虚拟机系统中有多个I/O设备。其中一些属于专属设备,例如键盘和鼠标,该类设备必须专属于某个虚拟机,或者以很大的时间粒度在虚拟机之间切换;对于该类设备在虚拟机之间的共享不做控制。其中某些设备属于假脱机设备,例如打印机,它们的共享粒度大于传统的共享设备,并且保证只有在前一个任务完成的情况下,才能执行新的任务;因此不需要保证该类设备的公平共享。本发明控制虚拟机系统中块设备和网络设备,两者合称为核心设备。
在一个具体实施方式中,所述步骤S202中将I/O密集型的VCPU加入到检测窗口的具体实施方式如下。
步骤311,对应于每个VCPU维护一历史窗口,每个历史窗口的长度相同。
步骤312,如果VCPU运行时完成对核心设备的I/O操作数量大于预设值,则将其对应的历史窗口的对应位置为1,否则,将其对应的历史窗口的对应位置为0。
步骤313,将历史窗口中1的个数计为io-degree,将io-degree除以该历史窗口长度,所得商为比值。
步骤314,当所述比值大于1/2时,确定该比值对应的VCPU为I/O密集型,将该VCPU加入到检测窗口中。
现有技术中的信誉度和每个虚拟机获得的CPU处理时间相对应,而本发明中的I/O信誉度同完成I/O处理数量相对应。对于网络设备,I/O处理数量为发送和接收网络包的数量;对于块设备,I/O处理数量为读和写的磁盘块数目。
虚拟机系统中,对于每一类设备都有一对前端和后端驱动与之对应,以统计VCPU上次运行过程中完成的I/O处理数量,并将其从虚拟机中传递给调度器。
本发明的一具体实施例如图5所示。
系统启动时,按每个虚拟机的VCPU个数为该虚拟机的VCPU分配CPU信誉度。根据现有技术中方法,按调度优先级从高到低的顺序将待调度的VCPU排列在可运行队列上。从运行队列的队头开始,遍历调度具有可运行队列中的VCPU。若被调度的VCPU不在检测窗口内,则直接选择其进行运行,运行完后,调度下一个VCPU。如果被调度的VCPU处于检测窗口内,则判断其I/O是否大于0,如果是,则选择其运行;否则,调度可运行队列上的下一个VCPU。
每个被选中运行的VCPU最多运行30ms。若某个VCPU被选中运行,则每隔10毫秒后,将其CPU信誉度的值减去100。当整个系统虚拟机的VCPU的CPU信誉度总和小于0时,重新为各个虚拟机的VCPU分配CPU信誉度。若被调度的VCPU处于检测窗口中,则在其运行后,将其I/O信誉度值减去其本次运行时完成的I/O处理数量。
对于虚拟机的VCPU,如果其历史窗口的1的个数小于等于历史窗口长度的一半,则将其从检测窗口中取出;否则,将其加入检测窗口。当VCPU进入I/O检测窗口时,按资源配额为其分配一定的初始I/O信誉度。如果I/O检测窗口中所有VCPU的I/O信誉度的值都小于0,则增加检测窗口中所有VCPU的I/O信誉度值,以使被阻塞的VCPU可以继续运行。
本发明的虚拟机调度的装置,用于按调度优先级从高到低的顺序将待调度的虚拟机的VCPU排列在可运行队列中,结构如图6所示,包括:检测窗口模块601、调度判断模块602、调度控制模块。
检测窗口模块601,用于将I/O密集型的VCPU加入到检测窗口,为VCPU分配初始的资源配额。
资源配额对应表示为I/O信誉度。
检测窗口模块601在将I/O密集型的虚拟处理器加入到检测窗口时进一步用于统计VCPU运行时完成的I/O操作数量大于预设值的次数占该VCPU运行的次数的比值,并在比值大于1/2时,将该VCPU加入到检测窗口。
在一个具体实施方式中,检测窗口模块601在统计VCPU运行时完成的I/O操作数量大于预设值的次数占VCPU运行的次数的比值时进一步用于对应于每个VCPU维护一历史窗口,每个历史窗口的长度相同;如果VCPU运行时完成的I/O操作数量大于预设值,则将历史窗口的对应位置为1,否则,将历史窗口的对应位置为0;将历史窗口中1的个数除以历史窗口长度,所得商为比值。
在另一个具体实施方式中,检测窗口模块601在统计VCPU运行时完成的I/O操作数量大于预设值的次数占VCPU运行的次数的比值时进一步用于对应于每个VCPU维护一历史窗口,每个历史窗口的长度相同;如果VCPU运行时完成对网络设备或块设备的I/O操作数量大于预设值,则将历史窗口的对应位置为1,否则,将历史窗口的对应位置为0;将历史窗口中1的个数除以历史窗口长度,所得商为比值。对于网络设备,I/O处理数量为发送和接收的网络包的数量。对于块设备,I/O处理数量为读和写的磁盘块的数量。
调度判断模块602,用于按顺序调度可运行队列中的VCPU,如果被调度的VCPU不在检测窗口内,运行VCPU,运行完成后调度可运行队列中下一个VCPU,否则,启动调度控制模块603;
调度控制模块603包括:所属域判断模块631、数量判断模块632、资源配额判断模块633。
所属域判断模块631,用于判断VCPU所属的虚拟机是否属于驱动域或D0域,如果是,则运行VCPU,在运行完成后调度可运行队列中下一个VCPU,否则,启动数量判断模块632。
数量判断模块632,用于判断检测窗口中包含的VCPU个数是否为1,如果是,运行VCPU,在运行完成后调度可运行队列中下一个VCPU,否则,启动资源配额判断模块633。
资源配额判断模块633,用于在VCPU当前的I/O信誉度大于0时,确定运行VCPU,在运行完成后,将VCPU的I/O信誉度减去运行中完成的I/O处理数量,并调度可运行队列中下一个VCPU,在VCPU当前的I/O信誉度不大于0时,调度可运行队列中下一个VCPU。
资源配额判断模块633还用于在将VCPU的I/O信誉度减去运行中完成的I/O处理数量后,在检测窗口内的所有VCPU的I/O信誉度都小于0时,按初始的资源配额增加所述检测窗口内的所有VCPU的I/O信誉度。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。
Claims (22)
1.一种虚拟机调度的方法,按调度优先级从高到低的顺序将待调度的虚拟机的虚拟处理器排列在可运行队列中,其特征在于,包括:
步骤1,将I/O密集型的虚拟处理器加入到检测窗口,为所述虚拟处理器分配初始的资源配额;
步骤2,按顺序调度所述可运行队列中的虚拟处理器,如果被调度的虚拟处理器不在所述检测窗口内,运行所述虚拟处理器,运行完成后调度所述可运行队列中下一个虚拟处理器,否则,执行下一步骤;
步骤3,依据所述虚拟处理器当前剩余的资源配额确定是否运行所述虚拟处理器,在运行完成后更新所述虚拟处理器的剩余资源配额,调度所述可运行队列中下一个虚拟处理器。
2.如权利要求1所述虚拟机调度的方法,其特征在于,所述资源配额对应表示为I/O信誉度。
3.如权利要求2所述虚拟机调度的方法,其特征在于,所述步骤3进一步为:
步骤31,如果所述虚拟处理器当前的I/O信誉度大于0,则确定运行所述虚拟处理器,在运行完成后,将所述虚拟处理器的I/O信誉度减去所述运行中完成的I/O处理数量,并调度所述可运行队列中下一个虚拟处理器,否则,调度所述可运行队列中下一个虚拟处理器。
4.如权利要求3所述虚拟机调度的方法,其特征在于,所述步骤2和所述步骤3之间还包括:
步骤41,判断所述检测窗口中包含的虚拟处理器个数是否为1,如果是,运行所述虚拟处理器,在运行完成后调度所述可运行队列中下一个虚拟处理器,否则,执行所述步骤3。
5.如权利要求4所述虚拟机调度的方法,其特征在于,所述步骤2和所述步骤41间还包括:
步骤51,判断所述虚拟处理器所属的虚拟机是否属于驱动域或特权虚拟机所在的域,如果是,则运行所述虚拟处理器,在运行完成后调度所述可运行队列中下一个虚拟处理器,否则,执行所述步骤41。
6.如权利要求3所述虚拟机调度的方法,其特征在于,所述将所述虚拟处理器的I/O信誉度减去所述运行中完成的I/O处理数量后还包括:
步骤61,在所述检测窗口内的所有虚拟处理器的I/O信誉度都小于0时,按所述初始的资源配额增加所述检测窗口内的所有虚拟处理器的I/O信誉度。
7.如权利要求1所述虚拟机调度的方法,其特征在于,所述步骤1中将I/O密集型的虚拟处理器加入到检测窗口进一步为:
步骤71,统计所述虚拟处理器运行时完成的I/O操作数量大于预设值的次数占所述虚拟处理器运行的次数的比值;
步骤72,当所述比值大于1/2时,将所述虚拟处理器加入到检测窗口。
8.如权利要求7所述虚拟机调度的方法,其特征在于,所述步骤71进一步为:
步骤81,对应于每个虚拟处理器维护一历史窗口,每个所述历史窗口的长度相同;
步骤82,如果所述虚拟处理器运行时完成的I/O操作数量大于预设值,则将所述历史窗口的对应位置为1,否则,将所述历史窗口的对应位置为0;
步骤83,将所述历史窗口中1的个数除以所述历史窗口长度,所得商为所述比值。
9.如权利要求7所述虚拟机调度的方法,其特征在于,
所述步骤71进一步为:
步骤91,对应于每个虚拟处理器维护一历史窗口,每个所述历史窗口的长度相同;
步骤92,如果所述虚拟处理器运行时完成对网络设备或块设备的I/O操作数量大于预设值,则将所述历史窗口的对应位置为1,否则,将所述历史窗口的对应位置为0;
步骤93,将所述历史窗口中1的个数除以所述历史窗口长度,所得商为所述比值。
10.如权利要求9中所述虚拟机调度的方法,其特征在于,
对于网络设备,所述I/O处理数量为发送和接收的网络包的数量。
11.如权利要求9中所述虚拟机调度的方法,其特征在于,
对于块设备,所述I/O处理数量为读和写的磁盘块的数量。
12.一种虚拟机调度的装置,用于按调度优先级从高到低的顺序将待调度的虚拟机的虚拟处理器排列在可运行队列中,其特征在于,所述装置包括:
检测窗口模块,用于将I/O密集型的虚拟处理器加入到检测窗口,为所述虚拟处理器分配初始的资源配额;
调度判断模块,用于按顺序调度所述可运行队列中的虚拟处理器,如果被调度的虚拟处理器不在所述检测窗口内,运行所述虚拟处理器,运行完成后调度所述可运行队列中下一个虚拟处理器,否则,启动调度控制模块;
所述调度控制模块包括资源配额判断模块,
所述资源配额判断模块,用于依据所述虚拟处理器当前剩余的资源配额确定是否运行所述虚拟处理器,在运行完成后更新所述虚拟处理器的剩余资源配额,调度所述可运行队列中下一个虚拟处理器。
13.如权利要求12所述虚拟机调度的装置,其特征在于,所述资源配额对应表示为I/O信誉度。
14.如权利要求13所述虚拟机调度的装置,其特征在于,所述资源配额判断模块,进一步用于在所述虚拟处理器当前的I/O信誉度大于0时,确定运行所述虚拟处理器,在运行完成后,将所述虚拟处理器的I/O信誉度减去所述运行中完成的I/O处理数量,并调度所述可运行队列中下一个虚拟处理器,在所述虚拟处理器当前的I/O信誉度不大于0时,调度所述可运行队列中下一个虚拟处理器。
15.如权利要求14所述虚拟机调度的装置,其特征在于,
所述调度控制模块还包括数量判断模块,
所述数量判断模块用于判断所述检测窗口中包含的虚拟处理器个数是否为1,如果是,运行所述虚拟处理器,在运行完成后调度所述可运行队列中下一个虚拟处理器,否则,启动所述资源配额判断模块。
16.如权利要求15所述虚拟机调度的装置,其特征在于,
所述调度控制模块还包括所属域判断模块,
所述所属域判断模块用于判断所述虚拟处理器所属的虚拟机是否属于驱动域或特权虚拟机所在的域,如果是,则运行所述虚拟处理器,在运行完成后调度所述可运行队列中下一个虚拟处理器,否则,启动所述数量判断模块。
17.如权利要求14所述虚拟机调度的装置,其特征在于,
所述资源配额判断模块还用于在将所述虚拟处理器的I/O信誉度减去所述运行中完成的I/O处理数量后,在所述检测窗口内的所有虚拟处理器的I/O信誉度都小于0时,按所述初始的资源配额增加所述检测窗口内的所有虚拟处理器的I/O信誉度。
18.如权利要求12所述虚拟机调度的装置,其特征在于,
所述检测窗口模块在将I/O密集型的虚拟处理器加入到检测窗口时进一步用于统计所述虚拟处理器运行时完成的I/O操作数量大于预设值的次数占所述虚拟处理器运行的次数的比值,并在所述比值大于1/2时,将所述虚拟处理器加入到检测窗口。
19.如权利要求18所述虚拟机调度的装置,其特征在于,所述检测窗口模块在统计所述虚拟处理器运行时完成的I/O操作数量大于预设值的次数占所述虚拟处理器运行的次数的比值时进一步用于对应于每个虚拟处理器维护一历史窗口,每个所述历史窗口的长度相同;如果所述虚拟处理器运行时完成的I/O操作数量大于预设值,则将所述历史窗口的对应位置为1,否则,将所述历史窗口的对应位置为0;将所述历史窗口中1的个数除以所述历史窗口长度,所得商为所述比值。
20.如权利要求18所述虚拟机调度的装置,其特征在于,所述检测窗口模块在统计所述虚拟处理器运行时完成的I/O操作数量大于预设值的次数占所述虚拟处理器运行的次数的比值时进一步用于对应于每个虚拟处理器维护一历史窗口,每个所述历史窗口的长度相同;如果所述虚拟处理器运行时完成对网络设备或块设备的I/O操作数量大于预设值,则将所述历史窗口的对应位置为1,否则,将所述历史窗口的对应位置为0;将所述历史窗口中1的个数除以所述历史窗口长度,所得商为所述比值。
21.如权利要求19中所述虚拟机调度的装置,其特征在于,
对于网络设备,所述I/O处理数量为发送和接收的网络包的数量。
22.如权利要求19中所述虚拟机调度的装置,其特征在于,
对于块设备,所述I/O处理数量为读和写的磁盘块的数量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102249403A CN101408853B (zh) | 2008-10-27 | 2008-10-27 | 一种虚拟机调度的装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102249403A CN101408853B (zh) | 2008-10-27 | 2008-10-27 | 一种虚拟机调度的装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101408853A true CN101408853A (zh) | 2009-04-15 |
CN101408853B CN101408853B (zh) | 2010-10-13 |
Family
ID=40571874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008102249403A Active CN101408853B (zh) | 2008-10-27 | 2008-10-27 | 一种虚拟机调度的装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101408853B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719082B (zh) * | 2009-12-24 | 2013-01-02 | 中国科学院计算技术研究所 | 虚拟化计算平台中应用请求调度的方法及其系统 |
CN103049332A (zh) * | 2012-12-06 | 2013-04-17 | 华中科技大学 | 一种虚拟cpu调度方法 |
CN103106112A (zh) * | 2013-02-05 | 2013-05-15 | 浪潮(北京)电子信息产业有限公司 | 一种基于最高负载的进行负载均衡调度的方法及设备 |
CN102110217B (zh) * | 2009-12-28 | 2013-07-24 | 北京安码科技有限公司 | 一种通过虚拟机岗位轮换实现自动修复的方法 |
CN103294494A (zh) * | 2012-02-29 | 2013-09-11 | 中兴通讯股份有限公司 | 一种虚拟系统自动化部署的方法和系统 |
CN103744808A (zh) * | 2013-12-31 | 2014-04-23 | 百度在线网络技术(北京)有限公司 | 一种用于控制i/o请求的方法与设备 |
CN103870313A (zh) * | 2012-12-17 | 2014-06-18 | 中国移动通信集团公司 | 一种虚拟机任务调度方法及系统 |
WO2014114060A1 (zh) * | 2013-01-23 | 2014-07-31 | 上海交通大学 | 基于当前credit进行预测调度的处理器资源精确分配方法 |
CN107479945A (zh) * | 2017-08-15 | 2017-12-15 | 爱普(福建)科技有限公司 | 一种虚拟机资源调度方法及装置 |
CN108255572A (zh) * | 2016-12-29 | 2018-07-06 | 华为技术有限公司 | 一种vcpu切换方法和物理主机 |
CN110197314A (zh) * | 2018-02-27 | 2019-09-03 | 北京京东尚科信息技术有限公司 | 一种调度方法和装置 |
-
2008
- 2008-10-27 CN CN2008102249403A patent/CN101408853B/zh active Active
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719082B (zh) * | 2009-12-24 | 2013-01-02 | 中国科学院计算技术研究所 | 虚拟化计算平台中应用请求调度的方法及其系统 |
CN102110217B (zh) * | 2009-12-28 | 2013-07-24 | 北京安码科技有限公司 | 一种通过虚拟机岗位轮换实现自动修复的方法 |
CN103294494A (zh) * | 2012-02-29 | 2013-09-11 | 中兴通讯股份有限公司 | 一种虚拟系统自动化部署的方法和系统 |
CN103294494B (zh) * | 2012-02-29 | 2018-07-03 | 中兴通讯股份有限公司 | 一种虚拟系统自动化部署的方法和系统 |
CN103049332B (zh) * | 2012-12-06 | 2015-05-20 | 华中科技大学 | 一种虚拟cpu调度方法 |
CN103049332A (zh) * | 2012-12-06 | 2013-04-17 | 华中科技大学 | 一种虚拟cpu调度方法 |
CN103870313A (zh) * | 2012-12-17 | 2014-06-18 | 中国移动通信集团公司 | 一种虚拟机任务调度方法及系统 |
CN103870313B (zh) * | 2012-12-17 | 2017-02-08 | 中国移动通信集团公司 | 一种虚拟机任务调度方法及系统 |
WO2014114060A1 (zh) * | 2013-01-23 | 2014-07-31 | 上海交通大学 | 基于当前credit进行预测调度的处理器资源精确分配方法 |
US9286127B2 (en) | 2013-01-23 | 2016-03-15 | Shanghai Jiao Tong University | Method for allocating processor resources precisely by means of predictive scheduling based on current credits |
CN103106112A (zh) * | 2013-02-05 | 2013-05-15 | 浪潮(北京)电子信息产业有限公司 | 一种基于最高负载的进行负载均衡调度的方法及设备 |
CN103744808A (zh) * | 2013-12-31 | 2014-04-23 | 百度在线网络技术(北京)有限公司 | 一种用于控制i/o请求的方法与设备 |
CN103744808B (zh) * | 2013-12-31 | 2017-12-26 | 百度在线网络技术(北京)有限公司 | 一种用于控制i/o请求的方法与设备 |
CN108255572A (zh) * | 2016-12-29 | 2018-07-06 | 华为技术有限公司 | 一种vcpu切换方法和物理主机 |
CN107479945A (zh) * | 2017-08-15 | 2017-12-15 | 爱普(福建)科技有限公司 | 一种虚拟机资源调度方法及装置 |
CN107479945B (zh) * | 2017-08-15 | 2021-06-22 | 爱普(福建)科技有限公司 | 一种虚拟机资源调度方法及装置 |
CN110197314A (zh) * | 2018-02-27 | 2019-09-03 | 北京京东尚科信息技术有限公司 | 一种调度方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101408853B (zh) | 2010-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101408853A (zh) | 一种虚拟机调度的装置及方法 | |
US8918784B1 (en) | Providing service quality levels through CPU scheduling | |
CN102317917B (zh) | 热点域虚拟机cpu调度方法及虚拟机系统 | |
CN103064746B (zh) | 基于当前credit进行预测调度的处理器资源精确分配方法 | |
Delgado et al. | Kairos: Preemptive data center scheduling without runtime estimates | |
EP2701074A1 (en) | Method, device, and system for performing scheduling in multi-processor core system | |
JP4705051B2 (ja) | 計算機システム | |
CN103678003A (zh) | 一种实时性增强的虚拟cpu调度方法 | |
CN105550040B (zh) | 基于kvm平台的虚拟机cpu资源预留算法 | |
CN104598298A (zh) | 基于虚拟机当前工作性质以及任务负载的虚拟机调度算法 | |
JP4348639B2 (ja) | マルチプロセッサシステム、ワークロード管理方法 | |
JP2009223842A (ja) | 仮想計算機制御プログラム及び仮想計算機システム | |
CN101968749B (zh) | 虚拟机过度分配环境下的mpi消息接收方法 | |
CN103049314A (zh) | 一种开放式系统实时调度方法 | |
Huh et al. | Cross‐layer resource control and scheduling for improving interactivity in Android | |
CN105045667A (zh) | 一种用于虚拟机vCPU调度的资源池管理方法 | |
KR101330609B1 (ko) | 모바일 멀티코어 가상화 시스템에서 실시간 처리를 보장하기 위한 스케쥴링 방법 | |
CN108874534B (zh) | 一种pcpu资源的调度方法和装置 | |
Wang et al. | Unleashing the power of preemptive priority-based scheduling for real-time gpu tasks | |
Wang et al. | GCAPS: GPU context-aware preemptive priority-based scheduling for real-time tasks | |
CN108804212A (zh) | 用于将任务安排成循环的进度表的方法和装置 | |
CN103777995B (zh) | 虚拟化环境下基于群调度的同步优化调度系统和调度方法 | |
JP2001282560A (ja) | 仮想計算機制御方法及びその実施装置並びにその処理プログラムを記録した記録媒体 | |
CN110109743B (zh) | 一种实时进程调度方法 | |
Lee et al. | Fine-grained I/O traffic control middleware for I/O fairness in Virtualized system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230726 Address after: Room 1108, 11th Floor, Zone A, No. 2499 Weishan Road, High tech Development Zone, Changchun City, Jilin Province, 130000 Patentee after: Jilin Zhongke Fangde Software Co.,Ltd. Address before: 100080 No. 6 South Road, Zhongguancun Academy of Sciences, Beijing, Haidian District Patentee before: Institute of Computing Technology, Chinese Academy of Sciences |
|
TR01 | Transfer of patent right |