变更虚拟机监控器中的调度器的制作方法

文档序号:6554045阅读:116来源:国知局
专利名称:变更虚拟机监控器中的调度器的制作方法
变更虚拟机监控器中的调度器
背景技术
虚拟机(VM)体系结构在逻辑上划分物理机器,使得机器 的基础硬件被分时共享,并表现为一个或多个单独操作的虚拟机。虚 拟机环境中的计算机平台可包括虚拟机监控器(VMM),它可创建多个 虚拟机并在计算机平台上运行,以便帮助其它软件对一个或多个虚拟 机进行抽象。虚拟机监控器可包括调度器,它为各虚拟机分配时隙, 以便在虚拟机之间运行和优先选择或平衡资源使用。通常,调度器可 实现可适合特定情况的特定调度机制,例如借用虚拟时间(Borrowed Virtual Tme)(BVT)算法、轮转算法(Round Robin algorithm)等。


通过附图、作为实例而不是限制来说明本文所述的本发 明。为了说明的筒洁和清楚起见,图中所示的元件不一定按比例绘制。 例如,为了清楚起见,某些元4牛的尺寸可能相对于其它元件祐J故大。 此外,在认为适当的情况下,参考标记在附图中重复使用,以便指明 对应或相似的元件。 图1示出具有变更调度器的虛拟机监控器的计算机平台 的一实施例。 图2示出图1的虚拟机监控器中的调度器管理器的一实 施例。 图3示出变更图1的虛拟机监控器中的调度器的方法的 一实施例。图4示出由图3中变更的调度器处理调度请求的方法的
一实施例。 图'5示出具有图1的虚拟机监控器的一般计算机平台的 一实施例。
具体实施例方式
以下说明描述用于变更虚拟机监控器中的调度器的技 术。在以下描述中,提出了例如逻辑实现、伪代码、指定操作数的方 式、资源划分/共享/重复实现、系统组件的类型和相互关系、以及逻辑 划分/综合选择等许多具体细节,以便提供对本发明的较充分理解。但 是,即使没有这类具体细节也可实施本发明。在其它情况下,没有详 细说明控制结构、门级电路和全软件指令序列,以免影响对本发明的 理解。通过所包含的描述,本领域的技术人员将能够实现适当的功能 性而无需进行过度的实验。 说明中对"一个实施例"、"一实施例"、"一示例实施例" 等的提法指明所述的实施例可包括特定特征、结构或特性,但可能不 一定每一个实施例都包括该特定特征、结构或特性。此外,这类词语 不一定指同一个实施例。另外,在结合一实施例来描述特定特征、结 构或特性时,无论是否明确描迷,均认为结合其它实施例来实现这种 特征、结构或特性处于本领域的技术人员的知识范围之内。 本发明的实施例可通过硬件、固件、软件或它们的任何 结合来实现。本发明的实施例还可实现为存储于机器可读介质上的指 令,所述指令可由一个或多个处理器读取和执行。机器可读介质可包 括用于存储或传送机器(例如计算设备)可读形式的信息的任何机构。 例如,机器可读介质可包括只读存储器(ROM);随机存取存储器 (RAM);磁盘存储介质;光存储介质;闪存设备;电、光、声或其它 形式的传播信号(例如载波、红外信号、数字信号等)等等。 具有变更调度器的虛拟机监控器的计算机平台10的一 实施例如图1所示。计算4^平台IO可包括基础硬件11,其中具有一
个或多个处理器lll、存储器112、控制台设备113、定时器114等。 计算机平台IO还可包括多个虚拟机和虚拟机监控器。多个虛拟机运行 它们自己的操作系统和应用软件,例如,服务虚拟机13运行服务操作 系统131和月良务应用程序132,而一个或多个客户虚拟4几14rl4N运行 它们自己的客户操作系统141广14lN和客户应用程序141广142n。虚拟 机监控器12可负责处理器/存储器虚拟化/才莫拟、中断处理、虛拟机调 度等。计算机平台IO的示例的非穷举列表可包括大型计算机、小型计 算机、个人计算机、便携计算^L、膝上型计算机以及用于收发和处理 数据的其它设备。 计算机平台10中的各种组件可调用虚拟机监控器12来 执行调度进程,例如对下 一个指定时隙确定基础交换设备的下 一个拥 有者,或者确定虛拟机的优先级等。通常,交换设备在虚拟机监控器 中的调度器所指定的时隙中由正在运行的虚拟机(例如服务虚拟机13 或客户虚拟机14广14N)拥有,因此具有一 "焦点(focus)",在该焦点上, 虛拟机当前为活动的。交换设备的示例可包括处理器111和控制台设 备113,其中,控制台设备13可包括例如键盘、鼠标等频繁使用的1/0 设备。 服务虚拟机13中的服务操作系统131可向虚拟机监控器 12发送调度进程的调度请求。例如,当服务操作系统131监控运行客 户虚拟机14rl4N,并查找客户虛拟机中的故障、如客户操作系统故障 时,服务操作系统131可向虚拟机监控器12发送调度请求来变更交换 设备的拥有者。 客户虚拟机14rl4N中的客户操作系统141!-14lN还可向 虚拟机监控器12发送调度请求。例如,当客户操作系统141,-141n正 执行设备输X/输出操作并等待来自设备的响应时,客户操作系统可发 送调度请求,以便产生交换设备的所有权,使得其它虚拟机可利用交 换设备。基础硬件中的定时器114、如可编程间隔定时器还可向
虛拟机监控器12发送调度请求。例如,当指定给正在运行的虚拟机的 时隙到期时,定时器114可向虚拟机监控器发送定时器中断,它可调 用虛拟机监控器来执行虚拟机调度,以便变更交换设备的所有权。 虚拟机监控器12可包括调度器加栽器120和调度器管理 器121。虛拟机监控器12还可包括一个或多个调度器;但是, 一个或 多个调度器其中之一是活动的,以便处理调度请求。在图l所示的实 施例中,虛拟机监控器12可包括旧调度器122和新调度器123,它们 可分别实现特定调度机制,例如4昔用虛拟时间(BVT)算法、轮转算法等。 可将许多技术作为工作模式应用于旧调度器122和新调 度器123。例如,虚拟机监控器12可以始终将旧调度器122保持作为 缺省调度器。在将新调度器123加载到虚拟机监控器12之前,旧调度 器122可以是活动的,以便处理调度请求。在加栽新调度器123之后, 新调度器可以是活动的,以便i[又代旧调度器来处理调度请求。但是, 如果从虛拟机监控器12中卸载新调度器123,则旧调度器122又可以 是活动的,直至向虚拟机监控器12加载另一个新调度器。对于另一个 示例,在一些情况下,调度器管理器121可转换回旧调度器122,即 使在虚拟机监控器12中存在新调度器123。对于又一个示例,虚拟机 监控器12可在加载新调度器123之前或之后卸载旧调度器122。 调度器加载器120可处理来自服务操作系统131的调度 器加载请求,并且当虚拟机监控器12或者虛拟机13、 1^-14n的一个 或多个正在运行时,在虚拟机监控器12中加载新调度器123。可从例 如网站、本地磁盘、数据中心镜l象服务器等各种资源得到新调度器123 的软件镜像。实现调度器加载器120的示例可包括超调用处理机 (hypercallhandler),它可处理从"艮务操作系统131的调度器加载的超调 用,并在虚拟机监控器12中加载新调度器123的软件镜像。 当虛拟机监控器12或者虚拟机13、 14!-14n的一个或多 个正在运行时,调度器管理器121可负责激活旧调度器122和新调度 器123这两者其中之一,以便处理调度请求。调度器管理器121可通
过各种方式来实现调度器激活。例如,调度器管理器121可存储调度 器标识符以标识对于调度请求是活动的调度器。在将新调度器123加 载到虚拟机监控器12之前,调度器管理器121可存储旧调度器标识符, 以便激活旧调度器122来处理调度请求。在加载新调度器123之后, 调度器管理器121可用新调度器标识符取代旧调度器标识符,以便激 活新调度器来处理调度请求。〗旦是,当卸载新调度器123时,调度器 管理器121可恢复旧调度器标识符,以便重新激活旧调度器122。 对于另一个示例,调度器管理器可存储指向对于处理调 度请求是活动的诸如旧调度器122或新调度器123的函数阵列之类的 活动调度器的函数阵列的函数指针阵列。图2示出调度器管理器121 的实现的一实施例。如图所示,调度器管理器121可包括具有多个函 数指针(例如指针0、 1、 2、 3等)的函数指针阵列。旧调度器122和新 调度器123均可釆用多个例程函数(routine fiinction)来执行调度进程, 所述多个例程函数遵循特定应用编程接口(API),例如旧调度器122的 函数0,、 1,、 2,等或者新调度器123的函数0"、 1"、 2"等。函数指针 阵列121中的各指针可指向活动调度器函数,例如旧调度器122或新 调度器123的函数。例如虛拟机13或14r14N、定时器114或者可触 发虛拟机监控器12中的调度进程的其它设备等的调度请求器可包括 指向函数指针阵列的指针,并且可通过取消引用它指向函数指针阵列 的指针、然后调用该阵列所指向的函数,来调用活动调度器函数。 在图2所示的实施例中,通过将函数指针阵列更新为指 向活动调度器函数,或者通过将调度请求器的指针更新为指向函数指 针阵列,调度器管理器121可激活旧调度器122或新调度器123。 又参照图1,调度器管理器121还可负责在活动调度器 (例如旧调度器122或新调度器123)与调度请求器之间传输信息。例如, 响应接收到来自调度请求器的调度请求,调度器管理器121可将调度 请求分派给调度器标识符所标识的活动调度器,或者分派给函数指针 阵列所指向的活动调度器函数。调度器管理器121还可将调度反馈信 息从活动调度器发送到调度请求器。调度反^f信息可包括关于是否正 确执行预期调度操作、关于虚拟机优先级信息等的通知。 但是,对于计算机平台10的结构,其它实施例可实现其 它技术。例如,可省略调度器管理器121,并且调度请求器可向虚拟 机监控器发出要求调度进程的直接请求,其中,在调度器模型加载/卸 载阶段中,将与活动调度器相关联的地址动态插入(patchinto)请求。通 过这种方式,可将请求直接发送给活动调度器。 图3示出变更如图1的虚拟机监控器12中的调度器的方 法的一实施例。在框301,当虚拟机监控器或者虚拟机的一个或多个 正在运行时,用户或适当的另一方可决定变更当前活动的旧调度器(例 如旧调度器122),以便釆用新调度器(例如调度器123)来处理虚拟机监 控器中的调度请求。例如,用户可确定旧调度器不适合当前虚拟化环 境或者另一个调度更适合当前虚拟化环境。 在框302,在框301作出的决定可采用规定参数来调用 在服务虚拟机中的服务操作系统(例如服务应用系统131)上运行的应 用程序,并且该应用程序可将参数和其它信息通过虛拟机控制请求传 递给服务操作系统,这可触发服务操作系统将调度器加载请求发到虚 拟机监控器中,以便加载新调度器。特定参数可包括关于将要加载哪 一个调度器、调度器镜像所在位置、虚拟机监控器可应用哪一种加载 策略来加载新调度器等的信息。 在框303,调度器加载器(例如加载器120)或者其它适当 组件可处理加载请求,并且停止正在运行的虛拟机所拥有的全部交换 设备,其中,交换设备可包括处理器和控制台设备。可应用各种方法 来执行停止进程。对于处理器停止,可将停止标记输入虚拟机监控器
中。对于控制台设备停止,虚拟机监控器可在实际上停止所有未完成 业务之前,借助于控制台设备模型对它们进行刷新。在停止交换设备 之后,交换设备可达到稳定、 一致或可预测状态,使得虛拟机监控器
可对下一个调度进程保持其状态。 在框304,调度器加载器或其它适当组件可判定在加载 新调度器之前是否从虚拟机监控器中卸栽旧调度器。在不同情况下, 调度器加载器可作出不同的决定。例如,调度器加载器可决定保留旧 调度器供将来使用。但是,如果对于新调度器不存在自由空间,则调 度器加载器可决定卸载旧调度器。响应决定保留旧调度器,在框306, 调度器加栽器或其它适当组件可采用来自服务操作系统的参数,在虚 拟机监控器中加载新调度器。但是,响应决定卸载旧调度器,在框305, 调度器加载器或其它适当组件可从虚拟机监控器中卸载旧调度器,然 后在框306,在虚拟机监控器中加载新调度器。其它实施例可实现用 于调度器卸载的其它技术。例如,调度器加载器可在加载新调度器之 后,进行关于是否卸载旧调度器的判定。 图4示出由图3中变更的新调度器处理调度请求的方法 的一实施例。在框401,虛拟机监控器可从调度请求器接收要求调度 进程的调度请求。在框402,例如通过可存储标识新调度器的标识符 或者指向新调度器的函数阵列的函数指针阵列的调度器管理器(例如 调度器管理器121),可将调度请求传送到新调度器。 在框403,新调度器可处理调度请求,例如确定交换设 备的下一个拥有者或者计算特定虚拟机的调度优先级。在框404,新 调度器可向调度请求器返回调度反^t信息。调度反馈信息可包括关于 是否正确执行预期调度进程、关于虚拟机优先级信息等的通知。图5示出具有图1所示的虚拟机监控器的一般计算机平
台的一实施例。该计算机平台可包括一个或多个处理器50、存储器51 、 芯片组52、 1/0设备53、 BIOS固件54等。 一个或多个处理器50在通 信上经由一条或多条总线、如处理器总线耦合到各个组件(例如存储器 51)。处理器50可实现为具有一个或多个处理核心的集成电路(IC),所 述处理核心在例如包括可向Intel Corporation(加利福尼亚,圣克拉拉) 购买的Intel Xeon 、 Intel Pentium , Intel Itanium 体系结构在 内的适当体系结构下可执行代码。 在一实施例中,存储器51可存储将由处理器50执行的 代码。存储器51的示例的非穷举列表可包括例如以下半导体设备其中 之一或组合同步动态随机存取存储器(SDRAM)设备,RAMBUS动 态随机存取存储器(RDRAM)设备、双倍数据速率(DDR)存储设备、静 态随机存取存储器(SRAM)、闪存设备等。 在一实施例中,芯片组52可提供处理器50、存储器51 以及例如I/O设备53和BIOS固件54等各个组件之间的一条或多条通 信通路。芯片组52可包括存储控制器集线器520、输/v/输出控制器集 线器521和固件集线器522。 在一实施例中,存储控制器集线器520可提供到处理器 总线的通信链路,该总线可与处理器50连接并连接到例如存储器51 等适当设备。存储控制器集线器520可与1/0控制器集线器521耦合, I/O控制器集线器521可提供到计算平台的I/O设备53 、如键盘和鼠标 的接口。 1/0设备13的示例的非穷举列表可包括键盘、鼠标、网卡、 存储设备、照相机、蓝牙、天线等。 在一实施例中,存储控制器集线器520可在通信上经由 输入/输出控制器集线器521与固件集线器522耦合。固件集线器522 可与BIOS固件54耦合,BIOS固件54可存储计算平台在系统启动期 间执行以便初始化处理器50、芯片组52和计算平台的其它组件的例 程。此外,BIOS固件54可包括计算设备1可执行以便与计算平台的 一个或多个组件进行通信的例程或驱动器。
图5所示的计算机平台可作为图1所示的计算机平台10 来执行。存储器51可存储作为虛拟机监控器的软件镜像,其中包括调 度器加载器、 一个或多个调度器和/或调度器管理器。存储器51还可 存储包括服务操作系统和服务应用程序的服务软件以及包括客户操作 系统和客户应用程序的客户软件。 虽然参照示例实施例描述了本发明的某些特征,但是该 描述不应当理解为限制性的。本发明所涉及的技术领域的技术人员清 楚知道的本发明的示例实施例以及太劳印 认为落入本发明的精神和范围之内
1权利要求
1.一种用于变更虚拟机监控器中的第一调度器的方法,包括当所述虚拟机监控器正在运行时,在所述虚拟机监控器中加载第二调度器;以及当所述虚拟机监控器正在运行时,激活所加载的第二调度器,以便取代所述第一调度器来处理调度进程的调度请求。
2. 如权利要求l所述的方法,其中,所述加载还包括 响应接收到变更所述第一调度器的调度器变更请求,而停止由正在运行的虚拟机所拥有的设备资源;以及根据所述调度器变更请求的调度器参数,在所述虚拟机监控器中 加载所述第二调度器。
3. 如权利要求l所述的方法,其中,所述加载还包括 在加载所述第二调度器之前,从所述虚拟机监控器中卸载所述第一调度器。
4. 如权利要求l所述的方法,其中,所述激活还包括当所述虛拟机监控器正在运行时,用第二调度器标识符来取代第 一调度器标识符,以便在所述第二调度器与生成所述调度请求的请求 器之间进行路由。
5. 如权利要求l所述的方法,其中,所述激活还包括 当所述虛拟机监控器正在运行时,采用指向所述第二调度器的第二函数阵列的笫二函数指针阵列来取代指向所述第一调度器的笫一函 数阵列的笫一函数指针阵列,以^^在所述第二调度器与生成所述请求 的请求器之间进行路由。
6. 如权利要求l所述的方法,其中,所述激活还包括当所述虚拟机监控器正在运行时,将与所述第二调度器相关联的 地址动态插入所述调度请求。
7. 如权利要求1所述的方法,还包括 当所述虚拟机监控器正在运行时,从所述虚拟机监控器中卸载所 述第二调度器;以及在卸载了所述第二调度器之后,重新激活所述第 一调度器以便处理调度请求。
8. —种用于变更第一调度器的虚拟机,包括加载逻辑,用于当所述虚拟机监控器正在运行时,在所述虚拟机监控器中加载第二调度器;以及激活逻辑,用于当所述虚拟机监控器正在运行时,激活所加载的 第二调度器,以便取代所述第一调度器来处理调度进程的调度请求。
9. 如权利要求8所述的虚拟机监控器,其中,所述加载逻辑还执 行以下步骤响应接收到变更所述第一调度器的调度器变更请求,而停止由正 在运行的虚拟机所拥有的i殳备资源;以及根据所述调度器变更请求的调度器参数,在所述虚拟机监控器中 加载所述第二调度器。
10. 如权利要求8所述的虚拟机监控器,其中,所述加载逻辑还 执行以下步骤在加载所述第二调度器之前,从所述虚拟机监控器中卸载所述第 一调度器。
11. 如权利要求8所述的虛拟机监控器,其中,所述激活逻辑还 执行以下步骤采用第二调度器标识符来取代第一调度器标识符;当所述虛拟机监控器正在运行时,在由所述第二调度器标识符所 标识的第二调度器与生成所述调度请求的请求器之间进行路由。
12. 如权利要求8所述的虛拟机监控器,其中,所述激活逻辑还 ^执行以下步骤釆用指向所述第二调度器的第二函数阵列的第二函数指针阵列来 取代指向所述第一调度器的第一函数阵列的第一函数指针阵列; 当所述虚拟机监控器正在运行时,在由所述第二函数指针阵列指 向的笫二函数阵列与生成所述调度请求的请求器之间进行路由。
13. 如权利要求8所述的虚拟机监控器,其中,所述激活逻辑还 执行以下步骤当所述虛拟机监控器正在运行时,将与所述笫二调度器相关联的 地址动态插入调度请求。
14. 如权利要求8所述的虚拟机监控器,其中,当所述虛拟机监 控器正在运行时,所述加载逻辑还从所述虚拟机监控器中卸载所述第 二调度器,以及在卸载了所述第二调度器之后,所述激活逻辑还重新 激活所述第一调度器以便处理调度请求。
15. —种系统,包括请求器,生成调度进程的调度请求; 虚拟机监控器,包括加载逻辑,用于当所述虛拟机监控器正在运行时,在所述虚拟机 监控器中加载笫二调度器;以及激活逻辑,用于当所述虚拟机监控器正在运行时,激活所加载的 第二调度器,以便取代第一调度器来处理所述调度请求。
16. 如权利要求15所述的系统,其中,所述请求器还包括定时器、 服务虚拟机和客户虛拟机这三者中的至少 一个。
17. 如权利要求15所述的系统,其中,所述请求器还生成变更所 述第一调度器的调度器变更请求。
18. 如权利要求15所述的系统,其中,所述加载逻辑还执行以下 步骤响应接收到变更所述第一调度器的调度器变更请求,而停止由正 在运行虚拟机所拥有的设备资源;以及根据所述调度器变更请求的,度器参数,在所述虛拟机监控器中 加载所述第二调度器。
19. 如权利要求15所述的系统,其中,所述加载逻辑还执行以下 步骤在加载所述第二调度器之前,从所述虚拟机监控器中卸载所述第 一调度器。
20. 如权利要求15所述的系统,其中,所述激活逻辑还执行以下 步骤釆用第二调度器标识符来取代第一调度器标识符;当所述虛拟机监控器正在运行时,在由所述第二调度器标识符所 标识的笫二调度器与所述请求器之间进行路由。
21. 如权利要求15所述的系统,其中,所述激活逻辑还执行以下 步骤采用指向所述第二调度器的第二函数阵列的笫二函数指针阵列来 取代指向所述第一调度器的第一函数阵列的第一函数指针阵列;当所述虚拟机监控器正在运行时,在由所述第二函数指针阵列所 指向的第二函数阵列与所述请求器之间进行路由。
22. 如权利要求15所述的系统,其中,所述激活逻辑还执行以下 步骤当所述虛拟机监控器正在运行时,将与所述第二调度器相关联的 地址动态插入所述调度请求。
23. 如权利要求15所述的系统,其中,当所述虚拟机监控器正在 运行时,所述加载逻辑还从所述虚拟机监控器中卸载所述第二调度器; 以及在卸载了所述第二调度器之后,所述激活逻辑还重新激活所述第 一调度器以便处理所述调度请求。
24. —种包括多个指令的才儿器可读介质,所述指令响应一皮执行而 使装置执行以下步骤当虚拟机监控器正在运行时,在所述虛拟机监控器中加载第二调 度器;以及当所述虚拟机监控器正在运行时,激活所加载的第二调度器,以 便取代第一调度器来处理调度进程的调度请求。
25. 如权利要求24所述的机器可读介质,其中,使所述装置加载 所述第二调度器的所述多个指令还使所述装置执行以下步骤响应^J妻收到变更所述第一调度器的调度器变更请求,而停止由正 在运行的虛拟机所拥有的设备资源;以及根据所述调度器变更请求的调度器参数,在所述虚拟机监控器中 加载所述第二调度器。
26. 如权利要求24所述的机器可读介质,其中,所述多个指令还 使所述装置执行以下步骤在加载所述第二调度器之前,从所述虚拟机监控器中卸载所述第 一调度器。
27. 如权利要求24所述的机器可读介质,其中,使所述装置激活 所述第二调度器的所述多个指令还使所述装置执行以下步骤当所述虚拟机监控器正在运行时,用第二调度器标识符来取代第 一调度器标识符,以便在所述第二调度器与生成所述调度请求的请求 器之间进行路由。
28. 如权利要求24所述的机器可读介质,其中,使所述装置激活 所述第二调度器的所述多个指令还使所述装置执行以下步骤当所述虛拟机监控器正在运行时,采用指向所述第二调度器的第 二函数阵列的第二函数指针阵列来取代指向所述第一调度器的笫一函 数阵列的第一函数指针阵列,以便在所述第二调度器与生成所述调度 请求的请求器之间进行路由。
29. 如权利要求24所述的机器可读介质,其中,使所述装置激活 所述第二调度器的所述多个指令还使所述装置执行以下步骤当所述虛拟机监控器正在运行时,将与所述第二调度器相关联的 地址动态插入所述调度请求。
30. 如权利要求24所述的机器可读介质,其中,所述多个指令还 使所述装置执行以下步骤当所述虚拟机监控器正在运行时,从所述虚拟机监控器中卸载所述第二调度器;以及在卸载了所述第二调度器之后,重新激活所述第一调度器以便处 理所述调度请求。
全文摘要
描述了改变虚拟机监控器中的第一调度器的机器可读介质、方法和装置。在一些实施例中,当虚拟机监控器正在运行时,在虚拟机监控器中加载第二调度器;然后,当虚拟机监控器正在运行时,激活第二调度器以便取代第一调度器来处理调度进程的调度请求。
文档编号G06F9/00GK101361036SQ200580052396
公开日2009年2月4日 申请日期2005年12月23日 优先权日2005年12月23日
发明者B·刘 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1