选择子os的一个执行计划的方法与使用该方法的虚拟机监视器的制作方法

文档序号:6615442阅读:92来源:国知局
专利名称:选择子os的一个执行计划的方法与使用该方法的虚拟机监视器的制作方法
技术领域
本发明涉及提供虚拟机执行环境的虛拟机系统。具体而言,本发明涉及基于子OS之间的通信状态选择子OS (子操作系统)的一个执行计划 (execution schedule)的方法以及使用该方法的虚拟机监视器,其中,子 OS是在虛拟机执行环境下执行的。
背景技术
近来,如日本特开No.2006-039763所公开,已经在例如个人计算机等 计算机系统中进行了使用虚拟机(VM)技术的研究和开发。实现虚拟机 系统(VM系统)的商业应用程序已经得到广泛使用。主框架已经包括了 使用由硬件(HW)构成的虛拟机支持单元(VM支持单元)的VM系统。
通常,个人计算机等计算机系统包含包括处理器(真实处理器)、多 种输^/输出(I/O)单元(真实I/O单元)和存储器(真实存储器)在内 的HW(真实HW)。在这种计算机系统中,操作系统(OS)被执行,且 多种应用程序(应用)在OS上运行。虛拟机应用(VM应用)作为应用 之一为人们所知。
VM应用包括虚拟机监视器(VMM) 。 VMM通过运行VM应用实现。 VMM也被称为虛拟机管理器。VMM管理VM系统,并构成虛拟硬件单 元(虛拟HW单元)。虛拟HW单元包含虚拟硬件(虚拟HW),例如虚 拟处理器、虚拟I/O单元、虛拟存储器单元(虚拟存储器)等等。VMM 在逻辑上对虛拟HW进行仿真,以便实现虚拟机执行环境或用于虚拟机系 统的执行环境(虚拟机系统环境)。环境与适合作为子OS的OS —起装 载,且OS (子OS)被操作。
VMM将子OS的代码(执行代码)展开到作为虛拟HW的存储器单
元中,并以虛拟处理器仿真的形式对执行代码进行执行。当VMM仿真虚 拟I/O单元时,来自子OS的输V输出请求(I/O请求)被处理。如上所述,VMM可在通用计算机系统中建立虚拟机执行环境(虚拟 机系统环境),以便在其中执行多个子OS。如上所述,VMM被实现为在 OS (主OS)上运行的一个应用。VMM在计算机系统的真实HW上实现也是已知的。这种VMM被称 为VMM单元,并在本质上作为OS。 VMM单元对真实处理器、真实1/0 单元等真实HW进行虛拟化,并作为功能向各个子OS提供虛拟化HW。 VMM单元在其上建立虚拟机执行环境。VMM单元对虛拟处理器、虛拟 I/O单元等虛拟HW进行仿真,或根据时间和区域向虛拟HW分配真实处 理器、真实I/O单元、真实存储器单元等真实HW (HW资源)。VMM 单元因此建立起虚拟机执行环境。子OS ^f皮装载到虚拟机执行环境之中, 并由虛拟处理器执行。虛拟机执行环境中子OS在其下被执行的环境被称为子OS执行环境。 通常,在虛拟机系统中执行多个子OS。用于在子OS之间进行通信的通信 接口对于每个子OS在其中被执行的执行环境来说是有用的。VMM因此 提供这种通信接口。通信接口的典型功能如下 (1)子OS之间的中断(interrupt)功能 (2 )子OS之间共享存储器功能 (3 )子OS之间的消息传送功能功能(1)为用于从一个子OS向另一个指定子OS发送中断的机制。 接收子OS具有用于通过例如中断因数信息来检测哪一子OS发送该中断 的装置。功能(2)为用于在特定子OS之间共享存储器空间的机制。发送子 OS将数据写到存储器空间(共享存储器空间),接着,接收子OS读取该 数据。数据传送因此能够执行。为了数据传送的同步,只要使用上述功能 (1)的机制。
为了实现功能(3 ),发送子OS必须指定有待发送的数据(发送数据) 和目标子OS (接收子OS),并请求VMM传送数据。VMM将指定数据 复制到目标子OS的接收緩冲器,接着,设置到目标子OS的接收中断。如果功能(1)与(2) —起使用或单独使用功能(3),可实现基本的 子OS通信。在现有技术中的虛拟机系统中,如果上述通信接口被用于初级机制,控制协议/网间协议(TCP/IP)等通信协议。因此,可以想到,多个子OS 通过上述机制彼此进行通信,并相互协作地提供服务。例如,直接连接到 外部通信通道(外部网络)的子OS作为防火墙(FW),另一子OS经由 虚拟网络连接到此子OS。然而,当子OS在彼此进行通信的同时执行处理时,存在这样的情况 通信在效率上没有改善。这种情况将在下文中阐释。首先假设四个子OS #A、 #B、 #C、存D在由VMM构建的虚拟机执行环境下运行,且四OS中 的子OS #A与弁C在相互通信的同时执行处理。具体而言,假设子OS #A 中的进程弁a与子OS #C中的进程弁c在相互之间发送/接收数据的同时执行 处理。VMM支持用于在子OS之间进行通信的上述三个功能(1)到(3 )。 子OS #A与弁C使用这些功能彼此通信。这里假设进程^a与^请求它们各 自的子OS经由TCP/IP接口发送/接收数据。在这种情况下,各个子OS 接收和处理请求,并经由由VMM提供的通信接口向另一子OS发送消息。 通信接口例如为在子OS之间传送消息的功能。假设在子OS #A与弁C之间重复下面四个处理。 (1)子OS #A (进程紐)向子OS #C发送三个消息(网络数据包) (处理al)。(2 )子OS #C (进程弁c)接收来自子OS #A的三个消息并对它们进 行处理(处理cl)。(3 )子OS #C (进程弁c)由所处理的消息产生新的消息并将之发送到
子OS #A (处理c2 )。(4 )子OS #A (进程弁a)接收来自子OS #C的新消息并对之进行处 理(处理a2 )。上述四个处理重复时执行的操作顺序如图4A所示。在图4A中,处理 al与a2的组合用处理i表示,处理cl与c2的组合用处理c表示。在图 4A中,水平轴表示过去的时间。在图4A中,"t"表示由VMM向各子OS分配处理器(CPU)的时 间单位,并通常称为时间片(time quantum)。为简明起见,假设在图4A 的实例中没有一个子OS在时间片t中途被切换。具体而言,分别在从tn+1 、 tn+2、 tn+3、 tn+4开始的时间片t中将处理器分配给子OS #A、 #B、 #C、 #D。类似地,分别在从tn+5、 tn+6、 tn+7、 tn+8开始的时间片t中将处理 器分配给子OS #A、 #B、 #C、 #D。然而,实际上,通过中断等事件,子 OS在时间片t中途被切换。在图4A中,向下的箭头表示发送消息,向上的箭头表示接收消息。 箭头的数量对应于消息的数量。附着到各向上箭头(接收消息)头部的包 含'V"的字符串意味着其对应的消息在该字符串表示的时间内,嫂送。包 含"t"的字符串下面被括住的符号意味着其对应的消息由该符号表示的子 OS发送。在图4A的实例中,如上所述,处理器在时刻tn+1被分派给子OS #A, 以便启动子OS弁A。接着,子OS幷A的进程幷a开始执行处理al。因此, 三个消息祐发送到子OS幷C。此后(时刻tx后),直到至少一个消息从子 OS #C返回之前,进程弁a不能执行处理(处理a2 )。即使消息从子OS #C 返回,如果子OS弁A不可运行,直到子OS弁A变得可运行之前,进程弁a 不能执^f亍处理(处理a2 )。然而,如果处理al与a2的处理时间总和小于 时间片T,可在时间片T的剩余时间内执行子OS弁A的进程弁a以外的进程。VMM将由子OS弁A的进程弁a发送的消息发送到子OS #C 。然而,此 时,子OS #C尚未启动运4亍。在图4A的实例中,在时刻tn+3后,子OS弁C 能启动运行。因此,在处理al中祐发送到子OS弁C的消息不是马上由子 OS弁C接收,而是在时刻tn+3时。如果处理cl与c2所需的时间短于时间片t,子OS弁C的进程弁c执4亍 处理cl与c2,并向子OS #A发送一个消息。此后(时刻ty之后),子 OS #C的进程弁c的处理不能继续,但子OS #C中的另一进程被执行。当从 tn+1开始过去4t时,子OS #A能在时刻tn+5时重新运行,以^f更接收来自 子OS弁C的消息并对之进行处理(处理a2)。因此,在47的时间周期内 执行一系列的处理al、 cl、 c2、 a2。从图4A显然可以看出,这种情况对 于进程弁a、 ^c来说效率非常低下。因此,可以想到,优先将处理器分派到受到未决(pending)中断的子 OS。如上所述,子OS之间的通信作为发送目标中的中断实现。使用这种 分派技术,当通信消息被发送时,处理器被分派到目标子OS。然而,每当 消息^LiL送时,子OS被切换。因此,切换子OS的额外成本将大大增加。 在上面介绍的如果多个消息未被发送则进程^c不执行下一处理的情况下, 系统性能可能下降,如将在下面介绍的那样。如果控制仅在进程弁a的第一个消息发送中被传递,进程^c不能完成处 理cl,因为另外两个消息未被发送。换句话说,进程弁c不得不在子OS #A 被重新计划为向进程弁c发送另外的(两个)消息之前一直等待。作为由于 中断而切换子OS的结果,系统性能可能根据环境而劣化。可以想到,作为另一种技术,将时间片t设置为较小的值。该值越小, 执行每个子OS的机M多。在这种情况下,消息被发送,接着,消息被 发送到的目标子OS在短时间内变得可运行。因此,消息接收处理得以早 地执行。然而,如果时间片7减小,用于切换子OS的成本增加,整个系 统的效率降低。通常,时间片t被设置为最优值,使得目标系统的响应时间令人满意, 且用于选择子OS的成本低(该成本对系统没有不良影响)。为了获得令 人满意的响应时间,时间片t应衫L设置为小的值,并且,为了得到低的成本,其应被设置为大的值。因此,如果最初被设置为最优值的时间片t被减小,存在整个系统的效率下降的担心。
发明内容本发明的一个目标在于当子OS执行处理时改进在子OS之间执行的通信的效率。根据本发明一实施例,提供了一种在虚拟机系统中切换多个子OS的 执行计划的方法,其中,子OS在由虚拟机监视器提供的虛拟机执行环境 下分时执行,在虛拟机系统中,任何两个子OS在经由由虚拟机监视器提 供的通信接口彼此相互通信的同时执行处理。该方法包含通过虛拟机监 视器指定经由通信接口彼此相互通信的子OS组;由虚拟机监视器将包含 在所指定的子OS组中的各子OS的执行计划的时间片设置得较短。


附图并入说明书并构成说明书的一部分,其示出了本发明的实施例, 并与上面给出的一般介绍以及下面给出的对实施例的详细介绍一起用于阐 释本发明的原理。图l为一框图,其示出了实现根据本发明一实施例的虚拟机系统的计 算机系统;图2为一框图,其示出了图1所示的机器系统中的虛拟机监视器 (VMM)的构造;图3为一框图,其示出了根据该实施例的虛拟机系统的状态实例,其 中,两个子OS在彼此通信的同时执行处理;图4A与4B为时序图,其各自示出了图3所示系统状态中重新计划之 前和之后的处理序列;图5为图4A所示处理序列中的通信状态表;图6为一流程图,其示出了用于根据本发明该实施例的虚拟机系统中 的时间片控制处理的过程; 图7为子OS表的实例;图8A与8B为时序图,其各自示出了当三个子OS在彼此通信的同时
执行处理时在重新计划之前和之后的处理序列; 图9为图8A所示处理序列中的通信状态表;图10为子OS表的实例,其用于基于图9所示通信状态表执行的时间 片控制处理;图11为图8B所示处理序列中的通信状态表;图12为一框图,其示出了根据本发明该实施例的变型的虛拟机监视器 (VMM)的构造;图13为n值定义表的实例;图14A与14B为流程图,其示出了在根据本发明该实施例的该变型中 用于时间片控制处理的过程;以及 图15为平均通信时间表的实例。
具体实施方式
现在将参照附图介绍本发明一实施例。图1为一框图,其示出了实现 根据本发明一实施例的虛拟机系统(VM系统)的计算机系统1的构造。 计算机系统1包含构成真实机器的硬件(HW) 10。人们知道,HW 10包 含真实处理器ll、 1/0单元(输^/输出单元)12、存储器(未示出)。被 称为主OS的OS 20在HW 10上运行。在OS (主OS ) 20上执行包含虚 拟机应用(VM应用)30在内的多种应用。VM应用30包含虛拟机监视器(VMM) 31。在执行VM应用30时, 实现VMM 31。 VMM 31管理VM系统并建立VM系统的环境(虛拟机执 行环境)。在图1中,构建四个虚拟机执行环境(VM执行环境)32A、 32B、 32C、 32D。VM执行环境32i (i=A、 B、 C、 D )包含虛拟HW环境(虚拟HW单 元)33i和子OS执行环境34i。虚拟HW环境33i包含虛拟HW,例如虛 拟处理器(VP) 331i、虛拟I/0单元332i、虛拟存储器单元(未示出)等 等。VMM 31在逻辑上仿真虛拟HW,以便实现上述VM执行环境32i。 VMM 31将运行在VM执行环境32i中的子OS执行环境34i中的OS作为
子OS 35i (#i)装载到子OS执行环境34i中。4皮装载到子OS执行环境34i 中的子OS 35i (#i)在子OS执行环境34i中被执行。VMM 31在包含在虚拟HW环境33i中的虚拟存储器单元中展开子 OS 35i (#i)的代码(执行代码),并以虚拟处理器331i的仿真的形式对 执行代码进行执行。因此,VMM 31继续进行子OS 35i的运行。来自子 OS 35i的I/O请求在VMM 31仿真虚拟I/O单元332i时被处理。图2为一框图,其示出了图1所示VMM31的构造。VMM31包含计 划器3U、分派器312、通信服务单元313、通信状态表314以及子OS表 315。计划器311确定子OS35i (#i)的计划。多种类型可^1考虑为由计划 器311实施的计划策略。假i殳在本实施例中计划器311实现简单的循环计 划。基本上,计划器311指示分派器312以被称为时间片(T)的时间单位 执行子OS 35i (#0 。然而,在本实施例中,计划器311也指示分派器根 据情况改变时间片的值。分派器312实际上才艮据计划器311的指示将处理器(真实处理器11) 分派到子OS35i (#1)。当计划器311所指示时间片的时间过去时,分派 器312将处理器(真实处理器11)从子OS 35i (#1)移除并将处理器分配 给另一子OS。重复进行这种处理。通信服务单元313作为用于处理子OS之间的通信请求(其从子OS 35i (#i)被发送到VMM 31)的通信接口。通信请求以管理程序调用(系统 调用)的形式净iL良布到VMM 31。在这种调用中,目标子OS和消息数据 被指定。通信服务单元313将被指定的消息发送到被指定的子OS,并设置 接收中断。当处理器被分派给目标子OS时,将接收中断通知到目标子OS。 目标子OS可将由通信服务单元313发送的消息数据作为接收数据进行参 照。通信状态表314用于保持关于由通信服务单元313所处理消息的发送 的信息。具体而言,通信状态表314用于保持关于消息发送的信息,其中, 子OS 35i被定义为发送源,子OS 35j( j *i )被定义为发送目标。子OS 35A、 35B、 35C、 35D、 35i、 35j将在下文中分别被表示为子OS #A、 #B、 #C、
#D、 #i和^j。子OS表315用于将彼此发送消息的子OS对保持为相互通 信子OS对,其中,该消息在一个计划时间周期(下文中介绍)内被接收。图3示出了由图l所示计算机系统l实现的VM系统(虚拟机系统) 的状态实例。在该实例中,子OS弁A、 #B、 #C、弁D由VMM31所构建的 VM执行环境32A、 32B、 32C、 32D (见图1)运行。在图3所示的系统 状态中,子OS #A中的进程浮a和子OS #C中的进程弁c在彼此相互通信的 同时执行处理。具体而言,四个处理(al、 cl、 c2、 a2)在子OS弁A中的 进程弁a和子OS #C中的进程弁c之间重复进行。图4A与4B各自示出了当重复四个处理时在重新计划之前和之后的处 理序列。在图4A与4B中,向下的箭头表示发送消息,向上的箭头表示接 收消息。箭头的数量对应于消息的数量。附着到各向上箭头(接收消息) 头部的含有"T"的字符串意味着其对应的消息在由该字符串表示的时间内 (例如2t对应于2t的时间段)被发送。字符串下方被括住的符号意味着 其对应的消息从该符号表示的子OS发送(如果被括住的符号为A,消息 从子OS弁A发送)。图5示出了图2的通信状态表314的实例,其中,被计划的子OS为 子OS弁A、 #B、 #C、 #D。对于作为发送目标的子OS弁i (i=A、 B、 C、 D) 和作为发送源的子OS弁j (j=A、 B、 C、 D; j承i)的所有组合,表314具 有条目射j,其保持关于消息发送的信息(下文被称为通信状态信息)。通信状态表314的条目#ij中所保持的通信状态信息包括消息数量和平 均发送时间。消息数量是在一个计划时间周期中从子OS #i发布到子OS #j 的消息的数量,或在短于一个计划时间周期的时间段中从子OS #1发送且 由子OS #j接收的消息的数量。平均发送时间是直到子OS #j接收来自子 OS #i的消息为止所需要的平均时间,或为从子OS #i到子OS #j的消息发 送所需要的平均时间。在图5的实例中,平均发送时间被括住。在本实施例中,假i殳一个计划时间周期表示为t x当前净皮计划的子OS的数量。当如本实施例中那样在时间片t的时 间中执行简单的循环计划时, 一个计划时间周期等于从将处理器分派到各
子OS到其下一个分派所需要的时间。在图4中,例如,从tn+l到tn+5 的时间段对应于一个计划时间周期,即4t。
通信状态信息由通信服务单元313创建,其中,子OS弁i为发送源, 子OS #j为发送目标。通信状态表314的条目#ij的信息被更新为所创建的 通信状态信息。计划器311可在每个计划时间周期结束时参照在表314中 更新的通信状态信息。
图5的通信状态表314示出了由图4A所示的处理序列表示的消息发 送的状态(通信状态)。例如,作为关于在最近一个计划时间周期中在子 OS #A与子OS #C之间的消息发送的通信状态信息,"3 ( 2t ) " #皮保持 在表314的条目中,该条目对应于成对的发送源子OS #A和发送目标子 OS #C。值"3"表示在短于所述一个计划时间周期的时间内由子OS #A 发送且由子OS #C接收的消息的数量。被括住的号码"2T,,表示从子OS #A 到子OS #C的消息发送所需要的平均发送时间。
在本实施例中,每个计划时间周期,计划器311执行下面的用于控制 时间片的处理(时间片控制处理)。计划器311参照通信状态表314以便 基于子OS之间的通信状态检索彼此密切(closely)相互通信的子OS对。 如果计划器311检测到目标子OS对,通过降低将处理器分配到各子OS 的粒度(degree)来防止消息发送的延迟。每个计划时间周期,计划器311 执行时间片控制处理。时间片控制处理可每两个或两个以上的计划时间周 期执行一次。
将参照图6所示流程图介绍由计划器311执行时间片控制处理的过程。 首先,计划器311检测彼此密切相互通信的所有子OS对(相互通信子OS) (步骤Sll)。彼此密切相互通信是从各子OS发送消息、使得该消息能 在一个计划时间周期中被接收到。具体而言,计划器311参照图5所示的 通信状态表314以检索所有这样的子OS对#1与幷j:其发送消息,使得这 些子OS能在一个计划时间周期内接收到消息。具体而言,子OS #i、 #j 包括子OS弁i,其发送消息,使得子OS弁j能在一个计划时间周期内接收 到该消息;子OS弁j,其发送消息,J吏得子OS弁i能在与所述一个计划时间
周期的同一时间周期内接收到该消息。在本实施例中,参照对于通信状态表314所示各子OS组合的消息数 量,消息数量不为零(非零)的子OS组合(子OS对)被检测为目标子 OS组合(相互通信子OS对)。创建所有检测得到的子OS对的列表(列 表"L")。在图5所示的通信状态表314中,仅包含作为元素的子OS对 存A与弁C的列表"L"被创建。计划器311将所创建的列表"L"与子OS表315进行比较。如果列表 "L"包含没有输入表315的子OS对,计划器311将该子OS对输入到表 315中(步骤S12)。如果存在不包括在列表"L"中但被输入到子OS表315中的子OS对, 或者,如果子OS表35包括列表"L"中未显示的子OS对被输入的条目, 将该条目(条目信息)从子OS表315中删除(步骤S13 )。步骤S13中 删除的条目(条目信息)为这样的条目(条目信息)该条目中,以前彼 此相互通信且目前不彼此通信的子OS对^皮输入。图7示出了在步骤S12和S13被执行后获得的子OS表315的实例。 在该实例中,子OS对弁A与弁C作为相互通信子OS对(#i与弁j)净皮输入到 子OS表315的第一条目中。然后,参照子OS表315,计划器311创建紧密相关子OS组(步骤 S14)。紧密相关子OS组是在子OS表315中输入的子OS对的集合(组)。 该集合(组)不仅包括子OS对,还包括与该子OS对中的一个相互通信 的另一子OS。因此,子OS表315的每个条目不仅包括用于输入子OS对 的列,还包括用于输入组——在前一列中输入的子OS属于该組——的ID (组ID)的列。在图7所示的子OS表315中,仅子OS弁A、弁C组成紧密相关子OS 組。然而,如果通信状态表314是图9所示的,子OS #A、 #C、弁D组成 紧密相关子OS组。紧密相关子OS组是彼此频繁发il/接收消息的子OS 的集合。在步骤S14中,计划器311向每个紧密相关子OS组提供作为组ID的
其唯一 ID (例如号码),并将ID输入到子OS表的组ID列中。计划器 311执行步骤S14,接着,前进到步骤S15。在步骤S15中,计划器311将 属于每个紧密相关子OS组的子OS起初以时间片t的单位被计划的时间 周期分割为t/n的时间周期,以4更对子OS重新进行计划,其中,n被)沐为 分割常数。在本实施例中,假设分割常数"n,,为预定恒定值,即二。然而, 可如下面介绍的那样动态改变分割常数"n"。在步骤S15中,计划器311 创建(确定)用于以t/n的时间单位顺次执行4皮重新计划的子OS的新计 划(表示新计划的计划表)。接着,计划器311向分派器312发送所创建的新计划(计划表)的信 息,并指示分派器312基于新计划进行重新计划(步骤S16)。根据新计 划,分派器312实际上进行重新计划,以便向子OS弁A、弁C分派处理器。当子OS #A、弁C如同上面介绍的本实施例中那样彼此发送/接收消息 时,作为时间片控制处理的结果,这些子OS变为属于同一紧密相关子OS 组。因此,重新计划处理器以t/2的时间单位向子OS弁A、弁C的分派。作 为重新计划的结果,属于紧密相关子OS组的子OS #A、 #C如图4B所示 地执^f于。至于不属于紧密相关子OS组的子OS弁B、 #D,仍然计划处理器 以t的时间单位每计划时间周期(=4t)到这些子OS的分派。在本实施例 中,注意,对于属于紧密相关子OS组的子OS的重新计划不影响对于其 他子OS的计划。在图4B所示的实例中,从子OS弁A到子OS弁C的消息发送的平均发 送时间以及从子OS存C到子OS弁A的消息发送的平均发送时间分别为大 約0.5t和1,5t。上面介绍的四个处理al、 cl、 c2、 a2的序列的周期(平均 处理周期)从图4A所示的4t减小到图4B所示的2t。在本实施例中,当子OS在彼此相互通信的同时彼此关联地执行处理 时,仅用于执行该子OS的计划的时间片被缩短。缩短时间片可防止性能 由于惯常引起的通信延迟而降低,而对其他子OS没有影响。特别地,VM 系统的子OS之间的通信通常基于存储器进行,其减小了额外成本。存在 这种通信在延迟时间(等待时间)上与真实网络系统的通信相比减小得多
的可能。因此,在本实施例中,VM系统的子OS之间高速通信的性能能 够更为增强,因此,整个VM系统的性能能够更为增强。在图4A与4B的实例中,不考虑进程弁a、弁c以外的任何将由子OS弁A、 存C执行的进程。实际上,不保证总是产生图4B所示的结果。然而,在图 4A所示的实例中,无论子OS #A、 #(:具有什么负载,没有多于图4A所 示的生产量(throughout)。在本实施例中,根据图4B所示的子OS的负 载,处理可高效率地执行。通过本实施例的重新计划改进处理效率的另一实例将关于子OS #A (其进程#3 )、子OS #C (其进程弁c )、子OS #D (其进程弁d )在彼此相 互通信的同时执行处理的情况进行介绍。图8A与8B各自示出了当三个子 OS#A、 #C、存D在彼此相互通信的同时执行处理时在重新计划之前和之后 执行的处理序列。假设在这种情况下分割常数"n"为二。在图8A与8B的实例中,每个计划时间周期执行下面六个处理(1) 子OS #A (进程弁a)向子OS #C发送三个消息(网络数据包) 中的两个,并向子OS弁D发送另一个(处理a,l);(2) 子OS #C (进程#<0从子OS弁A接收两个消息并对它们进行处 理(处理c'l);(3) 子OS幷C (进程^c)由被处理的消息创建新的消息,并将新消息 发送到子OS #A (处理c'2 );(4) 子OS #D (进程#<1)从子OS #A接收消息并对之进行处理(处 理d'l);(5) 子OS #D (进程弁d)由所处理的消息创建新的消息,并将新消 息发送到子OS #A (处理d'2);以及(6) 子OS弁A (进程弁a)从子OS #C和弁D接收消息并对之进行处理 (处理a'2)。处理(发送处理)a'l和c'2需要以此顺序(a'l—c'2)进4亍处理,处 理(发送处理)a'l和d'2需要以此顺序(a'l— d,2 )进行处理。图9示出了在图8A所示的处理序列中的通信状态表314的实例。图 10示出了基于图9所示通信状态表314的状态通过执行时间片控制处理所 获得的子OS表315的实例。图8B示出了当处理器根据基于图IO所示的 子OS表315所创建的新计划净皮分派到子OS #A、 #C、 #D时所获得的处理 序列(即在重新计划后获得的处理序列)。在图10所示的子OS表315的实例中,紧密相关子OS組包含子OS #A、 #C、 #D。重新计划处理器以7/2的时间单位到子OS弁A、 #C、 D的分配。 这种重新计划降低了处理器到三个子OS #A、 #C、弁D的分配的粒度。上 面的六个处理(a'l, c'l, c'2, d'l, d'2, a'2)的处理顺序由图8A所示的 状态被改进为图8B所示的状态。对于不属于紧密相关子OS组的子OS #B, 仍然计划处理器以时间单位t每个计划时间周期(=4t)对子OS弁B的分 配。图8A中的平均处理周期为4t,图8B中的为2t。由此看出,图8A中 的平均处理周期从4T减小到2t。图11示出了图8B的状态中的通信状态 表314的实例。[变型在上面的实施例中,假设分割常数"n"为预定恒定值(n=2)。分割 常数"n,,为用于确定处理器到子OS的分配的时间单位的值(参数)。在 上面的实施例中,处理器以tx (1/n)的时间单位或以t/n的时间单位4皮 分配。然而,消息通信所需要的时间受到分配时间t/n的影响。因此,分 割常数"n"必须适当设置。现在将介绍对上述实施例的变型,其中,包括适当确定分割常数"n,, 的值的处理(n值确定处理)在内的时间片控制处理由计划器311执行。 图12为一框图,其示出了根据这种变型的虛拟机监视器(VMM) 31的构 造。为了方便,在图12中,与图2中相同的元件用同样的参考标号表示。 图12所示的VMM 31与图2中的VMM31的不同之处在于其包含n值定 义表316和平均通信时间表317。与图2所示的计划器311不同,图12所 示VMM 31的计划器311包含平均通信时间计算单元311a与比较单元 311b。单元311a与311b以^^ 316与317将在后文中介绍。
下面介绍包括n值确定处理在内的时间片控制处理的概要。(a) 计划器311对于紧密相关OS组使用不同的分割常数"n",并 在必要时改变"t"。如果紧密相关子OS组Gi的分割常数"n"祐束示为 ni,计划器311对属于紧密相关子OS组Gi的子OS重新计划,1吏得用于 子OS的进程分配的时间周期变为T/ni。(b) 假设分割常数"n"被预定。在此变型中,分割常数"n"被设 置为do、山、d2、 (13四个值中的任意一个。d0、 dp d2、 d3的具体值由n 值定义表316定义。图13示出了 n值定义表316的实例。在图13所示的表中,do、 <^、 d2、 (13分别对应于1、 2、 3、 4,它们是分割常数"n,,的值(n值)。如果 n值定义表316的内容坤皮改变,或者,如果do、 ^、 d2、 &的定义被改变, 可定义分割常数"n"的不同值。假设在该变型中d。、 dp d2、 (13表示的值以d。、 dp d2、 &的顺序增 大(或者,时间片被进一步分割)。另外,假设d0 (其为分割常数"n" 的最小值)为一。另外,假设该变型中定义的最大分割常数"n,,用dmax 表示。在该变型中,dmax为d3。(c) 在包括应用于本变型的n值确定处理在内的时间片控制处理中, 直到时间片控制处理4皮调用了 A次,在从浮皮di定义的ni的值被确定时开始 的时间段中,事实上不执行任何确定处理。在该变型中,直到时间片控制 处理^皮调用了 A次,从其在n值确定处理中被确定时开始,不改变ni的值。 尽管处理量由于ni的值的频繁改变而增加,能防止由于处理量增加引起的 额外成本的增加。在该变型中,如同上面的实施例中那样,计划器311每个计划时间周 期执行时间片控制处理。具体而言,计划器311基于子OS之间的通信状 态检索通信状态表314以得到彼此密切相互通信的子OS对(其彼此发送 消息,使得它们能在一个计划时间周期内接收到消息)。如果子OS对^L 检测到,计划器311通过降低处理器到子OS的分配粒度来防止消息发送 中的延迟。然而,计划器311对于每个紧密相关OS组动态改变分割常数
"n"的值,并控制对于各组的处理器分配粒度。时间片控制处理可每两个 或两个以上的计划时间周期执行一 次。下面将参照图14A与14B所示的流程图介绍用于包括n值确定处理在 内的时间片控制处理的过程。首先,计划器311在其重复时间片控制处理 之前预先将变量WAIT一CNT初始化为零。变量WAIT_CNT用于控制时 间片控制处理被执行的时刻。当时间片控制处理4皮调用时,计划器311参 照变量WAIT_CNT以确定变量WAIT_CNT是否为零(步骤S21)。如果 变量WAIT—CNT不为零,计划器311将变量WAIT—CNT减小1 (步骤 S22),并完成时间片控制处理。当变量WAIT—CNT为零时(步骤S21),计划器311如下所述地控 制处理器到各紧密相关OS的分配粒度。首先,计划器311执行与上面的 实施例的步骤Sll到S14对应的步骤S23到S26。换句话说,计划器311 检测相互通信子OS对并创建相互通信子OS对的列表"L,,(步骤S32 )。 在表315中,计划器311也输入新检测到且不包含在子OS表315中的相 互通信子OS对(步骤S24)。于是,计划器311从子OS表315中删除不 包含在列表"L"中的子OS对在其中被输入的条目(步骤S25),并创建 紧密相关子OS组(步骤S26)。计划器311执行步骤S23到S26,接着,进行到步骤S27。在步骤S27 中,计划器311将对于新检测到的紧密相关子OS组的条目(条目信息) 添加到平均通信时间表317。在步骤S27中,计划器311也从平均通信时 间表317中删除对于已被检测到且被输入到表317中的紧密相关子OS组 的以及对于此次未检测到的紧密相关子OS组的条目(条目信息)。图15示出了平均通信时间表317的实例。平均通信时间表317包括对 于它们各自的紧密相关子OS组的条目。表317的条目用于输入对于由紧 密相关子OS組的dQ到d3定义的分割常数"n"的值的平均通信时间的测 量值。平均通信时间将在下文中介绍。在步骤S27中,当对于新检测到的紧密相关子OS组的条目(条目信 息)被添加到平均通信时间表317中时,条目信息已被初始化。这里,用
所添加的条目表示的、由do到d3定义的分割常数"n"的值的平均通信时 间的信息被设置为具有无效值的未定义状态(该状态用符号"-"表示)。当计划器311执行步骤S27时,其如下执行n值确定处理(步骤S28 到S36 )。首先,计划器311判断对于在子OS表315中输入的所有紧密 相关子OS组是否执行了 n值确定处理(步骤S28 )。如果存在未执行n 值确定处理的紧密相关子OS组(未处理的紧密相关子OS组),计划器 311在子OS表315中从未处理的紧密相关子OS组中选择一个作为紧密相 关子OS组Gi (步骤S29)。计划器311更新对应于所选择的紧密相关子OS组Gi的平均通信时间 表317的条目信息,或者,其更新紧密相关子OS组Gi的平均通信时间(步 骤S30)。平均通信时间是由计划器311中的平均通信时间计算单元311a 计算得到的。平均通信时间与发送目标的子OS在一个计划时间周期内接 收的消息有关,该消息被包括在从属于紧密相关子OS组Gi的子OS发送 的消息中,同时,使用由dk(k一、 1、 2、 3)定义的分割常数"n"的值。 换句话说,平均通信时间是从由发送目标的子OS在一个计划时间周期内 接收的消息被发送以及直到它们被接收的平均时间周期(通信时间周期)。 通过平均通信时间计算单元311a,从平均通信时间的计算主体排除超出一 个计划时间周期接收的消息。为了计算紧密相关子OS组Gi的平均通信时间,平均通信时间计算单 元311a将在上一个计划周期内在属于组Gi的子OS之间传送的消息的总 通信时间周期(J)消息通信时间)除以消息总数(N)。具体而言,通过 下面的>^式计算组Gi的平均通信时间 (D消息通信时间)/N (1)公式(1)中的消息是在一个计划时间周期内由发送目标的子OS接收 的消息,其被包括在由属于紧密相关子OS组Gi的所有子OS发送的消息 中。如上所述,在该变型中,计算平均通信时间的目标时间周期为上一个 计划时间周期。然而,目标时间周期可,皮定义为多个计划时间周期。平均200710300437.7说明书第18/21页得。下面将参照图8A所示的时序图介绍由平均通信时间计算单元311a计 算平均通信时间的方法的实例。参照图8A,子OS弁A、 #C、 ^D組成一个 紧密相关子OS组。这里假设紧密相关子OS组的组ID为1,组为Gi,即 "Gi-Gl (i=l)"。由于时间片为t, "n=l,,或"dk=d0 (k=0)"。通 信状态表314的内容如图9所示。在图8A中,消息总数(N)为五。如下所述,紧密相关子OS组Gi的平均通信时间由平均通信时间计算 单元311a进行计算(E消息通4言时间)/N= ( 2 x 2t+1 x 3t+1 x 2t+1 x T ) /5 =2t在步骤S30中,计划器311将由平均通信时间计算单元311a计算得到 的平均通信时间定义为T。在本实例中,T=2t。在步骤S30中,计划器311 在当前应用列"dk=d() ( k=0 )"中设置计算得到的平均通信时间T (=2t), 其被包括在与紧密相关子OS组Gi ( Gl)对应的平均通信时间表317的条 目中包括的列do到A中。换句话说,计划器311将列"dk=d。 (k=0)" 的旧的设置信息更新到平均通信时间T (=2t)。更新后的平均通信时间T 与紧密相关子OS组Gi (Gl)以及"dk=dG (k=0)"有关。更新的平均通 信时间T被束示为Ti,k,其中,Ti,k; (i=l, k=0)=2T。当紧密相关子OS组Gi的当前分割常数"n"的值(即"n广的值) 为dk时,计划器311中的比较单元311b将该值与最小值(1)进行比较, 并判断dk是否为最小值(1),即do ( k=0 )(步骤S31)。如果紧密相关 子OS组Gi的当前分割常数"n" (=iii)的值dk不是最小值(1),比较 单元311b将此次计算得到的平均通信时间Ti,k (在dk时)与值"0"进行 比较,并判断平均通信时间Ti,k是否为零(步骤S32)。如果平均通信时 间Ti,k (或当前平均通信时间Ti,k)不为零,比较单元311b将平均通信时 间Ti,k与时的平均通信时间Ti,w进行比较,并判断Ti,k是否小于Ti,w (步骤S33)。平均通信时间Ti,w在刚好在当前应用的列dk之前的
的列中^皮i殳置,其被包括在与紧密相关子OS组Gi (组ID-i)对应的平均 通信时间表317的条目中所包括的列do到A中。换句话说,Ti,^为以比 前一次长一个等级的时间片^:置的最后的平均通信时间。如果Ti,k小于Ti,k-"计划器311将新的分割常数"n" (-ni)的值设 置到&+1,其比当前值dk长一个等级(步骤S34)。换句话说,计划器311 使得CPU分配时间单元比当前时间单位短一个等级。如果dk+1未被定义 或者当前值dk为n值定义表316定义的"n"的最大值dmax,计划器311 不能设置长于最大值dmax的值。在这种情况下,计划器311将新的分割 常数"n,, (=ni)的值定义为当前值dk,或dmax。计划器311执行步骤 S34,并返回到步骤S28。如果紧密相关子OS組Gi的当前分割常数"n" (=ni)的值dk为最 小值(l),或者如果当前值dk为dQ (k=0)(步骤S31),计划器311将 分割常数"n" (=ni)的值设置到值dk+1 ,其长于当前值dk —个等级,除 非平均通信时间Ti,k (k=0)为零(步骤S34)。由于在此变型中k等于零 (k=0),分割常数"n" (=ni)的值do从d。产l)被改变为d(=2)。于是,假设紧密相关子OS组Gi的当前分割常数"n" (=ni)的值dk 不为最小值(1)。另外,假设此次获得的平均通信时间Ti,k (在dk时)不 为零,但平均通信时间Ti,k等于或长于dw时的平均通信时间Ti,w (步骤 S31到S33)。在这种情况下,计划器311将新的分割常数"n"(=叫)的 值定义为值dk^,其比当前值dk小一个等级(步骤S36)。换句话说,计 划器311 4吏CPU分配时间单位比当前时间单位长一个等级。计划器311 执行步骤S36并接着返回到步骤S28。在图14A与14B所示的流程图中,平均通信时间Ti,k为零的情况也被 考虑(步骤S32和S35 )。然而,在步骤S23和S24中,Ti,k为零的紧密相 关子OS组未蜂皮输入到子OS表315中。在本变型中,不存在平均通信时 间Ti,k为零的紧密相关子OS组。图14A与14B所示的流程图包括当Ti,k 为零时执行的处理以便描述共用过程。如果紧密相关子OS组Gi的当前分 割常数"n" ( =ni)的值dk不为最小值(1)但此次(dk)获得的平均通
信时间Ti,k为零(步骤S31与S32 ),计划器311将新分割常数"n" (=ni) 的值定义为值dw,其比当前值dk小一个等级(步骤S36)。如果紧密相 关子OS组Gi的当前分割常数"n"(=叫)的值dk为最小值(1)且此次 获得的平均通信时间Ti,k为零(步骤S31与S35),计划器311不执4亍分 割常数"n"(=叫)的处理,而是返回到步骤S28。对于所有的紧密相关子OS组,计划器311执行上面的处理(n值确 定处理),其开始于步骤S28。如果计划器311对于所有紧密相关子OS 组完成了 n值确定处理(步骤S28),其将初始值A设置到变量WAIT一CNT (步骤S37)。计划器311将在n值确定处理中为紧密相关子OS组Gi的每一个确定 (设置)的ni的值应用到组Gi,以创建用于以T/ni的时间单位顺次执行属 于组Gi的子OS的新计划(步骤S38)。计划器311将新计划的信息发送 到分派器312,并指示分派器312基于新计划进行重新计划(步骤S39)。 此后,在图14A与14B的流程图所示的处理^f皮调用A次时,变量 WAIT—CNT被简单地逐个减小(步骤S21和S22)。因此,属于紧密相关 子OS组Gi的子OS通过ni的同样的值进^f亍计划。在图8A的实例中,作为n值确定处理(步骤S28到S36)的结果, 包含子OS #A、 #C、 #D的紧密相关子OS组Gi (Gi-Gl)的(n尸iu ) 的值从do变为(U。换句话说,ih的值从l变为2。结果,紧密相关子OS 组G1的新的时间分配单位从t变为t/2。因此,子OS弁A、 #C、弁D以新 的时间分配单位重新计划,如图8B所示。在图8B的实例中,消息总数N 为10。如上所述,图9示出了在图8B所示状态中的通信状态表314的实例。 如果平均通信时间计算单元311a基于通信状态表314为紧密相关子OS组 Gl计算平均通信时间,平均通信时间如下计算 (2)消息通信时间)/N=(4 x t/2+1 x 2t+1 x t+1 x t+1 x 2t+2 x t/2 ) /10=0.9t 由上面的计算可见,平均通4言时间从2t减小到0.9t。当才艮据图14A 与14B所示流程图的处理被接下来执行时,"0.9t"被记录在图15所示平 均通信时间表317的紧密相关子OS组Gl所对应的条目的列dl中。于是, ni的值从di (=2 )变为d2 (=3 ),分配时间单位被进一步细分。计划器311 减小ni的值,在该时间段中,可获得效果(即dk中的新平均通信时间Ti,k 短于d^处的平均通信时间Ti,w的时间段)。如果没有获得效果,计划器 311将ni的值从dk返回到其上一值dk4。结果,ni的最优值被设置到紧密 相关子OS组的每一个。上面没有说明,在步骤S27中从平均通信时间表317中删除的紧密相 关子OS组的每个子OS以时间单位t重新计划,同时,分割常数"n,,的 值坤皮返回到d0 (=1)。在上面的实施例及其变型中,假设VMM 31被实现为在OS 20上运行 的一个应用(VM应用30)。然而,本发明可应用于VMM (虛拟机监4见 器)在计算机系统的真实HW上作为VMM单元实现的情况。本领域技术人员将会容易地想到其他的优点和变型。因此,本发明在 其更宽广的实施形态上不限于这里示出和介绍的具体细节和典型实施例。 因此,在不脱离所附权利要求书及其等价内容所限定的一^明构思的精 神或范围的情况下,可进行多种修改。
权利要求
1.一种在虚拟机系统中切换多个子OS的执行计划的方法,在该系统中,所述子OS在由虚拟机监视器提供的虚拟机执行环境下分时执行,所述子OS中的任意两个在经由由所述虚拟机监视器提供的通信接口彼此相互通信的同时执行处理,所述方法的特征在于包含通过所述虚拟机监视器指定经由所述通信接口彼此相互通信的子OS组;以及通过所述虚拟机监视器将包含在所指定的子OS组中的各个子OS的执行计划的时间片设置得较短。
2. 根据权利要求l的方法,其特征在于在所述多个子OS中,其相 互通信在一个计划时间周期内完成的子OS对的集合净皮指定为所指定的子 OS组。
3. 根据权利要求l的方法,其特征在于当存在与各个子OS对中的 一个子OS进行相互通信并在一个计划时间周期内完成相互通信的另一子 OS时,判断为所迷另一子OS属于所指定的子OS组。
4. 才M^权利要求1的方法,其特征在于还包含 通过所述虚拟机监视器控制所述指定与所述i殳置的重复,所述重复以预定的计划时间周期执^f亍;每当所述子OS组被指定时,通过所述虚拟机监视器计算第一平均通 信时间,所述笫一平均通信时间为所指定的子OS组的子OS之间的相互 通信需要的当前平均通信时间;以及通过所述虚拟机监^L器将所述第 一平均通信时间与第二平均通信时间 进行比较,所述笫二平均通信时间在时间片被设置为比本次长一个等级时 计算得出,其中,当所述第一平均通信时间短于所述第二平均通信时间时将所述 时间片设置为比本次短一个等级,当所述第一平均通信时间不短于所述第 二平均通信时间时,将所述时间片设置为比本次长一个等级。
5. —种虚拟机监视器,其建立虚拟机执行环境,在所述虛拟机执行环 境下,多个子OS分时执行,所述虚拟机监视器的特征在于包含通信接口,其被配置为通过所述子OS的请求在所述多个子OS的任 意两个之间进行相互通信;通信状态表,其保持通过所述通信接口在所述子OS之间执行的相互 通4言的状态;计划器,其被配置为根据所述通信状态表指定使用所述通信接口彼此 相互通信的子OS組,并创建新的计划,在该计划中,包含在所指定的子 OS组中的各子OS的执行计划的时间片被设置得短;以及分派器,其被配置为使得包含在所指定的子OS组中的子OS按照所 述新计划被执行。
6. 根据权利要求5的虚拟机监视器,其特征在于所述计划器将其相 互通信在一个计划时间周期内完成的子OS对的集合指定为所述子OS组, 所述子OS对的集合包含在所述多个子OS中。
7. 根据权利要求6的虚拟机监视器,其特征在于当存在与各个子 OS对中的一个子OS进行相互通信并在所述一个计划周期内完成相互通信 的另一子OS时,所述计划器判断为所述另一子OS属于所指定的子OS 组。
8. 根据权利要求6的虛拟机监视器,其特征在于 对于经由所述通信接口彼此相互通信的各子OS对,所述通信状态表保持通信状态信息,该信息包括在比所述一个计划时间周期短的时间内接 收的消息的数量;且所述计划器在预定的计划时间周期参照所述通信状态表,并将与表示 所述消息的数量不为零的通信状态信息对应的所有子OS对指定为包含在 所述子OS组中的子OS对。
9. 根据权利要求5的虛拟机监视器,其特征在于 保持在所述通信状态表中的通信状态信息包括平均发送时间值以及消息的数量,所述平均发送时间为从消息发送到其接收需要的平均时间; 所述计划器包含平均通信时间计算单元与比较单元,所述平均通信时间计算单元被配置为每当所述子OS组被指定时根据包含在所指定的子OS 组中的所有子OS对、基于保持在所述通信状态表中的通信状态信息中的 平均发送时间来计算第一平均通信时间,该时间为所指定的子OS组的所 有子OS之间相互通信需要的当前平均通信时间,所述比较单元4皮配置为将所述第一平均通信时间与当时间片净皮设置得比本次长一个等级时计算得到的第二平均通信时间进行比较;且当所述第 一平均通信时间短于所述第二平均通信时间时,所述计划器 将所述时间片设置得比本次短一个等级,当所述第一平均通信时间不短于 所述第二平均通信时间时,将所述时间片设置得比本次长一个等级。
全文摘要
本发明涉及选择子OS的一个执行计划的方法以及使用该方法的虚拟机监视器。在虚拟机系统中,多个子OS在由虚拟机监视器(VMM)(31)提供的虚拟机执行环境下分时执行。VMM(31)指定经由由VMM(31)提供的通信接口彼此相互通信的子OS组(S11-S14)。接着,VMM(31)将包含在所述多个子OS且包含在所指定的子OS组中的各子OS的执行计划的时间片设置得较短(S15)。
文档编号G06F9/48GK101211277SQ20071030043
公开日2008年7月2日 申请日期2007年12月27日 优先权日2006年12月27日
发明者水野聪 申请人:株式会社东芝;东芝解决方案株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1