一种虚拟机调度的装置及方法

文档序号:6471009阅读:95来源:国知局
专利名称:一种虚拟机调度的装置及方法
技术领域
本发明涉及虚拟化领域,尤其涉及一种虚拟机调度的装置及方法。
技术背景虚拟化使得不同服务可以互不干扰的整合在同一物理机器上,充分利用 系统资源。当服务整合时,通常将每个服务放在一个独立的虚拟机中。因此, 需要保证虚拟机之间的公平和效率。公平是指同一个物理节点上的虚拟机, 应该以用户指定的配额共享物理资源,互不干扰;效率是指尽可能提高整个 系统的吞吐率。在虚拟机系统中,调度器是用于调度虚拟机的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公平性的应用程序。发明内容为解决上述问题,本发明提供了一种虚拟机调度的装置及方法,能够提 高虚拟机之间占用资源的公平性。本发明公开了一种虚拟机调度的方法,按调度优先级从高到低的顺序将待调度的虚拟机的虚拟处理器排列在可运行队列中,包括步骤l,将1/0密集型的虚拟处理器加入到检测窗口,为所述虚拟处理 器分配初始的资源配额;步骤2,按顺序调度所述可运行队列中的虚拟处理器,如果被调度的虚 拟处理器不在所述检测窗口内,运行所述虚拟处理器,运行完成后调度所述 可运行队列中下一个虚拟处理器,否则,执行下一步骤;步骤3,依据所述虚拟处理器当前剩余的资源配额确定是否运行所述虚 拟处理器,在运行完成后更新所述虚拟处理器的剩余资源配额,调度所述可 运行队列中下一个虚拟处理器。所述资源配额对应表示为I/O信誉度。所述歩骤3进一步为步骤31,如果所述虚拟处理器当前的I/0信誉度大于0,则确定运行所述虚拟处理器,在运行完成后,将所述虚拟处理器的i/o信誉度减去所述运行中完成的I/0处理数量,并调度所述可运行队列中下一个虚拟处理器,否 则,调度所述可运行队列中下一个虚拟处理器。 所述步骤2和所述步骤3之间还包括步骤41,判断所述检测窗口中包含的虚拟处理器个数是否为1,如果是, 运行所述虚拟处理器,在运行完成后调度所述可运行队列中下一个虚拟处理 器,否则,执行所述步骤3。所述步骤2和所述步骤41间还包括步骤51,判断所述虚拟处理器所属的虚拟机是否属于驱动域或特权虚拟 机所在的域,如果是,则运行所述虚拟处理器,在运行完成后调度所述可运 行队列中下一个虚拟处理器,否则,执行所述步骤41。所述将所述虚拟处理器的VO信誉度减去所述运行中完成的I/O处理数 量后还包括步骤61 ,在所述检测窗口内的所有虚拟处理器的I/O信誉度都小于0时, 按所述初始的资源配额增加所述检测窗口内的所有虚拟处理器的I/O信誉 度。所述步骤1中将1/0密集型的虚拟处理器加入到检测窗口进一步为步骤71,统计所述虚拟处理器运行时完成的I/O操作数量大于预设值的 次数占所述虚拟处理器运行的次数的比值;步骤72,当所述比值大于l/2时,将所述虚拟处理器加入到检测窗口。 所述步骤71进一步为步骤81,对应于每个虚拟处理器维护一历史窗口,每个所述历史窗口的 长度相同;步骤82,如果所述虚拟处理器运行时完成的I/O操作数量大于预设值, 则将所述历史窗口的对应位置为1,否则,将所述历史窗口的对应位置为O;步骤83,将所述历史窗口中1的个数除以所述历史窗口长度,所得商为 所述比值。所述步骤71进一步为步骤91,对应于每个虚拟处理器维护一历史窗口,每个所述历史窗口的 长度相同;步骤92,如果所述虚拟处理器运行时完成对网络设备或块设备的1/0操 作数量大于预设值,则将所述历史窗口的对应位置为1,否则,将所述历史 窗口的对应位置为O;步骤93,将所述历史窗口中1的个数除以所述历史窗口长度,所得商为 所述比值。对于网络设备,所述I/O处理数量为发送和接收的网络包的数量。对于块设备,所述i/o处理数量为读和写的磁盘块的数量。本发明还公开了一种虚拟机调度的装置,用于按调度优先级从高到低的顺序将待调度的虚拟机的虚拟处理器排列在可运行队列中,所述装置包括检测窗口模块,用于将i/o密集型的虚拟处理器加入到检测窗口,为所述虚拟处理器分配初始的资源配额;调度判断模块,用于按顺序调度所述可运行队列中的虚拟处理器,如果 被调度的虚拟处理器不在所述检测窗口内,运行所述虚拟处理器,运行完成 后调度所述可运行队列中下一个虚拟处理器,否则,启动调度控制模块;所述调度控制模块包括资源配额判断模块,所述资源配额判断模块,用于依据所述虚拟处理器当前剩余的资源配额 确定是否运行所述虚拟处理器,在运行完成后更新所述虚拟处理器的剩余资 源配额,调度所述可运行队列中下一个虚拟处理器。所述资源配额对应表示为1/0信誉度。所述资源配额判断模块,进一步用于在所述虚拟处理器当前的1/0信誉 度大于O时,确定运行所述虚拟处理器,在运行完成后,将所述虚拟处理器的I/O信誉度减去所述运行中完成的工/o处理数量,并调度所述可运行队列中下一个虚拟处理器,在所述虚拟处理器当前的i/o信誉度不大于o时,调度所述可运行队列中下一个虚拟处理器。所述调度控制模块还包括数量判断模块,所述数量判断模块用于判断所述检测窗口中包含的虚拟处理器个数是否 为1,如果是,运行所述虚拟处理器,在运行完成后调度所述可运行队列中 下一个虚拟处理器,否则,启动所述资源配额判断模块。所述调度控制模块还包括所属域判断模块,所述所属域判断模块用于判断所述虚拟处理器所属的虚拟机是否属于驱 动域或特权虚拟机所在的域,如果是,则运行所述虚拟处理器,在运行完成 后调度所述可运行队列中下一个虚拟处理器,否则,启动所述数量判断模块。所述资源配额判断模块还用于在将所述虚拟处理器的I/O信誉度减去所 述运行中完成的1/0处理数量后,在所述检测窗口内的所有虚拟处理器的I/O 信誉度都小于o时,按所述初始的资源配额增加所述检测窗口内的所有虚拟 处理器的I/0信誉度。所述检测窗口模块在将I/O密集型的虚拟处理器加入到检测窗口时进一 步用于统计所述虚拟处理器运行时完成的I/O操作数量大于预设值的次数占所述虚拟处理器运行的次数的比值,并在所述比值大于l/2时,将所述虚拟 处理器加入到检测窗口。所述检测窗口模块在统计所述虚拟处理器运行时完成的I/O操作数量大 于预设值的次数占所述虚拟处理器运行的次数的比值时进一歩用于对应于每 个虚拟处理器维护一历史窗口,每个所述历史窗口的长度相同;如果所述虚拟处理器运行时完成的1/0操作数量大于预设值,则将所述历史窗口的对应位置为1,否则,将所述历史窗口的对应位置为0;将所述历史窗口中1的个 数除以所述历史窗口长度,所得商为所述比值。所述检测窗口模块在统计所述虚拟处理器运行时完成的工/0操作数量大 于预设值的次数占所述虚拟处理器运行的次数的比值时进一步用于对应于每 个虚拟处理器维护一历史窗口,每个所述历史窗口的长度相同;如果所述虚 拟处理器运行时完成对网络设备或块设备的1/0操作数量大于预设值,则将所述历史窗口的对应位置为1,否则,将所述历史窗口的对应位置为O;将所述历史窗口中1的个数除以所述历史窗口长度,所得商为所述比值。对于网络设备,所述I/O处理数量为发送和接收的网络包的数量。对于块设备,所述工/o处理数量为读和写的磁盘块的数量。本发明的有益效果在于,通过检测窗口和工/0信誉度对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/0信誉度。步骤S202,按顺序调度可运行队列中的VCPU,判断被调度的VCPU是否 不在所述检测窗口内,如果是,执行歩骤S203,否则,执行步骤S204。步骤S203,运行该VCPU,运行完成后调度所述可运行队列中下一个VCPU。步骤S204,依据该VCPU的I/0信誉度调度该VCPU,完成后调度可运行 队列中的下一个VCPU。系统中应用可分为三种CPU密集型、周期性I/O型和I/O密集型,相 应于应用,VCPU也分为上述三种。由于只有I/O密集型应用会对系统I/O资 源造成压力,因而只需要限制1/0密集型应用获得的i/o处理能力,同时保证其不会由于其它两种应用的存在,而不被调度。I/O密集型VCPU为一半以上的负载都是I/O操作的VCPU。 所述步骤S202中将I/O密集型的VCPU加入到检测窗口的具体实施方式
如图3所示。步骤S301,对应于每个VCPU维护一历史窗口,每个历史窗口的长度相同。步骤S302,如果VCPU运行时完成的I/O操作数量大于预设值,则将其 对应的历史窗口的对应位置为l,否则,将其对应的历史窗口的对应位置为0。步骤S303,将历史窗口中1的个数计为io-degree,将io-degree除以 该历史窗口长度,所得商为比值。歩骤S304,当所述比值大于l/2时,确定该比值对应的VCPU为1/0密 集型,将该VCPU加入到检测窗口中。采用上述方法能够区分所述三类VCPU。 CPU密集型VCPU的io-degree的值通常为0;周期型I/O的VCPU的io-degree的值通常小于历史窗口长度 的一半;1/0密集型的VCPU的io-degree的值大于历史窗口长度的一半,且 小于或等于历史窗口的长度。上述算法中使用预设值,用以防止干扰。因为在非特权虚拟机的操作系 统中,包含有守护程序,尤其是网络守护程序。当该虚拟机没有任何负载时, 所述守护程序周期性的进行I/O操作,然后不做任何CPU处理,进行空转。 因而部分VCPU可能被唤醒,执行上述I/0操作,然后继续空转。如果只考虑VCPU以BOOST状态被选中运行的次数,而忽略被选中运行后 执行的I/O处理数量,则由于所述进行空转的VCPU的历史窗口中1的个数的 不断累加,而无法区分I/O密集型VCPU和所述进行空转的VCPU。基于上述 原因,在本实施例中预设值为3或4。所述步骤S204的具体实施方式
如图4所示。步骤S401,判断VCPU当前的I/O信誉度是否大于O,如果是,则执行步 骤S402,否则,执行步骤S403.步骤S402,确定运行VCPU,在运行完成后,将该VCPU的I/O信誉度减 去本次运行中完成的I/O处理数量,在检测窗口内的所有VCPU的I/O信誉度 都小于0时,按初始的资源配额增加检测窗口内的所有VCPU的I/O信誉度, 并调度所述可运行队列中下一个VCPU。步骤S403,调度可运行队列中下一个VCPU。在上述方法中,如果可运行队列上只有一个虚拟机的VCPU,且其I/0信 誉度小于O,而检测窗口中还有I/O信誉度的值大于O的VCPU,但是由于该 VCPU在等待I/O事件,并不在可运行队列上,因此,可运行队列上虚拟机的 VCPU的I/O信誉度的值不会被增加。此时可运行队列上虚拟机的VCPU不被 运行,调度所述可运行队列中下一个VCPU,该VCPU为系统空转VCPU。在另一个实施方式中,在I/O检测窗口中只有一个VCPU时,因为此时系 统中没有其它VCPU与其竞争I/O资源,所以不对该VCPU进行限制。具体方 法为在所述步骤S401前增加步骤411,判断所述检测窗口中包含的VCPU个 数是否为l,如果是,运行该VCPU,在运行完成后调度可运行队列中的下一 个VCPU,否则,执行所述步骤S401。在另一个实施方式中,对特权虚拟机的CPU占用1/0资源不做限制,给予驱动域和DO域,DO域为特权虚拟机所在的域。虚拟机更多1/0特权。具 体方法为在步骤411前增加步骤421,判断VCPU所属的虚拟机是否属于驱动 域或DO域,如果是,则运行该VCPU,在运行完成后调度可运行队列中的下 一个VCPU,否则,执行所述步骤411。在虚拟机系统中有多个I/0设备。其中一些属于专属设备,例如键盘和 鼠标,该类设备必须专属于某个虚拟机,或者以很大的时间粒度在虚拟机之 间切换;对于该类设备在虚拟机之间的共享不做控制。其中某些设备属于假 脱机设备,例如打印机,它们的共享粒度大于传统的共享设备,并且保证只 有在前一个任务完成的情况下,才能执行新的任务;因此不需要保证该类设 备的公平共享。本发明控制虚拟机系统中块设备和网络设备,两者合称为核 心设备。在一个具体实施方式
中,所述歩骤S202中将I/O密集型的VCPU加入到检测窗口的具体实施方式
如下。步骤311 ,对应于每个VCPU维护一历史窗口 ,每个历史窗口的长度相同。 步骤312,如果VCPU运行时完成对核心设备的I/O操作数量大于预设值,则将其对应的历史窗口的对应位置为1,否则,将其对应的历史窗口的对应位置为0。步骤313,将历史窗口中1的个数计为io-degree,将io-degree除以该历史窗口长度,所得商为比值。步骤314,当所述比值大于l/2时,确定该比值对应的VCPU为1/0密集 型,将该VCPU加入到检测窗口中。现有技术中的信誉度和每个虚拟机获得的CPU处理时间相对应,而本发 明中的I/O信誉度同完成I/O处理数量相对应。对于网络设备,I/O处理数 量为发送和接收网络包的数量;对于块设备,I/O处理数量为读和写的磁盘 块数目。虚拟机系统中,对于每一类设备都有一对前端和后端驱动与之对应,以 统计VCPU上次运行过程中完成的I/O处理数量,并将其从虚拟机中传递给调度器。本发明的一具体实施例如图5所示。系统启动时,按每个虚拟机的VCPU个数为该虚拟机的VCPU分配CPU信誉度。根据现有技术中方法,按调度优先级从高到低的顺序将待调度的VCPU 排列在可运行队列上。从运行队列的队头开始,遍历调度具有可运行队列中的VCPU。若被调度的VCPU不在检测窗口内,则直接选择其进行运行,运行 完后,调度下一个VCPU。如果被调度的VCPU处于检测窗口内,则判断其工/0是否大于0,如果是,则选择其运行;否则,调度可运行队列上的下一个VCPU。每个被选中运行的VCPU最多运行30ms。若某个VCPU被选中运行,则每 隔10毫秒后,将其CPU信誉度的值减去100。当整个系统虚拟机的VCPU的 CPU信誉度总和小于O时,重新为各个虚拟机的VCPU分配CPU信誉度。若被 调度的VCPU处于检测窗口中,则在其运行后,将其1/0信誉度值减去其本次 运行时完成的I/O处理数量。对于虚拟机的VCPU,如果其历史窗口的1的个数小于等于历史窗口长度 的一半,则将其从检测窗口中取出;否贝1J,将其加入检测窗口。当VCPU进入 1/0检测窗口时,按资源配额为其分配一定的初始1/0信誉度。如果I/0检 测窗口中所有VCPU的I/O信誉度的值都小于O,则增加检测窗口中所有VCPU 的1/0信誉度值,以使被阻塞的VCPU可以继续运行。本发明的虚拟机调度的装置,用于按调度优先级从高到低的顺序将待调度的虚拟机的VCPU排列在可运行队列中,结构如图6所示,包括检测窗口 模块601、调度判断模块602、调度控制模块。检测窗口模块601,用于将I/O密集型的VCPU加入到检测窗口 ,为VCPU 分配初始的资源配额。资源配额对应表示为1/0信誉度。检测窗口模块601在将I/O密集型的虚拟处理器加入到检测窗口时进一 步用于统计VCPU运行时完成的I/O操作数量大于预设值的次数占该VCPU运 行的次数的比值,并在比值大于l/2时,将该VCPU加入到检测窗口。在一个具体实施方式
中,检测窗口模块601在统计VCPU运行时完成的 I/O操作数量大于预设值的次数占VCPU运行的次数的比值时进一步用于对应 于每个VCPU维护一历史窗口,每个历史窗口的长度相同;如果VCPU运行时 完成的I/O操作数量大于预设值,则将历史窗口的对应位置为1,否则,将历史窗口的对应位置为0;将历史窗口中1的个数除以历史窗口长度,所得商为比值。在另一个具体实施方式
中,检测窗口模块601在统计VCPU运行时完成的 1/0操作数量大于预设值的次数占VCPU运行的次数的比值时进一步用于对应 于每个VCPU维护一历史窗口,每个历史窗口的长度相同;如果VCPU运行时 完成对网络设备或块设备的1/0操作数量大于预设值,则将历史窗口的对应位置为1,否则,将历史窗口的对应位置为0;将历史窗口中1的个数除以历史窗口长度,所得商为比值。对于网络设备,I/O处理数量为发送和接收的 网络包的数量。对于块设备,1/0处理数量为读和写的磁盘块的数量。调度判断模块602,用于按顺序调度可运行队列中的VCPU,如果被调度 的VCPU不在检测窗口内,运行VCPU,运行完成后调度可运行队列中下一个 VCPU,否则,启动调度控制模块603;调度控制模块603包括所属域判断模块631、数量判断模块632、资源 配额判断模块633。所属域判断模块631,用于判断VCPU所属的虚拟机是否属于驱动域或DO 域,如果是,则运行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的1/0信誉度减去运行中完成的 I/O处理数量后,在检测窗口内的所有VCPU的I/O信誉度都小于0时,按初 始的资源配额增加所述检测窗口内的所有VCPU的I/O信誉度。本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条 件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限 于以上的说明,而是由权利要求书的范围来确定的。
权利要求
1.一种虚拟机调度的方法,按调度优先级从高到低的顺序将待调度的虚拟机的虚拟处理器排列在可运行队列中,其特征在于,包括步骤1,将I/O密集型的虚拟处理器加入到检测窗口,为所述虚拟处理器分配初始的资源配额;步骤2,按顺序调度所述可运行队列中的虚拟处理器,如果被调度的虚拟处理器不在所述检测窗口内,运行所述虚拟处理器,运行完成后调度所述可运行队列中下一个虚拟处理器,否则,执行下一步骤;步骤3,依据所述虚拟处理器当前剩余的资源配额确定是否运行所述虚拟处理器,在运行完成后更新所述虚拟处理器的剩余资源配额,调度所述可运行队列中下一个虚拟处理器。
2. 如权利要求1所述虚拟机调度的方法,其特征在于,所述资源配额对 应表示为1/0信誉度。
3. 如权利要求2所述虚拟机调度的方法,其特征在于,所述步骤3进一 歩为歩骤31,如果所述虚拟处理器当前的I/0信誉度大于0,则确定运行所 述虚拟处理器,在运行完成后,将所述虚拟处理器的I/O信誉度减去所述运 行中完成的I/0处理数量,并调度所述可运行队列中下一个虚拟处理器,否 则,调度所述可运行队列中下一个虚拟处理器。
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,统计所述虚拟处理器运行时完成的1/0操作数量大于预设值的 次数占所述虚拟处理器运行的次数的比值;步骤72,当所述比值大于l/2时,将所述虚拟处理器加入到检测窗口。
8. 如权利要求7所述虚拟机调度的方法,其特征在于,所述步骤71进一步为步骤81,对应于每个虚拟处理器维护一历史窗口,每个所述历史窗口的 长度相同;步骤82,如果所述虚拟处理器运行时完成的I/O操作数量大于预设值, 则将所述历史窗口的对应位置为1,否则,将所述历史窗口的对应位置为O;步骤83,将所述历史窗口中1的个数除以所述历史窗口长度,所得商为 所述比值。
9. 如权利要求7所述虚拟机调度的方法,其特征在于, 所述步骤71进一步为步骤91,对应于每个虚拟处理器维护一历史窗口,每个所述历史窗口的 长度相同;步骤92,如果所述虚拟处理器运行时完成对网络设备或块设备的1/0操 作数量大于预设值,则将所述历史窗口的对应位置为1,否则,将所述历史 窗口的对应位置为O;步骤93,将所述历史窗口中1的个数除以所述历史窗口长度,所得商为 所述比值。
10. 如权利要求9中所述虚拟机调度的方法,其特征在于, 对于网络设备,所述I/O处理数量为发送和接收的网络包的数量。
11. 如权利要求9中所述虚拟机调度的方法,其特征在于,对于块设备,所述i/o处理数量为读和写的磁盘块的数量。
12. —种虚拟机调度的装置,用于按调度优先级从高到低的顺序将待调度的虚拟机的虚拟处理器排列在可运行队列中,其特征在于,所述装置包括:检测窗口模块,用于将i/o密集型的虚拟处理器加入到检测窗口,为所述虚拟处理器分配初始的资源配额;调度判断模块,用于按顺序调度所述可运行队列中的虚拟处理器,如果 被调度的虚拟处理器不在所述检测窗口内,运行所述虚拟处理器,运行完成 后调度所述可运行队列中下一个虚拟处理器,否则,启动调度控制模块;所述调度控制模块包括资源配额判断模块,所述资源配额判断模块,用于依据所述虚拟处理器当前剩余的资源配额 确定是否运行所述虚拟处理器,在运行完成后更新所述虚拟处理器的剩余资 源配额,调度所述可运行队列中下一个虚拟处理器。
13. 如权利要求12所述虚拟机调度的装置,其特征在于,所述资源配额 对应表示为1/0信誉度。
14. 如权利要求13所述虚拟机调度的装置,其特征在于,所述资源配额判断模块,进一步用于在所述虚拟处理器当前的i/o信誉度大于o时,确定运行所述虚拟处理器,在运行完成后,将所述虚拟处理器的I/O信誉度减去 所述运行中完成的1/0处理数量,并调度所述可运行队列中下一个虚拟处理 器,在所述虚拟处理器当前的工/0信誉度不大于0时,调度所述可运行队列 中下一个虚拟处理器。
15. 如权利要求14所述虚拟机调度的装置,其特征在于, 所述调度控制模块还包括数量判断模块,所述数量判断模块用于判断所述检测窗口中包含的虚拟处理器个数是否 为1,如果是,运行所述虚拟处理器,在运行完成后调度所述可运行队列中 下一个虚拟处理器,否则,启动所述资源配额判断模块。
16. 如权利要求15所述虚拟机调度的装置,其特征在于, 所述调度控制模块还包括所属域判断模块,所述所属域判断模块用于判断所述虚拟处理器所属的虚拟机是否属于驱 动域或特权虚拟机所在的域,如果是,则运行所述虚拟处理器,在运行完成 后调度所述可运行队列中下一个虚拟处理器,否则,启动所述数量判断模块。
17. 如权利要求14所述虚拟机调度的装置,其特征在于, 所述资源配额判断模块还用于在将所述虚拟处理器的I/O信誉度减去所述运行中完成的I/0处理数量后,在所述检测窗口内的所有虚拟处理器的1/0 信誉度都小于0时,按所述初始的资源配额增加所述检测窗口内的所有虚拟 处理器的I/0信誉度。
18. 如权利要求12所述虚拟机调度的装置,其特征在于, 所述检测窗口模块在将I/O密集型的虚拟处理器加入到检测窗口时进一步用于统计所述虚拟处理器运行时完成的I/O操作数量大于预设值的次数占 所述虚拟处理器运行的次数的比值,并在所述比值大于1/2时,将所述虚拟 处理器加入到检测窗口。
19. 如权利要求18所述虚拟机调度的装置,其特征在于,所述检测窗口 模块在统计所述虚拟处理器运行时完成的I/O操作数量大于预设值的次数占 所述虚拟处理器运行的次数的比值时进一步用于对应于每个虚拟处理器维护 一历史窗口,每个所述历史窗口的长度相同;如果所述虚拟处理器运行时完 成的I/O操作数量大于预设值,则将所述历史窗口的对应位置为1,否则, 将所述历史窗口的对应位置为0;将所述历史窗口中1的个数除以所述历史 窗口长度,所得商为所述比值。
20. 如权利要求18所述虚拟机调度的装置,其特征在于,所述检测窗口 模块在统计所述虚拟处理器运行时完成的I/O操作数量大于预设值的次数占 所述虚拟处理器运行的次数的比值时进一歩用于对应于每个虚拟处理器维护 一历史窗口,每个所述历史窗口的长度相同;如果所述虚拟处理器运行时完 成对网络设备或块设备的1/0操作数量大于预设值,则将所述历史窗口的对 应位置为1,否则,将所述历史窗口的对应位置为0;将所述历史窗口中1 的个数除以所述历史窗口长度,所得商为所述比值。
21. 如权利要求19中所述虚拟机调度的装置,其特征在于, 对于网络设备,所述I/O处理数量为发送和接收的网络包的数量。
22. 如权利要求19中所述虚拟机调度的装置,其特征在于,对于块设备,所述i/o处理数量为读和写的磁盘块的数量。
全文摘要
本发明涉及虚拟机调度的方法和装置,所述方法包括,按调度优先级从高到低的顺序将虚拟处理器排列在可运行队列中,还包括步骤1,将I/O密集型的虚拟处理器加入到检测窗口,为虚拟处理器分配初始的资源配额;步骤2,按顺序调度可运行队列中的虚拟处理器,如果被调度的虚拟处理器不在检测窗口内,运行虚拟处理器,运行完成后调度可运行队列中下一个虚拟处理器,否则,依据虚拟处理器当前的剩余资源配额确定是否运行虚拟处理器,在运行完成后更新虚拟处理器的剩余资源配额,调度可运行队列中下一个虚拟处理器。本发明能够保证CPU密集型应用、周期型I/O应用和I/O密集型应用,占用处理器资源和I/O资源的公平性。
文档编号G06F9/455GK101408853SQ200810224940
公开日2009年4月15日 申请日期2008年10月27日 优先权日2008年10月27日
发明者丹 孟, 翔 张, 捷 马 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1