改进虚拟处理器调度的亲和性的制作方法

文档序号:6515862阅读:178来源:国知局
改进虚拟处理器调度的亲和性的制作方法
【专利摘要】在一个实施例中,对于第一分区接收请求以在第一虚拟处理器上运行。如果在第一节点处所述第一物理处理器可用,则将所述第一虚拟处理器调度到作为所述第一虚拟处理器的家节点的所述第一节点处的所述第一物理处理器处运行。如果所述第一物理处理器不可用,则进行所述第一物理处理器是否分配到第二虚拟处理器的确定,并且所述第二虚拟处理器的家节点不是所述第一节点。如果所述第一物理处理器分配到第二虚拟处理器,并且所述第二虚拟处理器的家节点不是所述第一节点,则停止在所述第一物理处理器上运行所述第二虚拟处理器,并且将所述第一虚拟处理器调度到所述第一物理处理器。
【专利说明】改进虚拟处理器调度的亲和性
【技术领域】
[0001]本发明的实施例一般地涉及计算机系统,并且更具体地涉及调度(dispatch)虚拟处理器给物理处理器的计算机系统。
【背景技术】
[0002]计算机系统典型地包括硬件(诸如半导体、晶体管、芯片和电路板)和计算机程序的组合。随着不断增加数目的更小和更快速的晶体管可以集成在单个芯片上,设计新的处理器以有效地使用这些晶体管,以便提高性能。当前,许多计算机设计者选择使用不断增加的晶体管预算以建立更大和更复杂的单处理器。可替代地,多个更小的处理器核心可以放置在单个芯片上,这是有益的,因为单个、简单的处理器核心更容易设计和检验。这导致更便宜和简单的检验过程,作为一次检验模块,处理器在芯片上重复多次。
[0003]已知为多逻辑分区的技术利用多处理器。逻辑分区的计算机包括实现虚拟计算机的多个逻辑分区,虚拟计算机在分离的存储器空间中运行,可以运行分离的操作系统,并且可以使用共享资源。共享资源的示例是处理器、存储器、协处理器、网络带宽或二级存储器。用于分配处理器到各分区的一种技术是使用虚拟处理器,虚拟处理器是使用共享处理器的逻辑分区的操作系统的物理处理器核心的代表。

【发明内容】

[0004]提供了一种方法、装置和计算机。在一个实施例中,接收对于第一分区的请求以在第一虚拟处理器上运行。确定在第一节点处第一物理处理器是否可用,其中所述第一节点是所述第一虚拟处理器的家节点。如果在所述第一节点处所述第一物理处理器可用,则将所述第一虚拟处理器调度到作为所述第一虚拟处理器的家节点的所述第一节点处的所述第一物理处理器,其中将所述第一虚拟处理器调度到所述第一节点处的物理处理器进一步包括在所述第一节点处的所述第一物理处理器上运行所述请求。如果在所述第一节点处所述第一物理处理器不可用,则确定所述第一节点处的所述第一物理处理器是否分配到第二虚拟处理器,并且所述第二虚拟处理器的家节点不是所述第一节点。如果所述第一节点处的所述第一物理处理器分配到第二虚拟处理器,并且所述第二虚拟处理器的家节点不是所述第一节点,则停止在所述第一节点处的所述第一物理处理器上运行所述第二虚拟处理器,并且将所述第一虚拟处理器调度到所述第一节点处的所述第一物理处理器。
【专利附图】

【附图说明】
[0005]图1描述了用于实现本发明实施例的示例系统的高级框图。
[0006]图2描述了根据本发明实施例的节点的系统的高级框图。
[0007]图3描述了根据本发明实施例的用于调度虚拟处理器的示例处理的流程图。
[0008]图4描述了根据本发明实施例的用于调度虚拟处理器的进一步示例处理的流程图。[0009]然而,要注意的是,附图仅说明本发明的示例实施例,并且因此不被视为本发明的其他实施例的范围的限制。
【具体实施方式】
[0010]在实施例中,为了满足分区的处理器权利要求,如果分区具有未决的授权工作请求,则调度器不允许物理处理器核心保持空闲。替代地,调度器可以将虚拟处理器调度到不处于虚拟处理器的家节点的物理处理器核心。
[0011]本发明的实施例基于物理处理器核心和存储器亲和性,确定工作请求的优先顺序。调度器分配(assign)每个分区各自的授权能力(capacity),其是调度器确保各个分区在没有等待的情况下接收的物理处理器周期的量。如果配置为具有消耗超过其授权的性能(capability),则分区还可以消耗额外或一些节点的过量处理器周期,如果在节点系统的一些节点处存在过量(可用)物理处理器能力。当分区正接收授权的处理器能力周期时,如果调度器计算到将导致改进的性能时,则与正在使用过量物理处理器能力的其他虚拟机相t匕,调度器给予该分区的亲和性更高的重要性等级。不确保分区接收过量物理处理器周期,并且可能需要等待过量物理处理器周期,或者不能与物理处理器周期的授权能力同时接收过量物理处理器周期。在各种实施例中,调度器从调度器的设计者接收各种分区的授权能力,分配每个分区具有相等的授权能力(其中所有授权能力的和是节点系统的总体处理能力),分配与历史时间段期间处理周期的分区使用成比例的授权处理器能力给每个分区,或者分配最大化节点系统的总体性能的授权能力。
[0012]调度器将系统分割为多个节点或代表物理处理器核心的分组的亲和性域,如果处理器核心和物理处理器核心访问的存储器在相同亲和性域中,则提供可接受的性能,如果处理器核心和物理处理器核心访问的存储器在不同节点或域中,则提供不合意的性能。此夕卜,调度器分配分区的虚拟处理器到家亲和性节点或域,其代表包括调度器预期虚拟处理器访问的大多数存储器的节点或域。在实施例中,调度器分配家节点到虚拟处理器,在历史时间段期间虚拟处理器(或分配到虚拟处理器的分区)访问(从该节点中的存储器读取或写入到该节点中的存储器)最多。在另一实施例中,调度器分配包括存储分配虚拟处理器的分区的存储器的节点作为虚拟处理器的家节点。
[0013]当进行调度决定时,如果虚拟处理器被调度给其家亲和性域(节点)外部的物理处理器核心,并且虚拟处理器正调度以从系统中的过量物理处理器能力接收物理处理器周期,那么调度器记录该虚拟处理器为消耗家亲和性域(节点)过量能力。在虚拟处理器已经完成在该物理处理器核心上的运行之后,调度器然后移除保持该虚拟处理器为消耗家亲和性域(节点)过量能力的记录。
[0014]当调度器决定对于将接收授权周期的分区运行虚拟处理器,并且在该虚拟处理器的家亲和性域(节点)中不存在可用物理处理器核心时,调度器确定在运行消耗家亲和性域过量能力的虚拟处理器的虚拟处理器的家亲和性域中是否存在物理处理器核心。如果存在,那么调度器决定在哪些核心之一上运行虚拟处理器,并且停止在该核心上运行正接收过量能力的虚拟处理器。
[0015]因此,当进行亲和性决定时,调度器给予一组虚拟处理器比另一组虚拟处理器更高的优先级,而不管这些分区之间的任何其他优先次序。在另一实施例中,调度器总是给予接收授权的虚拟处理器比接收过量能力的虚拟处理器更高的亲和性优先级,而不考虑过程能力是否在接收它的虚拟处理器的家节点中消耗。在另一实施例中,调度器总是给予接收授权的虚拟处理器比它们的家亲和性域外部的物理处理器上接收授权的虚拟处理器更高的亲和性优先级。
[0016]除了从它们的家亲和性域(节点)主动移除接收过量能力的虚拟处理器,以有利于允许分区的虚拟处理器接收它的家亲和性域中的授权周期外,调度器采取额外步骤,以便在除了将它们在它们的家亲和性域(节点)的外部运行外没有选择的情况下,将虚拟处理器尽可能快地返回它们的家亲和性域。
[0017]当虚拟处理器调度到该虚拟处理器的家亲和性域(节点)外部的物理处理器时,对于接收授权或过量能力的虚拟处理器的分区,调度器周期性地中断虚拟处理器的运行,并且监控条件已经改变使得现在在虚拟处理器分配到的分区的家亲和性域(节点)处有空闲物理处理器可用。响应于调度器发现将虚拟处理器返回以在虚拟处理器分配到的分区的家亲和性域(节点)运行的机会,调度器将该虚拟处理器移动到虚拟处理器的分区的家亲和性域(节点)中的空闲物理处理器核心,而不是等待虚拟处理器的普通先占和重新调度出现。
[0018]参照附图,其中贯穿若干视图相同的标号表示相同的部分,图1描述根据本发明的实施例,经由网络130连接到另一计算机系统132的节点计算机系统100的高级框图表现。本发明实施例的机制和装置同样应用于任何适当的计算系统。
[0019]节点计算机系统100的主要组件包括一个或多个物理处理器101、存储器102、终端接口单元111、存储接口单元112、I/O (输入/输出)设备接口单元113和网络接口单元114,它们全部为了组件间通信经由存储器总线103、1/0总线104和I/O总线接口单元105直接或间接地通信耦合。
[0020]节点计算机系统100包含一个或多个通用可编程中央处理单元(CPU)101A、101B、IOlC和IOlD (也已知为物理处理核心),在此统称为物理处理器101。在实施例中,节点计算机系统100包含典型的相对大系统的多物理处理器;然而,在另一实施例中,节点计算机系统100可以可替代地是单个CPU系统。每个物理处理器101运行存储器102中存储的指令,并且可以包括一个或多个级别的板上缓存。
[0021]在实施例中,存储器102可以包括用于存储或编码数据和程序的随机存取半导体存储器、存储设备或存储介质(易失性或非易失性)。在另一实施例中,存储器102代表节点计算机系统100的整个虚拟存储器,并且还可以包括耦合到节点计算机系统100或经由网络130连接的其他计算机系统的虚拟存储器。存储器102概念上是单个单片集成整体,但是在其他实施例中,存储器102是更复杂的安排,诸如高速缓存和其他存储器设备的阶层架构。例如,存储器可以存在多级高速缓存,并且这些高速缓存可以进一步通过功能划分,使得一个高速缓存保持指令,同时另一个保持由处理器或多个处理器使用的非指令数据。存储器可以进一步分布和与不同CPU或CPU的分组相关联,如在任何各种所谓非均匀存储器存取(NUMA)计算机架构中已知的。
[0022]存储器102图示为包含在实现节点计算机系统100上的逻辑分区计算环境中利用的主要组件,包括由分区管理器或管理程序136和调度器138管理的多个逻辑分区134。尽管分区134和管理程序136图示为包含在节点计算机系统100中的存储器102中,但是在其他实施例中,它们中的一些或所有可以在不同计算机系统(例如,计算机系统132)上,并且可以例如经由网络130远程访问。此外,节点计算机系统100可以使用虚拟寻址机制,其允许节点计算机系统100的程序表现为好像它们仅访问大的、单个存储实体,而不是访问多个较小存储实体。因此,尽管分区134、管理程序136和调度器138图示为驻留在存储器102中,但是这些元件不必全部完全同时包含在同一存储设备中。尽管管理程序136和调度器138图示为分离的,但是在另一实施例中,它们可以封装在一起。
[0023]每个逻辑分区134包括和利用OS (操作系统)142,其以与非分区计算机的操作系统相同的方式控制逻辑分区134的主要操作。一些或所有操作系统142可以相互相同或不同。可以支持任何数目的逻辑分区134,并且任何时间驻留在节点计算机系统100中的逻辑分区134的数目可以随着分区添加或从节点计算机系统100移除而动态改变。逻辑分区134包括虚拟处理器(VP)146,其代表相同或不同节点上的物理处理器101 (或者其部分、时间片或重复)。
[0024]每个逻辑分区134包括在分离、或独立存储器空间中在处理器101上运行的指令,并且因此从在每个这样的逻辑分区134中运行的每个应用(app)144的角度看,每个逻辑分区134同样充当独立的、非分区计算机。如此,应用144典型地不需要用于在分区环境中使用的任何特别配置。在各种实施例中,应用144是用户应用、第三方应用或其任何部分、重复或组合。应用144包括在处理器101上运行的指令,或者由在处理器101上运行的指令解释的陈述。每个应用144可以相互相同或不同。
[0025]假定逻辑分区134的属性为分离的虚拟计算机,可能希望支持分区间通信以允许逻辑分区相互通信,好像逻辑分区是分离的物理机器。如此,在一些实施方式中,可能希望支持与管理程序136相关联的未图示的虚拟局域网(LAN)适配器,以允许逻辑分区134经由网络协议相互通信。在另一实施例中,虚拟网络适配器可以桥接到物理适配器,诸如网络接口单元114。还可以支持与本发明实施例一致的支持分区134之间通信的其他方式。
[0026]尽管管理程序136和调度器138图示为在存储器102内,但是在其他实施例中,管理程序136和/或调度器138的全部或部分可以以固件或硬件实施。管理程序136和/或调度器138可以执行低级分区管理功能(诸如页面表管理),并且还可以执行更高级分区管理功能(诸如创建和删除分区134、并发I/O维护和分配处理器、存储器和其他硬件或程序资源到各种分区134/从各种分区134解除分配处理器、存储器和其他硬件或程序资源)。管理程序136和/或调度器138控制共享资源到分区134的分配和通过分区134对共享资源的访问,确保节点计算机系统100中这些分区134的安全和隔离。管理程序136和/或调度器138将共享资源呈现给分区134作为独立资源,使得分区134相信它们是资源的唯一拥有者。在实施例中,共享资源具有用于执行请求的操作的受限能力。例如,协处理器仅具有受限队列深度用于执行操作。
[0027]管理程序136和/或调度器138静态地和/或动态地分配节点计算机系统100中的一部分可用资源到每个逻辑分区134。例如,每个逻辑分区134可以分配一个或多个处理器和/或在其上运行的一个或多个硬件线程,以及用于访问的一部分可用存储器空间。逻辑分区134可以共享特定程序和/或硬件资源(诸如处理器101 ),使得给定资源可以由多于一个逻辑分区134利用。在替代实施例中,程序和硬件资源可以每次仅分配到一个逻辑分区134。额外的资源(例如,大容量存储、备份存储、用户输入、网络连接和其I/O适配器)典型地分配到一个或多个逻辑分区134。资源可以以多种方式分配,例如基于逐条总线或基于逐项资源,其中多个逻辑分区134共享同一总线上的资源。一些资源每次可以分配到多个逻辑分区134。在此标识的资源仅仅是示例,并且可以使用能够分配的任何合适资源。
[0028]在实施例中,分区134、管理程序136和/或调度器138包括在处理器101上运行的指令或由在处理器101上运行的指令解释的陈述,以便执行如下面参照图2、3和4进一步描述的功能。在另一实施例中,分区134、管理程序136和/或调度器138以微代码或固件实施。在另一实施例中,管理程序136和/或调度器138可以经由逻辑门、半导体器件、芯片、电路、电路卡和/或其他物理硬件设备以硬件实施。
[0029]存储器102进一步包括定时器172。定时器172可以初始化为指定起始值、阈值或时间段值,并且倒计数到零,在此时间定时器172中断调度器138。在另一实施例中,定时器172可以初始化为零,并且正计数到指定阈值或时间段值或无期限地直到重置定时器172。不管定时器172正计数还是倒计数,定时器172的当前值(当前计数或时间)可以由调度器138读取。定时器172的多种情况可以是不同时间事件,并且可以称为不同名称。尽管定时器172图示为包括在存储器102中的软件定时器,但是在另一实施例中,定时器172可以是硬件定时器。
[0030]存储器总线103提供数据通信路径或通信组织结构,用于在处理器101、存储器102和I/O总线接口单元105之间传送数据。多个节点可以连接到相同存储器总线103或通信组织结构。I/O总线接口单元105进一步耦合到系统I/O总线104,用于传送数据到各种I/O单元和从各种I/O单元接收数据。I/O总线接口单元105通过系统I/O总线104与多个I/O接口单元111、112、113和114(其也已知为I/O处理器(IOP)或I/O适配器(IOA))通信。
[0031]I/O接口单兀支持与多种存储和I/O设备通彳目。例如,终纟而接口单兀111支持附加一个或多个用户I/o设备,其可以包括用户输出设备(诸如视频显示设备、投影仪、扬声器和/或电视机)和用户输入设备(诸如相机、键盘、鼠标、按键、触摸板、轨迹球、按钮、射频识别标签、光笔、手指、触笔或其他指点设备)。用户可以使用用户界面操作用户输入设备,以便提供输入数据和命令到用户I/O设备121和节点计算机系统100,并且可以经由用户输出设备接收输出数据。例如,用户界面可以经由用户输出设备成像,诸如在显示设备上显示。用户I/o设备121可以是任何尺寸,并且可以容纳多个用户同时或协作地观看和触摸显示设备,并且在实施例中,任何用户可以触摸显示设备上的任何位置。
[0032]存储接口单元112支持附加一个或多个盘驱动器或直接存取存储设备125 (其典型地旋转磁盘驱动存储设备,尽管它们可以可替代地是其他存储设备,包括配置为对于主机计算机表现为单个大存储设备的盘驱动器的阵列)。在另一实施例中,存储设备125可以经由任何类型的次级存储设备实施。存储器102的内容或其任何部分可以根据需要存储到存储设备125和从存储设备125检索。I/O设备接口单元113提供到任何各种其他输入/输出设备或其他类型的设备的接口,诸如打印机或传真机。网络接口单元114提供从节点计算机系统100到其他数字设备和计算机系统132的一个或多个通信路径;这种路径可以包括例如一个或多个网络130。
[0033]尽管存储器总线103在图1中示出为相对简单的、提供处理器101、存储器102和I/o总线接口单元105之间的直接通信路径的单总线结构,但是实际上存储器总线103可以包括多个不同总线或通信路径,其可以以各种形式的任何安排,诸如分层结构中的点对点连接、形状或web配置、多个分层结构总线、并行和冗余路径、或任何其他适合类型的配置。此外,尽管I/O总线接口单元105和I/O总线104示出为单个个别单元,但是节点计算机系统100实际上可以包含多个I/O总线接口单元105和/或多个I/O总线104。尽管示出多个I/O接口单元,其将系统I/O总线与运行到各种I/O设备的各种通信路径分离,但是在其他实施例中,一些或所有I/O设备直接连接到一个或多个系统I/O总线。
[0034]在各种实施例中,节点计算机系统100是多用户大型计算机系统、单用户系统或具有小的或没有直接用户接口但是用其他计算机系统(客户端)接收请求的服务器计算机或类似设备。在其他实施例中,节点计算机系统100实施为桌面计算机、便携式计算机、膝上或笔记本计算机、平板计算机、袖珍计算机、电话、智能电话、寻呼机、汽车、电话会议系统、家电或任何其他合适类型的电子设备。
[0035]网络130可以是任何合适的总线、网络或网络的组合,并且可以支持适于数据和/或代码来往节点计算机系统100和计算机系统132的通信的任何适当的协议。在各种实施例中,网络130可以代表直接或间接连接到节点计算机系统100的存储设备或存储设备的组合。在另一实施例中,网络130可以支持硬布线通信,诸如电话线或电缆。在另一实施例中,网络130可以是因特网,并且可以支持IP (因特网协议)。在另一实施例中,网络130实施为局域网(LAN)或广域网(WAN)。在另一实施例中,网络130实施为热点服务提供者网络。在另一实施例中,网络130实施为内联网。在另一实施例中,网络130实施为任何适当的蜂窝数据网络、基于单元的无线电网络计数或无线网络。在另一实施例中,网络130实施为任何合适的总线、总线的组合、网络、网络的组合、或网络和总线的组合。尽管示出了一个网络130,但是在其他实施例中,可以存在任何数目的(相同或不同类型的)网络。
[0036]计算机系统132可以包括一些或全部节点计算机系统100的硬件和/或计算机程序元件。
[0037]图1旨在描述节点计算机系统100、网络130和计算机系统132的代表性主要组件。但是,个别组件可以具有比图1中呈现的更大的复杂度,可以存在与图1中示出那些不同或此外的组件,并且这种组件的数目、类型和配置可以变化。在此公开了这种额外的复杂度或额外变化的若干特定示例;这些仅仅是示例并且不必定仅仅是这样的变化。图1中图示并且实施本发明的各种实施例的各种程序组件可以以多种方式实施,包括使用各种计算机应用、例程、组件、程序、对象、模块、数据结构登,并且在下文中称为“计算机程序”或简称为“程序”。
[0038]计算机程序包括一个或多个指令或陈述,其多次驻留在节点计算机系统100的各种存储器和存储设备,并且当由节点计算机系统100中的一个或多个处理器读取和运行时,或者当通过由一个或多个处理器运行的指令解释时,使得节点计算机系统100执行需要的动作,以便执行包括本发明实施例的各个方面的步骤或元素。本发明实施例的各方面可以体现为为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0039]可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限于一电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0040]计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0041]计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括一但不限于一无线、有线、光缆、RF等等,或者上述的任意合适的组合。
[0042]可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言一诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0043]下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0044]也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)0
[0045]限定本发明各个实施例的功能的计算机程序可以经由多种有形计算机可读存储介质传送到计算机系统,该有形计算机可读存储介质可以操作地或通信地(直接或间接)连接到处理器或多个处理器。计算机程序指令还可以加载到计算机、其他可编程数据处理装置、或其他设备,以使得在计算机、其他可编程装置、或其他设备上执行一系列操作步骤,以便产生计算机实施的处理,使得在计算机或其他可编程装置上运行的指令提供用于实施在流程图和/或框图框或多个框中指定的功能/动作。
[0046]附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0047]本发明的实施例还可以用客户公司、非营利性组织、政府部门、或内部组织结构实现为一部分服务约定。这些实施例的各方面可以包括配置计算机系统执行并且部署计算机服务(例如,计算机可读代码、硬件和web服务),其实施在此描述的一些或全部方法。这些实施例的各方面还可以包括分析客户公司,创建响应于分析的推荐,生成计算机可读代码以实施推荐的各部分,将计算机可读代码集成到现有处理、计算机系统和计算基础设施中,计量在此描述的方法和系统的使用,分配费用给用户,并且为用户使用这些方法和系统向他们开账单。此外,下文中描述的各种程序可以基于它们在本发明的特定实施例中实施的应用来识别。但是,随后的任何特定程序术语仅仅为了方面而使用,因此本发明的实施例不限于仅在由这样的术语识别和/或暗示的任何特定应用中使用。图1中图示的示例性环境不旨在限制本发明。实际上,可以使用其他替代硬件和/或程序环境,而不背离本发明实施例的范围。
[0048]图2描绘根据本发明实施例的,经由存储器总线或通信组织结构103连接的节点
100-1、100-2、100-3和100-4的系统的高级框图。节点100-1、100-2、100-3和100-4是节点计算机系统100(图1)的示例,并且统称为节点计算机系统100。再次参照图2,节点100-1包括连接到物理处理器101-1的存储器102-1 ;节点100-2包括连接到物理处理器101-2的存储器102-2 ;节点100-3包括连接到物理处理器101-3的存储器102-3 ;并且节点100-4包括连接到物理处理器101-4的存储器102-4。存储器102-1、102-2、102-3和102-4是存储器102 (图1)的示例,并且统称为存储器102。再次参照图2,物理处理器101-1、101-2、
101-3和101-4是处理器101(图1)的示例,并且统称为处理器101。存储器102-1包括虚拟处理器146-1 ;存储器102-2包括虚拟处理器146-2 ;存储器102-3包括虚拟处理器146-3 ;以及存储器102-4包括虚拟处理器146-4。虚拟处理器146-1、146-2、146-3和146-4是虚拟处理器146 (图1)的示例,并且统称为虚拟处理器146。
[0049]再次参照图2,调度器138可以调度任何虚拟处理器146-1、146-2、146-3和146_4到任何物理处理器101-1、101-2、101-3和101-4。调度器138为每个虚拟处理器分配家节点(家亲和性域)。在各种实施例中,调度器138可以调度虚拟处理器到处于虚拟处理器的家节点的物理处理器,或到任何其他节点。例如,在各种实施例中,调度器138可以为虚拟处理器146-1分配节点100-1、节点100-2、节点100-3或节点100-4的家节点。
[0050]图3和4描绘根据本发明的实施例,用于调度虚拟处理器的示例处理的流程图。控制在块300开始。控制然后继续到块305,其中调度器138分配家节点给虚拟处理器,并且分配授权能力给分区134。
[0051]控制然后继续到块310,其中第一分区134发送请求到调度器138,其请求在分配到第一分区134的第一虚拟处理器上运行。在实施例中,请求是请求在虚拟处理器上运行分区134或分区134的一部分(诸如应用、方法、功能、例程、子例程、过程、子过程或一组指令或陈述)的请求。
[0052]控制然后继续到块315,其中调度器138确定第一节点上的第一物理处理器是否可用(空闲,或当前没有运行其他请求),第一节点是第一虚拟处理器的家节点。如果在块315的确定为真,那么第一节点上的第一物理处理器可用(空闲,或当前没有运行其他请求),第一节点是第一虚拟处理器的家节点,所以控制继续到块320,其中调度器134记录第一虚拟处理器为消耗(使用)位于第一虚拟处理器的家节点的第一物理处理器。控制然后继续到块325,其中调度器138调度(发送)请求到第一节点(第一虚拟处理器的家节点)。家节点接收该请求,并且响应于该请求在第一物理处理器上运行。响应于请求运行完成,调度器138移除第一虚拟处理器消耗家节点第一物理处理器的存储记录。控制然后返回到块310,其中相同或不同分区发送相同或不同请求到调度器138,请求在分配到该分区134的虚拟处理器上运行,如上所述。
[0053]如果在块315的确定为假,那么在第一节点(第一虚拟处理器的家节点)的第一物理处理器不可用,因为第一物理处理器正忙于运行第二虚拟处理器,所以控制继续到块327,其中调度器138确定第一虚拟处理器的运行是否将消耗第一虚拟处理器的分区134的授权能力。也就是说,调度器138确定由要在第一虚拟处理器上运行的请求所请求的处理器周期或时间量是否小于或等于第一虚拟处理器的分区134的授权能力。如果在块327的确定为真,那么第一虚拟处理器的运行(当分配到物理处理器时)消耗第一虚拟处理器的分区134的授权能力,所以控制继续到块330,其中调度器138确定第一节点(第一虚拟处理器的家节点)的第一物理处理器是否分配给第二虚拟处理器,并且第二虚拟处理器的家节点不是第一节点(第一虚拟处理器的家节点和第二虚拟处理器的家节点是不同节点)。
[0054]如果在块330的确定为真,那么第一节点(第一虚拟处理器的家节点)的第一物理处理器分配到第二虚拟处理器,并且第二虚拟处理器的家节点不是第一节点,所以控制继续到块335,其中调度器138确定分配到第二分区134的第二虚拟处理器是否消耗第二分区134的过量能力(不是授权能力)。也就是说,调度器138确定分配到第二虚拟处理器的处理器周期或时间量是否大于分配到第二虚拟处理器的第二分区134的授权物理处理器能力。
[0055]如果在块335的确定为真,那么分配到第二分区134的第二虚拟处理器消耗第二分区134的过量能力(不是授权能力),所以控制继续到块340,其中调度器138停止在第一节点的第一物理处理器上运行第二虚拟处理器,并且在第二虚拟处理器正在运行的请求的运行完成之前移除第二虚拟处理器的记录。控制然后继续到块320,如上所述。
[0056]如果在块335的确定为假,那么分配到第二分区134的第二虚拟处理器消耗第二虚拟处理器的第二分区134的授权能力(不是过量能力),并且分配到第二虚拟处理器的物理处理器周期或处理器时间的量小于或等于分配到第二虚拟处理器的第二分区134的授权物理处理器能力,所以控制继续到图4的块405,如下面进一步描述的。
[0057]如果在块330的确定为假,那么第一节点(第一虚拟处理器的家节点)处的第一物理处理器分配到第二虚拟处理器,并且第二虚拟处理器的家节点是第一节点(第一虚拟处理器和第二虚拟处理器具有相同的家节点),所以控制继续到图4的块405,如下面进一步描述的。[0058]如果在块327的确定为假,那么通过第一虚拟处理器的请求的运行将消耗过量处理器能力(调度该请求到第一虚拟处理器将使用大于第一虚拟处理器的第一分区134的授权处理器能力),并且由该请求所请求的物理处理器周期或处理器时间的量大于分配到第一虚拟处理器的第一分区134的授权处理器能力,所以控制继续到图4的块405,其中调度器138记录(保存记录到存储器102)第一虚拟处理器为消耗(运行在)家外节点物理处理器(不是第一虚拟处理器的家节点处的物理处理器)。控制然后继续到块410,其中调度器138调度第一虚拟处理器到处于第二节点的第二物理处理器(其是可用的),第二节点是第一虚拟处理器的家外节点(不是家节点)。也就是说,调度器138开始在第一虚拟处理器上运行请求,其代表(由于调度)在第二物理处理器上时间片或处理器周期的数目。控制然后继续到块415,其中调度器138设置定时器172在时间段过去之后终止。控制然后继续到块420,其中请求在第二节点处的第二物理处理器上运行,直到请求完成或者直到定时器172的时间段过去、结束或终止,无论哪个首先出现。
[0059]控制然后继续到块425,其中调度器138确定请求已经完成还是定时器172中设置的时间段已经过去或结束。如果在块425的确定确定请求已经完成,那么控制继续到块440,其中调度器138移除(删除)第一虚拟处理器消耗家外节点(非家节点)物理处理器的记录。控制然后返回到图3的块310,其中相同或不同分区134发送相同或不同请求到调度器138,请求在分配到该分区134的虚拟处理器上运行。
[0060]如果在块425的确定确定在定时器172中设置的时间段已经过去或结束,那么控制继续到块430,其中调度器138确定是否在第一节点(第一虚拟处理器的家节点)处的第三物理处理器可用(当前没有运行其他请求或当前没有分配到另一虚拟处理器)。如果在块430的确定为真,那么在第一节点(第一虚拟处理器的家节点)处的第三物理处理器可用(当前没有运行其他请求或当前没有分配到另一虚拟处理器),所以控制继续到块435,其中调度器138记录第一虚拟处理器为消耗第一虚拟处理器的家节点处的第三物理处理器。在各种实施例中,第三物理处理器是与第一物理处理器相同或不同的物理处理器。调度器138调度第一虚拟处理器到第一节点,其是第一虚拟处理器的家节点。请求在第三虚拟处理器上运行并且完成,其导致调度器138移除第一虚拟处理器消耗家节点物理处理器的记录。控制然后返回到图3的块310,其中相同或不同分区134发送相同或不同请求到调度器138,请求在分配到该分区134的虚拟处理器上运行,如上所述。
[0061]如果在块430的确定为假,那么第三物理处理器在第一节点(第一虚拟处理器的家节点)处不可用,因为第一节点处的所有物理处理器当前正运行其他请求或分配到其他虚拟处理器,所以控制返回到块415,其中调度器设置定时器在另一时间段过去之后终止,如上所述。以此方式,调度器138周期性地监控第一虚拟处理器的家节点处物理处理器的状态,并且响应于家节点处的物理处理器变为可用,重新调度第一虚拟处理器到第一虚拟处理器的家节点处的物理处理器。
[0062]以此方式,在实施例中,改进虚拟处理器的性能。
[0063]术语“第一”、“第二”和“第三”在此为了便于阐述和说明而用于标识不同请求、分区和节点。在一个实施例中操作为第一请求的请求可以在另一实施例中可以操作为第二或第三请求,反之亦然。此外,在一个实施例中操作为第一分区的分区134在另一实施例中可以操作为第二或第三分区,反之亦然。此外,在一个实施例中操作为第一节点的节点在另一实施例中可以操作为第二或第三节点,反之亦然。此外,用作一个虚拟处理器的家节点的节点可以用作该虚拟处理器或另一虚拟处理器的非家节点,并且同时或不同时可以用作另一虚拟处理器的家节点。
[0064]在此使用的术语仅是为了描述具体实施例,并不意图限制本发明。如在此使用的,单数形式“一”、“一个”和“该”也意图包括复数形式,除非上下文清楚地另有指示。将进一步理解,当在本说明书中使用时,术语“包括”、“包含”和/或“含有”指示所述特征、整数、布置、操作、元件和/或组件,但不排除一个或多个其他特征、整数、布置、操作、元件、组件和/或其组的存在或添加。在本发明的示例性实施例的之前详细描述中,参照形成本发明一部分的附图(其中相同标号表示相同元件),并且其中通过可以实践本发明的特定示例性实施例的说明的方式示出。这些实施例足够详细地描述,以便使得本领域的技术人员能够实践本发明,但是可以利用其他实施例,并且可以进行逻辑的、机械的、电子的和其他改变而不背离本发明的范围。在之前的描述中,阐述了多个具体细节以便提供本发明实施例的贯穿理解。但是,可以在没有这些具体细节的情况下实践本发明的实施例。在其他情况下,没有详细示出公知的电路、结构和技术,以便不使本发明的实施例模糊。
[0065]如在本说明书中使用的词语“实施例”的不同情况不必指相同的实施例,但是它们可以相同。在此说明或描述的任何数据和数据结构仅仅是示例,并且在其他实施例中,可以使用不同数据量、数据类型、字段、字段量和类型、字段名称、行的数目和类型、记录、实体或数据组织结构。此外,任何数据可以与逻辑组合,使得独立的数据结构不是必须的。因此,之前的详细描述没有限制的意味。
【权利要求】
1.一种方法,包括: 接收对于第一分区的请求以在第一虚拟处理器上运行; 确定在第一节点处第一物理处理器是否可用,其中所述第一节点是所述第一虚拟处理器的家节点; 如果在所述第一节点处所述第一物理处理器可用,则将所述第一虚拟处理器调度到作为所述第一虚拟处理器的家节点的所述第一节点处的所述第一物理处理器,其中将所述第一虚拟处理器调度到所述第一节点处的物理处理器进一步包括在所述第一节点处的所述第一物理处理器上运行所述请求; 如果在所述第一节点处所述第一物理处理器不可用,则确定所述第一节点处的所述第一物理处理器是否分配到第二虚拟处理器,并且所述第二虚拟处理器的家节点不是所述第一节点;以及 如果所述第一节点处的所述第一物理处理器分配到第二虚拟处理器,并且所述第二虚拟处理器的家节点不是所述第一节点,则停止在所述第一节点处的所述第一物理处理器上运行所述第二虚拟处理器,并且将所述第一虚拟处理器调度到所述第一节点处的所述第一物理处理器。
2.如权利要求1所述的方法,还包括: 分配所述家节点到所述第一虚拟处理器,其中分配所述家节点到所述第一虚拟处理器进一步包括从多个节点中选择所 述家节点。
3.如权利要求1所述的方法,还包括: 分配第一授权处理器能力到所述第一分区。
4.如权利要求3所述的方法,还包括: 如果在所述第一节点处所述第一物理处理器不可用,则确定所述第一虚拟处理器是否消耗所述第一分区的所述第一授权处理器能力;并且 如果所述第一虚拟处理器没有消耗所述第一分区的所述第一授权处理器能力,则将所述第一虚拟处理器调度到第二节点处的第二物理处理器,其中所述第二节点不是所述第一虚拟处理器的家节点。
5.如权利要求4所述的方法,还包括: 在自从所述第一虚拟处理器调度到不是所述第一虚拟处理器的家节点的所述第二节点处的所述第二物理处理器且所述请求没有完成运行以来,一时间段终止之后,确定在所述第一虚拟处理器的家节点处第三物理处理器是否可用;并且 如果在所述第一虚拟处理器的家节点处所述第三物理处理器可用,则将所述第一虚拟处理器调度到所述家节点。
6.如权利要求3所述的方法,还包括: 分配第二授权处理器能力到第二分区,其中分配第二授权处理器能力到第二分区进一步包括分配所述第二分区确保接收的第二授权处理器能力到所述第二分区,并且其中所述第二分区的过量处理器能力包括所述第二分区不确保接收的过量处理器能力。
7.如权利要求6所述的方法,还包括: 如果在所述第一节点处所述第一物理处理器不可用,并且所述第一虚拟处理器消耗所述第一分区的所述第一授权处理器能力,并且所述第一节点处的所述第一物理处理器分配到所述第二虚拟处理器,并且所述第二虚拟处理器的家节点不是所述第一节点,并且所述第二虚拟处理器消耗所述第二分区的过量处理器能力,则停止在所述第一节点处的所述第一物理处理器上运行所述第二虚拟处理器,并且将所述第一虚拟处理器调度到所述第一节点处的所述第一物理处理器。
8.如权利要求7所述的方法,还包括: 如果在所述第一节点处所述第一物理处理器不可用,并且所述第一虚拟处理器消耗所述第一分区的所述第一授权处理器能力,并且所述第一节点处的所述第一物理处理器分配到所述第二虚拟处理器,并且所述第二虚拟处理器的家节点不是所述第一节点,并且所述第二虚拟处理器不消耗所述第二分区的过量处理器能力,则将所述第一虚拟处理器调度到第二节点处的第二物理处理器,其中所述第二节点不是所述第一虚拟处理器的家节点。
9.一种装置,包括: 配置为分配家节点到第一虚拟处理器的模块,其中分配所述家节点到所述第一虚拟处理器进一步包括从多个节点中选择所述家节点; 配置为分配第一授权处理器能力到第一分区的模块; 配置为接收对于第一分区的请求以在第一虚拟处理器上运行的模块; 配置为确定在第一节点处第一物理处理器是否可用的模块,其中所述第一节点是所述第一虚拟处理器的家节点; 配置为如果在所述第一节点处所述第一物理处理器可用,则将所述第一虚拟处理器调度到作为所述第一虚拟处理器的家节点的所述第一节点处的所述第一物理处理器的模块,其中将所述第一虚拟处理器调度到所述第一节点处的物理处理器进一步包括在所述第一节点处的所述第一物理处理器上运行所述请求; 配置为如果在所述第一节点处所述第一物理处理器不可用,则确定所述第一节点处的所述第一物理处理器是否分配到第二虚拟处理器,并且所述第二虚拟处理器的家节点不是所述第一节点的模块;以及 配置为如果所述第一节点处的所述第一物理处理器分配到第二虚拟处理器,并且所述第二虚拟处理器的家节点不是所述第一节点,则停止在所述第一节点处的所述第一物理处理器上运行所述第二虚拟处理器,并且将所述第一虚拟处理器调度到所述第一节点处的所述第一物理处理器的模块。
10.如权利要求9所述的装置,还包括: 配置为如果在所述第一节点处所述第一物理处理器不可用,则确定所述第一虚拟处理器是否消耗所述第一分区的所述第一授权处理器能力的模块;以及 配置为如果所述第一虚拟处理器没有消耗所述第一分区的所述第一授权处理器能力,则将所述第一虚拟处理器调度到第二节点处的第二物理处理器的模块,其中所述第二节点不是所述第一虚拟处理器的家节点。
11.如权利要求10所述的装置,还包括: 配置为在自从所述第一虚拟处理器调度到不是所述第一虚拟处理器的家节点的所述第二节点处的所述第二物理处理器且所述请求没有完成运行以来,一时间段终止之后,确定在所述第一虚拟处理器的家节点处第三物理处理器是否可用的模块;以及 配置为如果在所述第一虚拟处理器的家节点处所述第三物理处理器可用,则将所述第一虚拟处理器调度到所述家节点的模块。
12.如权利要求10所述的装置,还包括: 配置为分配第二授权处理器能力到第二分区的模块,其中分配第二授权处理器能力到第二分区进一步包括分配所述第二分区确保接收的第二授权处理器能力到所述第二分区,并且其中所述第二分区的过量处理器能力包括所述第二分区不确保接收的过量处理器能力。
13.如权利要求12所述的装置,还包括: 配置为如果在所述第一节点处所述第一物理处理器不可用,并且所述第一虚拟处理器消耗所述第一分区的所述第一授权处理器能力,并且所述第一节点处的所述第一物理处理器分配到所述第二虚拟处理器,并且所述第二虚拟处理器的家节点不是所述第一节点,并且所述第二虚拟处理器消耗所述第二分区的过量处理器能力,则停止在所述第一节点处的所述第一物理处理器上运行所述第二虚拟处理器,并且将所述第一虚拟处理器调度到所述第一节点处的所述第一物理处理器的模块。
14.如权利要求13所述的装置,还包括: 配置为如果在所述第一节点处所述第一物理处理器不可用,并且所述第一虚拟处理器消耗所述第一分区的所述第一授权处理器能力,并且所述第一节点处的所述第一物理处理器分配到所述第 二虚拟处理器,并且所述第二虚拟处理器的家节点不是所述第一节点,并且所述第二虚拟处理器不消耗所述第二分区的过量处理器能力,则将所述第一虚拟处理器调度到第二节点处的第二物理处理器的模块,其中所述第二节点不是所述第一虚拟处理器的家节点。
15.—种计算机,包括: 处理器;以及 通信地耦合到所述处理器的存储器,其中所述处理器用指令编码,其中当由所述处理器运行时,所述指令包括 分配家节点到第一虚拟处理器,其中分配所述家节点到所述第一虚拟处理器进一步包括从多个节点中选择所述家节点; 分配第一授权处理器能力到第一分区; 接收对于第一分区的请求以在第一虚拟处理器上运行; 确定在第一节点处第一物理处理器是否可用,其中所述第一节点是所述第一虚拟处理器的家节点; 如果在所述第一节点处所述第一物理处理器可用,则将所述第一虚拟处理器调度到作为所述第一虚拟处理器的家节点的所述第一节点处的所述第一物理处理器,其中将所述第一虚拟处理器调度到所述第一节点处的物理处理器进一步包括在所述第一节点处的所述第一物理处理器上运行所述请求; 如果在所述第一节点处所述第一物理处理器不可用,则确定所述第一节点处的所述第一物理处理器是否分配到第二虚拟处理器,并且所述第二虚拟处理器的家节点不是所述第一节点;以及 如果所述第一节点处的所述第一物理处理器分配到第二虚拟处理器,并且所述第二虚拟处理器的家节点不是所述第一节点,则停止在所述第一节点处的所述第一物理处理器上运行所述第二虚拟处理器,并且将所述第一虚拟处理器调度到所述第一节点处的所述第一物理处理器。
16.如权利要求15所述的计算机,其中所述指令还包括: 如果在所述第一节点处所述第一物理处理器不可用,则确定所述第一虚拟处理器是否消耗所述第一分区的所述第一授权处理器能力;以及 如果所述第一虚拟处理器没有消耗所述第一分区的所述第一授权处理器能力,则将所述第一虚拟处理器调度到第二节点处的第二物理处理器,其中所述第二节点不是所述第一虚拟处理器的家节点。
17.如权利要求16所述的计算机,其中所述指令还包括: 在自从所述第一虚拟处理器调度到不是所述第一虚拟处理器的家节点的所述第二节点处的所述第二物理处理器且所述请求没有完成运行以来,一时间段终止之后,确定在所述第一虚拟处理器的家节点处第三物理处理器是否可用;以及 如果在所述第一虚拟处理器的家节点处所述第三物理处理器可用,则将所述第一虚拟处理器调度到所述家节点。
18.如权利要求16所述的计算机,其中所述指令还包括: 分配第二授权处理器能力到第二分区,其中分配第二授权处理器能力到第二分区进一步包括分配所述第二分区确保接收的第二授权处理器能力到所述第二分区,并且其中所述第二分区的过量处理器能力包括所述第二分区不确保接收的过量处理器能力。
19.如权利要求18所述的计算机,其中所述指令还包括: 如果在所述第一节点处所述`第一物理处理器不可用,并且所述第一虚拟处理器消耗所述第一分区的所述第一授权处理器能力,并且所述第一节点处的所述第一物理处理器分配到所述第二虚拟处理器,并且所述第二虚拟处理器的家节点不是所述第一节点,并且所述第二虚拟处理器消耗所述第二分区的过量处理器能力,则停止在所述第一节点处的所述第一物理处理器上运行所述第二虚拟处理器,并且将所述第一虚拟处理器调度到所述第一节点处的所述第一物理处理器。
20.如权利要求19所述的计算机,其中所述指令还包括: 如果在所述第一节点处所述第一物理处理器不可用,并且所述第一虚拟处理器消耗所述第一分区的所述第一授权处理器能力,并且所述第一节点处的所述第一物理处理器分配到所述第二虚拟处理器,并且所述第二虚拟处理器的家节点不是所述第一节点,并且所述第二虚拟处理器不消耗所述第二分区的过量处理器能力,则将所述第一虚拟处理器调度到第二节点处的第二物理处理器,其中所述第二节点不是所述第一虚拟处理器的家节点。
【文档编号】G06F9/455GK103778017SQ201310492055
【公开日】2014年5月7日 申请日期:2013年10月18日 优先权日:2012年10月19日
【发明者】S.Z.雅各布斯, D.A.拉森, N.纳亚尔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1