CN101131654A - 用于分发分派窗内的未使用的处理器循环的方法和系统 - Google Patents
用于分发分派窗内的未使用的处理器循环的方法和系统 Download PDFInfo
- Publication number
- CN101131654A CN101131654A CNA2007101383646A CN200710138364A CN101131654A CN 101131654 A CN101131654 A CN 101131654A CN A2007101383646 A CNA2007101383646 A CN A2007101383646A CN 200710138364 A CN200710138364 A CN 200710138364A CN 101131654 A CN101131654 A CN 101131654A
- Authority
- CN
- China
- Prior art keywords
- bind
- subregion
- tabulation
- subregions
- dispatch window
- 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 78
- 238000005192 partition Methods 0.000 claims abstract description 142
- 230000008569 process Effects 0.000 claims abstract description 45
- 230000004044 response Effects 0.000 claims abstract description 12
- 230000004087 circulation Effects 0.000 claims description 68
- 238000004422 calculation algorithm Methods 0.000 claims description 24
- 238000012545 processing Methods 0.000 claims description 16
- 230000005055 memory storage Effects 0.000 claims description 6
- 230000015572 biosynthetic process Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 10
- 238000002360 preparation method Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 102000004137 Lysophosphatidic Acid Receptors Human genes 0.000 description 1
- 108090000642 Lysophosphatidic Acid Receptors Proteins 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 238000007616 round robin method Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000000930 thermomechanical effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000011282 treatment Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Abstract
提供了用于管理处理器循环的系统。响应于在分派窗中存在的未使用的处理器循环,识别准备运行的未封顶的分区的集合。基于使用率历史,从所识别的分区的集合中识别多个候选分区,其中,在预定义的数目的先前的分派窗中,每个所识别的分区使用其权利的至少100%。随后,基于候选分区的抽彩过程,而从所述多个候选分区中选择分区。
Description
技术领域
本发明一般涉及改进的数据处理系统。更具体地,本发明针对于用来动态地分发分派窗内的未使用的处理器循环的计算机实现的方法、系统和计算机可用程序代码。
背景技术
典型地,现代的计算机系统包括中央处理单元(CPU)、以及存储、检索和传送信息所需的诸如通信总线和存储器的支持硬件。其还包括例如与外部世界通信所需的硬件,如输入/输出控制器或存储控制器、以及附接到其的装置,如键盘、监视器、带驱动器、盘驱动器、以及耦接到网络的通信线路。CPU是计算机系统的心脏。CPU执行包括计算机程序的指令,并指挥其它计算机系统组件的操作。
基本上,大多数计算机系统以相同的方式操作,这是因为CPU仅能够执行有限的非常简单的操作集合,如算术、逻辑比较、以及从一个位置到另一个位置的数据移动。程序可指挥CPU执行大量的这些简单的操作,但是,必须非常快地执行每个操作。因此,计算机系统的改进需要使这些系统不断变得更快。
可按照每单位时间执行的操作的数目而测定计算机系统的总体速度(也被称为吞吐量)。在不改变计算机系统的时钟速度的情况下,有可能通过使用特定计算机组件的多个复制物(并且,具体地,通过使用多个处理器),而改善吞吐量。在集成电路芯片上封装的各个处理器和其它组件的适当的适度(modest)成本使这成为可行。结果,很多当前的大规模计算机系统设计包括多个处理器、高速缓存、总线、I/O驱动器、存储装置等。
响应于增大的系统复杂度的一种近来的发展为:大计算机系统的各种资源的逻辑分区。逻辑分区(LPAR)是计算机系统的处理器、存储器、以及其它资源的逻辑分割,其允许逻辑分区运行其自身的操作系统副本和关联的应用。理论上,逻辑分区意味着:在计算机系统内建立多个分立的分区,并且,将计算机系统的资源分配给各个分区。在逻辑分区内执行每个操作,其意味着:该操作仅可使用被分配给该分区的资源,而不可使用被分配给其它分区的任何资源。在计算机系统内的逻辑分区的这样的创建被称为“虚拟环境”。
通常,通过系统管理员或具有类似权限的用户来创建逻辑分区。通过向在计算机系统上驻留的适当的管理软件发出命令、而不是对硬件组件的物理上的重新配置,而执行分区的创建。预计到、并且事实上,逻辑分区的一个好处在于,系统管理员可响应于改变的需要、或对计算机系统的性能的更好的理解,而重新分配系统资源。
目前,分区是专用处理器分区、或共享处理器分区。使用计算机系统内的专用处理器分区方案的系统管理员将一个完整的处理器的多个增量(increment)中的处理器分配给分区。使用共享处理器分区方案的系统管理员将一个完整的处理器的一个增量、或“片(slice)”分配给分区,其被称为微分区。
存在两种类型的微分区,即,“封顶的(capped)”和“未封顶的(uncapped)”。不允许封顶的分区超过其时间权利(time entitlement),而允许未封顶的分区超过其时间权利。时间权利是系统管理员分配给具体分区的给定数目的处理单元、或CPU循环。封顶的分区指示:分区将不会超过其被分配的处理容量。如果系统管理员知道操作将永远不会需要比特定量的处理容量更多的处理容量,则系统管理员可使用封顶的分区。
在虚拟环境中,确保分区完全使用在分派窗(dispatch window)内分区的时间权利,例如,其可为10毫秒(ms)。分派窗定义了允许开始操作的周期。将分派窗的任意未使用的部分重新分发给计算机系统内的未封顶的分区。当前的重新分发方法在某种程度上是随机的,这是因为计算机系统使用标准的抽彩调度策略(lottery scheduling policy)。伴随此标准的抽彩调度重新分发方法的问题在于,其未给出对最繁忙的未封顶的分区的优先处理。
仅在分区具有要做的工作时才分派分区。将分区置于队列中,直到分派了该分区为止。该队列仅包含准备运行的分区、或等待中断的分区。
标准的抽彩调度重新分发方法基于与未封顶的分区相关联的预定义的静态权重。系统管理员在创建分区时分配分区的权重。例如,分区的权重可介于0和127之间。分区的权重越高,则越有可能对该分区赋予未使用的CPU循环。但是,基于分区权重的标准的抽彩调度未考虑分区中的可能的循环负载行为、或分区的过去使用率(usage)历史。处理此循环负载性能(behavior)的一种方法在于,当负载很高时,增大与该分区相关联的权重。然而,该权重是静态的、在分区创建时刻被设置,并且,在一些虚拟环境中,改变权重的仅有方式为停止并重启分区。另外,通过增大分区的权重,即使该分区的近来的历史可能示出该分区不是非常繁忙,分区也会保持被分派的较高的机会。
用于照顾最繁忙的未封顶的分区的另一种可能方法在于,使用负载平衡器。然而,此负载平衡器方法涉及较高的处理器开销,且为CPU密集型。并且,在固件的顶层使用负载平衡应用来为分区分配优先级可能涉及工作和资源的复制。
因此,具有这样的计算机实现的方法、系统、以及计算机可用程序代码将会是有利的,所述计算机实现的方法、系统、以及计算机可用程序代码用于:当分区在贯穿某天的不同时间经历高负载时,将分派窗内的未使用的处理器循环动态地分发给最繁忙的未封顶的分区,由此,避免较不繁忙的分区的分派。
发明内容
说明性的实施例提供了用于管理处理器循环的计算机实现的方法、系统、以及计算机可用程序代码。响应于在分派窗中存在的未使用的处理器循环,识别准备运行的未封顶的分区的集合。随后,基于使用率历史,从所识别的未封顶的分区的集合中识别多个候选分区,其中,在预定义的数目的先前的分派窗中,每个所识别的分区使用其权利的至少100%。最后,基于候选分区的抽彩过程,而从多个候选分区中选择分区。
附图说明
在所附权利要求中阐述了本发明的相信会具有的新颖特征。然而,在结合附图阅读时,通过参照以下对说明性实施例的详细描述,本发明自身、以及优选使用模式、其进一步的目的和优点将会被最好地理解,附图中:
图1是可实现说明性实施例的数据处理系统的图示表示;
图2是可实现说明性实施例的数据处理系统的框图;
图3是根据说明性实施例的逻辑分区的计算机的框图;
图4是根据说明性实施例的计算机内的所有封顶的和未封顶的微分区、连同其相应权利的示例列表;
图5是根据说明性实施例的具有未使用的处理器循环的分派窗的示例图解;
图6是根据说明性实施例的具有未使用的处理器循环的分派窗的另一个示例图解;
图7是根据说明性实施例的逻辑分区的计算机内的所有未封顶的微分区的示例列表;
图8是根据说明性实施例的分派窗内的准备运行的未封顶的微分区的示例列表;
图9是根据说明性实施例的所有未封顶的微分区的示例权利历史表;
图10是根据说明性实施例的示例候选列表;
图11是图解根据说明性实施例的用于动态地分发分派窗内的未使用的处理器循环的示例过程的流程图;以及
图12是根据说明性实施例的用于动态地分发未使用的处理器循环的示例算法。
具体实施方式
现在,参照附图,并且,尤其是参照图1,其示出了可实现说明性实施例的数据处理系统的图示表示。计算机100包括系统单元102、视频显示终端104、键盘106、存储装置108(其可包括软盘驱动器、以及其它类型的永久和可拆卸存储介质)、以及鼠标110。附加的输入装置可随个人计算机100一起被包括。附加的输入装置的例子包括游戏杆、触摸板、触摸屏、轨迹球、麦克风等。
计算机100可为任意适用的计算机,如作为位于纽约阿芒克(Armonk)的国际商用机器公司的产品的IBMeServerTM计算机、或IntelliStation计算机。尽管所绘出的图示示出了个人计算机,但可在其它类型的数据处理系统中实现其它实施例。例如,可在网络计算机中实现其它实施例。优选地,计算机100还可包括图形用户界面(GUI),其可通过驻留在计算机100内、在操作中的计算机可读介质中的系统软件来的方法实现。
接下来,图2绘出了可实现说明性实施例的数据处理系统的框图。数据处理系统200是计算机的例子,如图1中的计算机100,其中,可设置实现说明性实施例的过程的代码或指令。
在所绘出的例子中,数据处理系统200采用集线器(hub)架构,其包括北桥和存储器控制器集线器(MCH)202、以及南桥和输入/输出(I/O)控制器集线器(ICH)204。将处理器206、主存储器208、以及图形处理器210耦接到北桥和存储器控制器集线器202。例如,图形处理器210可通过加速图形端口(AGP)而被耦接到MCH。
在绘出的例子中,局域网(LAN)适配器212耦接到南桥和I/O控制器集线器204、音频适配器216、键盘和鼠标适配器220、调制解调器222、只读存储器(ROM)224、通用串行总线(USB)端口和其它通信端口232。PCI/PCIe装置234通过总线238耦接到南桥和I/O控制器集线器204。硬盘驱动器(HDD)226和CD-ROM驱动器230通过总线240耦接到南桥和I/O控制器集线器204。
例如,PCI/PCIe装置可包括以太网适配器、扩展卡、以及用于笔记本计算机的PC卡。PCI使用卡总线控制器,而PCIe不使用卡总线控制器。例如,ROM 224可为快闪二进制输入/输出系统(BIOS)。例如,硬盘驱动器226和CD-ROM驱动器230可使用集成驱动电子装置(IDE)或串行高级技术附接(SATA)接口。可将超级I/O(SIO)装置236耦接到南桥和I/O控制器集线器204。
操作系统在处理器206上运行。此操作系统协调并控制图2中的数据处理系统200内的各种组件。操作系统可为商用操作系统,如可从纽约阿芒克的国际商用机器公司得到的高级交互执行体(AIX)。例如JavaTM编程系统的面向对象的编程系统可与操作系统结合运行,并从在数据处理系统200上执行的JavaTM程序或应用向操作系统提供调用。在美国、其它国家、或者美国及其它国家,JavaTM和所有基于Java的商标是Sun微系统有限公司的商标。
用于操作系统、面向对象的编程系统、以及应用或程序的指令位于例如硬盘驱动器226的存储装置上。这些指令可被载入主存储器208,以便由处理器206执行。可由处理器206使用可位于存储器中的计算机实现的指令来执行说明性实施例的过程。存储器的例子为主存储器208、只读存储器224,或者位于一个或多个外设中。
图1和图2中示出的硬件可取决于图解的实施例的实现而变化。除了图1和图2中绘出的硬件之外、或替代图1和图2中绘出的硬件,可使用其它内部硬件或外设,如闪存、同等的非易失性存储器、或光盘驱动器等。另外,可将说明性实施例的过程应用于微处理器数据处理系统。
图2中示出的系统和组件可与所示出的说明性例子不同。在一些说明性例子中,数据处理系统200可为个人数字助理(PDA),通常,个人数字助理被配置有闪存,用来提供用于存储操作系统文件和/或用户生成的数据的非易失性存储器。另外,数据处理系统200可为平板式计算机、膝上型计算机、或电话装置。
图2中示出的其它组件可与所示出的说明性例子不同。例如,总线系统可由诸如系统总线、I/O总线、以及PCI总线的一个或多个总线组成。当然,可使用任意适用类型的通信组织或架构,来实现总线系统,其中,所述组织或架构提供在附接到所述组织或架构的不同组件或装置之间的数据传送。另外,通信单元可包括用来传送和接收数据的一个或多个装置,如调制解调器或网络适配器。此外,例如,如在北桥和存储器控制器集线器202中看到的,存储器可为主存储器208、或高速缓存。并且,处理单元可包括一个或多个处理器或CPU。
图1和图2中绘出的例子不意欲暗示架构的限制。另外,说明性实施例提供了用于编译源代码和用于执行代码的计算机实现的方法、系统和计算机可用程序代码。可在诸如图1中示出的数据处理系统100或图2中示出的数据处理系统200的数据处理系统中执行通过参照绘出的实施例而描述的方法。
说明性实施例提供了用于将分派窗内的未使用的处理器循环动态分发到最繁忙的未封顶的微分区的在数据处理系统中的计算机实现的方法、系统和计算机可用程序代码。数据处理系统使用分区管理固件来管理封顶和未封顶的微分区。例如,分区管理固件可利用算法来执行将分派窗内的未使用的处理器循环分发到未封顶的微分区的步骤。
响应于确定在所有逻辑微分区(封顶和未封顶的)使用它们的处理器循环的最小权利之后、在分派窗中仍有时间,分区管理固件编译(compile)所有未封顶的微分区的列表、以及所有准备运行的未封顶的微分区的列表。然而,逻辑微分区有可能不使用分派窗内的其处理器循环的最小权利中的全部。逻辑微分区可转让(cede)其处理器循环的权利。
在此说明书的上下文中,转让意味着:放弃对逻辑微分区的权利的全部或部分的控制,并将该权利授予另一个逻辑微分区。例如,即使逻辑微分区的权利可能仍具有在分派窗内剩余的时间,逻辑微分区也可能无法执行或进行任务,这是因为,逻辑微分区正在等待中断或某个其它外部事件。由此,该逻辑微分区可在空闲的同时,将其处理器循环的权利转让给另一个逻辑微分区,而不是对处理器循环进行“保持(hold on)”。
在编译所有未封顶的微分区的列表、以及所有准备运行的未封顶的微分区的列表之后,分区管理固件比较所述两个列表。在比较所述两个列表之后,分区管理固件计算在所有未封顶的微分区的列表、以及准备运行的未封顶的微分区的列表两者中列出的每个未封顶的微分区的平均权利使用率。
分区管理固件使用权利历史表中的用于所有未封顶的分区的可编程数目的分派窗循环条目,来计算平均权利使用率。权利历史表是列出每个未封顶的微分区在预定数目的分派窗循环上使用的处理器循环的数目。权利历史的目的在于,确定每个微分区是否具有高负载的模式。
系统管理员对权利历史表将包含的分派窗循环条目的数目编程。平均权利使用率是在权利历史表中包含的用于所有未封顶的微分区的条目的平均数的计算。如果针对未封顶的微分区而计算的平均权利使用率大于或等于例如100%使用率的阈值,那么,分区管理固件将该特定的未封顶的微分区添加到候选列表中。
随后,分区管理固件对候选列表应用基于历史的抽彩过程。基于历史的抽彩过程考虑到所计算的平均权利使用率、以及系统管理员分配的未封顶的微分区的权重。由此,分区管理固件使用所计算的平均权利使用率、以及所分配的用于未封顶的微分区的权重,来从候选列表中确定基于历史的抽彩的优胜者。之后,分区管理固件分派优胜的候选,由此,动态分发分派窗内的未使用的处理器循环。如果候选列表仅列出了一个候选,则分区管理固件分派所述一个未封顶的微分区候选,而不使用抽彩过程。在分派候选之后,分区管理固件从候选列表中移除那个被分派的候选。
如果在候选列表中未列出未封顶的微分区,则分区管理固件对所有未封顶的微分区的列表应用标准抽彩过程。标准抽彩过程仅考虑系统管理员分配的未封顶的微分区的权重。之后,分区管理固件分派来自所有未封顶的微分区的列表的标准抽彩的优胜者,以动态分发分派窗内的未使用的处理器循环。
在分派未封顶的微分区以便利用未使用的处理器循环之后,分区管理固件确定在分派窗内是否仍有时间。如果在分派窗内仍有时间,则分区管理固件再次将基于历史的或标准抽彩过程分别应用于候选列表或所有未封顶的微分区的列表,以分派另一个优胜者来消耗更多未使用的处理器容量。另外,分区管理固件在开始每一个分派窗循环之前,更新用于所有未封顶的微分区的权利历史表。
通过在分区管理固件内实现算法来执行动态分发未使用的处理器循环的步骤,分区管理固件变得更有效率,这是因为,分区管理固件已经实现了所有未封顶的微分区的列表、所有准备运行的微分区的列表、以及标准抽彩过程。另外,该算法给出了对最繁忙的未封顶的微分区的优选处理。此外,通过不影响用于分派窗内的每一个微分区的最小保证的权利,该算法不会使任何微分区资源不足(starve),同时照顾最繁忙的未封顶的微分区。由此,说明性实施例通过使用基于历史的优先级算法,而有效并且动态分发分派窗内的未使用的处理器循环。
现在,参照图3,绘出了根据说明性实施例的逻辑分区的计算机的框图。例如,可通过图2中的数据处理系统200而实现逻辑分区的计算机300。例如,逻辑分区的计算机300可包括逻辑微分区的处理器302、存储单元304、306、308、310和312、PCI/PCIe装置314、316、318、320和322、以及分区管理固件324。然而,应注意,逻辑分区的计算机300仅用于示例性的目的,且不意味着对说明性实施例的架构的限制。逻辑分区的计算机300可包括执行说明性实施例的过程的任意必要组件。
例如,逻辑微分区的处理器302可为图2中的处理器单元206。然而,应注意,逻辑分区的计算机300可包括对称微处理器(SMP)系统,其包括多个逻辑微分区的处理器。逻辑微分区的处理器302包括微分区片326、328、330、332和334。微分区片326、328、330、332和334表示逻辑微分区的处理器302内的处理器容量的“片”、或特定数目的处理器循环。处理器容量的每片能够执行用于逻辑分区的计算机300的任务或操作。
因为逻辑分区的计算机300被逻辑分区,所以,可在逻辑分区的计算机300上同时运行多个操作系统,如操作系统336、338、340、342和344。例如,操作系统336、338、340、342和344可为异类操作系统、单个操作系统的多个实例、或其组合。这些多个操作系统的每个可具有在它们中执行的任意数目个软件应用。此外,将所述多个操作系统中的每个各自分配到逻辑分区的硬件的分离、不重叠的集合。
例如,逻辑分区的计算机300具有5个微分区,即P1346、P2348、P3350、P4352、以及P5354。然而,本领域的普通技术人员将理解,逻辑分区的计算机300可包含或多或少的逻辑微分区。另外,存储单元304、306、308、310和312、PCI/PCIe装置314、316、318、320和322、以及处理器片326、328、330、332和334中的每个被分配到不同的逻辑微分区。例如,存储单元304、306、308、310和312可为图2中的主存储器208、ROM 224、CD-ROM驱动器230、硬盘驱动器226、或其任意组合。例如,PCI/PCIe装置314、316、318、320和322可为图2中的PCI/PCIe装置234。然而,不将说明性实施例约束为仅仅逻辑分区的存储单元、PCI/PCIe装置、以及处理器片。说明性实施例可包括在逻辑微分区内的任何必要的数据处理系统组件。
在此说明性实施例中,逻辑微分区P1346包括存储单元304、PCI/PCIe装置314、处理器片326、以及操作系统336。逻辑微分区P2348包括存储单元306、PCI/PCIe装置316、处理器片328、以及操作系统338。逻辑微分区P3350包括存储单元308、PCI/PCIe装置318、处理器片330、以及操作系统340。逻辑微分区P4352包括存储单元310、PCI/PCIe装置320、处理器片332、以及操作系统342。逻辑微分区P5354包括存储单元312、PCI/PCIe装置322、处理器片334、以及操作系统344。然而,应注意,尽管逻辑微分区P1346、P2348、P3350、P4352、以及P5354包括一个存储单元、一个PCI/PCIe装置、以及一个处理器片,但说明性实施例不限于此。说明性实施例可包括在一个逻辑微分区内的多个存储单元、多个PCI/PCIe装置、多个处理器片、或其任意组合。
如上所示,在逻辑分区的计算机300内运行的每个操作系统被分配给不同的逻辑微分区。由此,每个操作系统仅可访问其微分区内的那些硬件组件。另外,例如,AIX操作系统的一个实例可在微分区P1346内运行。AIX操作系统的第二实例或映像(image)可在微分区P2348内运行。Linux操作系统可在微分区P3350内运行。Linux是作为开源软件操作系统的Unix的一个版本。Linux操作系统的第二实例可在微分区P4352内运行。最后,作为可从微软(Microsoft)公司得到的产品的Windows XP操作系统的实例可在微分区P5354内运行。
结果,在一个微分区中的PCI/PCIe装置中出现的错误不会被另一个微分区内的操作系统“看到”。由此,一个微分区中的操作系统的完整性不会受在另一个逻辑微分区中出现的错误影响。在无这样的错误隔离的情况下,在一个微分区的PCI/PCIe装置内出现的错误可能会使另一个微分区的操作系统或软件应用终止操作、或终止正确操作。
通过分区管理固件324而实现逻辑微分区P1346、P2348、P3350、P4352、以及P5354的管理。固件是一类存储芯片,其在无电力的情况下也保持它们的内容。固件包括闪存、ROM、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、可电擦除可编程ROM(EEPROM)、以及非易失性随机存取存储器(NVRAM)技术。当保持程序指令时,可将固件视为“硬软件(hardsoftware)”。例如,分区管理固件324可为作为可从IBM公司得到的产品的POWER HypervisorTM。POWER HypervisorTM是下层运行AIX和Linux操作系统的固件层。分区管理固件324的主要功能在于,处理逻辑分区的计算机300内的时间分片(slicing)、以及微分区P1346、P2348、P3350、P4352、以及P5354的分派。由系统管理员确定逻辑微分区所接收的处理器循环的数目。用于逻辑微分区的处理器循环的数目变为该逻辑微分区的“权利”。
现在,参照图4,绘出了根据说明性实施例的计算机内的所有封顶的和未封顶的微分区、连同其相应权利的示例列表。微分区列表400列出了逻辑分区的计算机内的所有逻辑微分区,例如,图3中的逻辑分区的计算机300内的逻辑微分区P1346、P2348、P3350、P4352、以及P5354。微分区列表400包括封顶的和未封顶的逻辑微分区。微分区P1402和P2404是封顶的逻辑分区,其意味着:微分区P1402和P2404在分派窗循环期间不会超过其权利、或被分配的处理容量。例如,封顶的微分区P1402和P2404可为图3中的微分区P1346和P2348。微分区P3406、P4408、以及P5410是未封顶的逻辑分区,其意味着:微分区P3406、P4408、以及P5410在分派窗循环期间可能会超过其权利。例如,未封顶的微分区P3406、P4408、以及P5410可为图3中的逻辑微分区P3350、P4352、以及P5354。
封顶的微分区P1402和P2404分别被分配2ms和1ms的权利。换句话说,在分派窗循环内,封顶的微分区P1402不能超过其2ms的权利,而封顶的微分区P2404不能超过其1ms的权利。未封顶的微分区P3406、P4408、以及P5410分别被分配1ms、2ms和2ms的权利。换句话说,如果微分区P3406、P4408、以及P5410在分派窗循环期间使用它们各自的权利的至少100%,则在分派窗循环内,未封顶的微分区P3406可超过其1ms的权利,未封顶的微分区P4408可超过其2ms的权利,并且,未封顶的微分区P5410可超过其2ms的权利。另外,应注意,在任何未封顶的分区变为适合(eligible)接收附加处理器循环之前,微分区的处理器内所有封顶和未封顶的分区在每个分派窗循环接收其各自的最小权利。
当然,本领域的普通技术人员应理解,示出微分区列表400仅用于说明的目的,并且,其不意欲暗示对说明性实施例的限制。说明性实施例可在逻辑分区的计算机内包括相同、更多、或更少的逻辑微分区。另外,说明性实施例可包括封顶对未封顶的微分区的任意比例。此外,说明性实施例可将任意大小的权利分配给每个微分区。此外,在逻辑分区的计算机内,每个微分区可包括相同的权利、不同的权利、或相同和不同的权利的任意组合。此外,说明性实施例可包括在逻辑分区的计算机内的多个微分区的处理器,其各自具有多个封顶和未封顶的微分区。
现在,参照图5,绘出了根据说明性实施例的具有未使用的处理器循环的分派窗的示例图解。分派窗500的持续时间为10ms。然而,示出分派窗500仅用于说明的目的,并且,其不意欲作为对说明性实施例的约束。分派窗500可为适于说明性实施例的过程的任意持续时间,例如,1ms-20ms的持续时间。
例如图3的分区管理固件324的分区管理固件使用分派窗500来分派微分区,以消耗处理器循环来执行任务。在此具体的说明性例子中,如图3中的微分区P1346、P2348、P3350、P4352、以及P5354那样,分区管理固件分派微分区P1502、P2504、P3506、P4508、以及P5510,以消耗处理器循环来执行任务。如图4中的微分区P1402、P2404、P3406、P4408、以及P5410那样,微分区P1502、P2504、P3506、P4508、以及P5510分别具有2ms、1ms、1ms、2ms和2ms的权利。另外,如图4的封顶的微分区P1402和P2404、以及未封顶的微分区P3406、P4408和P5410那样,微分区P1502和P2504是封顶的,而微分区P3506、P4508、以及P5510是未封顶的。
并且,在此具体的说明性例子中,微分区P1502、P2504、P3506、P4508、以及P5510消耗各自的权利的100%。然而,这种100%的权利消耗总共仅有8ms。由此,因为分派窗500的持续时间为10ms、并且微分区P1502、P2504、P3506、P4508、以及P5510的分派仅消耗了8ms的处理器容量或处理器循环,所以,在分派窗500内,未使用或剩余2ms的处理器容量。
由于仅未封顶的微分区才能够消耗附加的处理器循环,所以,分区管理固件仅将未封顶的微分区P3506、P4508、以及P5510视为适合消耗附加的处理器循环。此外,因为未封顶的微分区P3506、P4508、以及P5510消耗了它们各自的处理器容量的权利的100%,所以,所有三个未封顶的微分区均适合接收更多的处理器时间。因为多于一个未封顶的微分区适合接收更多的处理器容量,所以,分区管理固件应用基于权利历史使用率的抽彩方案来确定接收附加处理器循环的优胜者。由此,分区管理固件通过提供附加处理时间而奖励(reward)最繁忙的未封顶的微分区。
现在,参照图6,绘出了根据说明性实施例的具有未使用的处理器循环的分派窗的另一个示例图解。如图5的分派窗500那样,分派窗600的持续时间也为10ms。在此具体说明性例子中,如图5的微分区P1502、P2504、P3506、P4508、以及P5510那样,分区管理固件分派微分区P1602、P2604、P3606、P4608、以及P5610,以执行任务。如图4中的微分区P1402、P2404、P3406、P4408、以及P5410那样,微分区P1602、P2604、P3606、P4608、以及P5610也分别具有2ms、1ms、1ms、2ms和2ms的权利。另外,如图4的封顶的微分区P1402和P2404、以及未封顶的微分区P3406、P4408和P5410那样,微分区P1602和P2604是封顶的,而微分区P3606、P4608、以及P5610是未封顶的。
并且,在此具体说明性例子中,封顶的微分区P1602和未封顶的微分区P3606消耗各自权利的100%,而封顶的微分区P2604、以及未封顶的微分区P4608和P5610未消耗其各自权利的100%。因为微分区P1602、P2604、P3606、P4608、以及P5610的分派仅消耗了5.5ms的处理器容量,所以,在分派窗600内,剩余或未使用4.5ms的处理器容量。因为仅未封顶的微分区才能够消耗附加的处理器循环、且微分区P3606消耗了其权利的100%,所以,分区管理固件对微分区P3606赋予消耗未使用的处理器循环的优先权。如果分区管理固件一旦再次分派未封顶的微分区P3606、且在分派窗600内仍有时间,那么,如果微分区P3606准备运行,则未封顶的微分区P3606再次接收优先权。如果微分区P3606未准备运行,则分区管理固件将标准抽彩方案应用于分派窗600内的所有未封顶的微分区的列表,以分发未使用的处理器循环。
现在,参照图7,绘出了根据说明性实施例的逻辑分区的计算机内的所有未封顶的微分区的示例列表。例如,所有未封顶的微分区的列表700可驻留在例如图3的分区管理固件324的分区管理固件中。可替换地,所有未封顶的微分区的列表700可驻留在例如图2的主存储器208的存储器、或能够被说明性实施例利用的任意其它存储器或存储组件中。
所有未封顶的微分区的列表700列出了例如图3中的逻辑分区的计算机300的逻辑分区的计算机中的所有未封顶的微分区。如图4的未封顶的微分区P3406、P4408和P5410那样,所有未封顶的微分区的列表700包括未封顶的微分区P3706、P4708和P5710。另外,所有未封顶的微分区的列表700包括由上标星号712、714和716指示的每个未封顶的微分区P3706、P4708和P5710的地址。分区管理固件使用地址712、714和716来定位权利历史表(参见下面的图9)内的未封顶的微分区P3706、P4708和P5710的条目。
现在,参照图8,绘出了根据说明性实施例的分派窗内的准备运行的未封顶的微分区的示例列表。例如,准备运行列表800可驻留在例如图3中的分区管理固件324的分区管理固件中。可替换地,准备运行列表800可驻留在例如图2的主存储器208的存储器、或能够被说明性实施例利用的任意其它存储器或存储组件中。
准备运行列表800列出了在例如图6的分派窗600的分派窗内的准备运行、或被分区管理固件分派的所有未封顶的微分区。准备运行列表800包括准备运行的未封顶的微分区P3806和P5810。例如,准备运行的未封顶的微分区P3806和P5810可为图7中的未封顶的微分区P3706和P5710。换句话说,在此说明性例子中,在当前的分派窗循环中,图7中的未封顶的微分区P4708并未准备运行。准备运行列表800还包括由上标星号812和814指示的每个未封顶的微分区P3806和P5810的地址。分区管理固件使用地址812和814来定位权利历史表(见图9)内的未封顶的微分区P3806和P5810的条目。
在编译了图7中的所有未封顶的微分区的列表700、以及准备运行列表800之后,分区管理固件比较所述两个列表。如果在所有未封顶的微分区的列表、以及准备运行列表两者中均列出了未封顶的微分区,那么,分区管理固件为在所述两个列表中列出的每个未封顶的微分区计算平均权利使用率。例如,图7中的未封顶的微分区P3706和P5710和准备运行的未封顶的微分区P3806和P5810相同。由此,在所述两个列表中列出这些未封顶的微分区。结果,分区管理固件为未封顶的微分区P3806和P5810计算平均权利使用率。分区管理固件使用地址812和814来定位图9中示出的权利历史表内的未封顶的微分区P3806和P5810的所有条目,以进行此平均权利使用率计算。
如果针对未封顶的微分区的平均权利使用率计算大于或等于阈值,则分区管理固件在候选列表(见图10)中列出该未封顶的微分区、连同其相应的平均权利使用率分数。例如,该阈值可为100%使用率。当然,说明性实施例不限于100%的阈值。说明性实施例可使用任意阈值,例如50-150%的使用率。
现在,参照图9,绘出了根据说明性实施例的所有未封顶的微分区的示例权利历史表。例如,权利历史表900可驻留在例如图3中的分区管理固件324的分区管理固件中。可替换地,权利历史表900可驻留在例如图2的主存储器208的存储器、或能够被说明性实施例利用的任意其它存储器或存储组件中。并且,应注意,说明性实施例不限于使用表来存储未封顶的微分区的权利历史。说明性实施例可利用任意形式的结构化或非结构化存储器来存储此数据。
分区管理固件针对X数目的分派窗循环,在例如图3中的逻辑分区的计算机300的逻辑分区的计算机内为每个未封顶的微分区存储权利历史。系统管理员对分区管理固件存储在权利历史表900中的分派窗循环的特定数目编程。换句话说,系统管理员确定:适当地计算未封顶的微分区的平均权利使用率分数需要多少分派窗循环。然而,分区管理固件使用越多的条目来计算平均权利使用率分数,分区管理固件对于分派具有“尖锐(spiky)”的工作负载的未封顶的微分区来接收分派窗内的未使用的处理器循环便越不敏感、或越缺少反应。结果,必须提醒系统管理员变化的工作负载状况,以便适当地对权利历史表900内条目的数目编程。
除了对权利历史表所包含的分派窗循环的数目编程之外,系统管理员还可对在权利历史表中存在的每个分派窗循环分配权重。例如,系统管理员可对权利历史表内的最近或当前的分派窗循环分配比紧挨在之前的分派窗循环更高的权重,紧挨在之前的分派窗循环可接收比再之前的分派窗循环更高的权重,等等,直到达到了分派窗循环的可编程的最大数目为止。换句话说,使用加权的权利历史表的说明性实施例可将更高的权重或重要性置于较新近的微分区处理器循环消耗历史上,而将较低的重要性置于较早的历史上。通过使用加权的权利历史表,说明性实施例可对具有尖锐的工作负载的未封顶的微分区具有更多的反应,而仍保持具有较长的权利历史的表。结果,说明性实施例不仅限于计算权利历史表中存在的所有微分区权利使用率历史的直接平均数。
权利历史表900包含用于未封顶的微分区P3906、P4908和P5910(如图7中的未封顶的微分区P3706、P4708和P5710)的5个分派窗循环。权利历史表900是先进先出(FIFO)的条目堆栈。换句话说,权利历史表900中的第一个条目是在达到表条目的最大数目(在此说明性例子中,其为5个条目)之后要被删除的第一个条目。因为此说明性例子中的系统管理员将权利历史表900编程为列出用于未封顶的微分区P3906、P4908和P5910的5个分派窗循环,所以,分区管理固件将当前的分派窗循环置于该表的顶部,将每个先前的分派窗循环递增1,并删除第六个条目。
例如,分派窗循环912是进入权利历史表900的第五个条目,且为用于未封顶的微分区P3906、P4908和P5910的当前的分派窗循环(TC)。分派窗循环914是第四个条目,且为位于TC-10ms的紧挨着在前的分派窗循环。分派窗循环916是第三个条目,且为位于TC-10ms(2)或TC-20ms的第二最早的分派窗循环。分派窗循环918是第二个条目,且为位于TC-10ms(3)或TC-30ms的第三最早的分派窗循环。分派窗循环920是第一个条目,且为位于TC-10ms(4)或TC-40ms的第四最早的分派窗循环。
由此,当分区管理固件在TC将下一个当前的分派窗循环输入到权利历史表900时,分区管理固件从权利历史表900删除分派窗循环920中的先前的条目。如前所述,分区管理固件使用在权利历史表900内包含的数据来计算未封顶的微分区P3906、P4908和P5910的平均权利使用率,但是,仅在未封顶的微分区P3906、P4908和P5910在图7中示出的所有未封顶的微分区的列表和图8中示出的准备运行列表两者中均被列出的情况下才是如此。如在图8的例子中所讨论的,仅未封顶的微分区P3806和P5810才在所述两个列表中被列出。未封顶的微分区P3906和P5910与图8中的未封顶的微分区P3806和P5810相同。因此,分区管理固件仅使用权利历史表900内的数据来计算未封顶的微分区P3906和P5910的平均权利使用率。
现在,参照图10,绘出了根据说明性实施例的示例候选列表。例如,候选列表1000可驻留在例如图3中的分区管理固件324的分区管理固件中。可替换地,候选列表1000可驻留在例如图2的主存储器208的存储器、或能够被说明性实施例利用的任意其它存储器或存储组件中。
候选列表1000列出可接收分派窗循环内的未使用的处理器循环的所有适合的候选。为成为适合的候选,分区管理固件必须找到在图7中示出的所有未封顶的微分区的列表和图8中示出的准备运行列表两者中均被列出的未封顶的微分区。另外,分区管理固件必须计算在所述两个列表中被列出的每个未封顶的微分区的大于或等于阈值的平均权利使用率分数。如果未封顶的微分区满足以上准则,那么,分区管理固件将那个具体的未封顶的微分区置于候选列表1000中。
在此说明性实施例中,分区管理固件在候选列表1000中列出了未封顶的微分区P31006和P51010,如图9中的未封顶的微分区P3906和P5910。由此,未封顶的微分区P31006和P51010在图7中示出的所有未封顶的微分区的列表和图8中示出的准备运行列表两者中均被列出,并具有大于或等于该阈值的平均权利使用率分数。
现在,参照图11,示出了根据说明性实施例的用于动态地分发分派窗内的未使用的处理器循环的示例过程的流程图。可在例如图3中的分区管理固件324的分区管理固件中实现图11中示出的过程。
当分区管理固件启动分派窗循环时,该过程开始(步骤1102)。在步骤1102中、启动分派窗循环之后,分区管理固件作出关于在所有微分区使用了它们的最小的处理器容量的权利之后是否存在剩余时间的确定(步骤1104)。如果不存在剩余时间,则步骤1104输出“否”,随后,该过程前进到步骤1128,其中,分区管理固件更新所有未封顶的微分区的权利历史表。如果存在剩余时间,则步骤1104输出“是”,随后,分区管理固件编译此分派窗循环中的所有未封顶的微分区的列表(步骤1106)。
在步骤1106中编译此分派窗循环中的所有未封顶的微分区的列表之后、或与此同时,分区管理固件编译此分派窗循环中的所有准备运行的未封顶的微分区的列表(步骤1108)。在步骤1106和1108中编译所有未封顶的微分区和准备运行的未封顶的微分区的列表之后,分区管理固件将所有未封顶的微分区的列表与准备运行的未封顶的微分区的列表比较(步骤1110)。在步骤1110中比较所述两个列表之后,分区管理固件计算在所有未封顶的微分区的列表与准备运行的微分区的列表两者中均出现的每个未封顶的微分区的平均权利使用率。可替换地,分区管理固件可计算比例分数,而不是原始百分率分数。如果平均权利使用率大于或等于阈值(例如,其可为比例1、或100%的原始使用百分率),那么,对于达到(meet)该阈值的每个未封顶的微分区,分区管理固件将条目添加到候选列表(步骤1112)。
在步骤1112中、计算在所有未封顶的微分区的列表与准备运行的微分区的列表两者中均列出的每个未封顶的微分区的平均权利使用率之后,分区管理固件作出关于候选列表是否不包含条目、或是否为空的确定(步骤1114)。如果候选列表为空,步骤1114输出“是”,则分区管理固件对所有未封顶的分区的列表应用标准抽彩过程,并分派优胜者来消耗分派窗内的未使用的处理器循环(步骤1116)。在步骤1116中、分派来自所有未封顶的分区的列表的标准抽彩过程的优胜者之后,该过程前进到步骤1126,其中,分区管理固件作出关于在分派窗内是否仍有时间的确定。
如果候选列表不为空,步骤1114输出“否”,则分区管理固件作出有关候选列表是否仅包含一个条目或候选的确定(步骤1118)。如果候选列表并非仅包含一个条目,步骤1118输出“否”,则分区管理固件对候选列表应用基于历史的抽彩过程,并分派优胜者来消耗分派窗内的未使用的处理器循环(步骤1120)。在步骤1120中、分派来自候选列表的基于历史的抽彩优胜者之后,该过程前进到步骤1124,其中,分区管理固件从候选列表移除已分派的候选。
如果候选列表仅包含一个条目,步骤1118输出“是”,则分区管理固件分派候选列表中仅有的候选来消耗分派窗内的未使用的处理器循环(步骤1122)。在步骤1122中、分派候选列表中的仅有的候选之后,分区管理固件从候选列表移除分派的候选(步骤1124)。在步骤1124中、从候选列表移除分派的候选之后,分区管理固件作出关于在分派窗内是否仍有时间的确定(步骤1126)。
如果在分派窗内仍有时间,步骤1126输出“是”,则该过程返回到步骤1114,其中,分区管理固件作出关于候选列表是否为空的确定。如果在分派窗内无剩余时间,步骤1126输出“否”,则分区管理固件更新所有未封顶的分区的权利历史表(步骤1128)。在步骤1128中更新权利历史表之后,分区管理固件结束分派窗循环(步骤1130)。之后,该过程终止。
现在,参照图12,示出了根据说明性实施例的用于动态地分发未使用的处理器循环的示例算法。例如,说明性实施例可将示例的基于历史的优先级算法(prioritization algorithm)1200置于例如图3中的分区管理固件324的分区管理固件中。然而,说明性实施例不限于将算法1200置于分区管理固件中。说明性实施例可将算法1200置于能够存储算法1200的计算机内的任意组件中。可替换地,算法1200可驻留在连接到利用算法1200的计算机的网络数据处理系统中。
应注意,算法1200仅意欲作为可被用于动态分发分派窗内的微分区的处理器的未使用的处理器循环的说明性实施例利用的一种类型的算法的例子。说明性实施例不限于使用算法1200。可使用能够实现说明性实施例的过程的任意算法。
算法1200包含5个基本步骤。步骤1201:编译分派窗中的所有未封顶的分区的列表。步骤1202:创建具有与为了每个未封顶的微分区的权利使用率历史被考虑的分派窗的数目相等的表条目数目的表。系统管理员对分派窗的数目编程,其中,分区管理固件考虑将分派窗的数目用于权利使用率历史计算。如果系统管理员不对此数目编程,则使用缺省的条目数目。在每一个分派窗循环更新权利使用率历史表。步骤1203:在此分配窗中,将所有未封顶的微分区的列表与准备运行的未封顶的微分区的列表比较。步骤1204:基于编程或缺省数目的分派窗,计算在所有未封顶的微分区的列表与准备运行的未封顶的微分区的列表两者中均被列出的每个未封顶的微分区的平均权利使用率。如果所计算的用于未封顶的微分区的平均权利使用率大于或等于100%,则将该具体的未封顶的微分区置入候选列表。步骤1205:对候选列表应用基于历史的抽彩过程,并分派优胜者来消耗分派窗内的未使用的处理器循环。如果在候选列表中未找到候选,则对所有未封顶的分区的列表应用标准抽彩过程。
然而,还应注意,说明性实施例不限于5步骤算法。取决于每个说明性实施例的实现,说明性实施例可利用包含或多或少的步骤的算法。尽管对所有微分区中最繁忙的赋予优选权,但算法1200对以下内容敏感:1)所有未封顶的微分区的列表,系统管理员可在任意时刻向该列表添加未封顶的微分区、或从该列表移除未封顶的微分区;2)竞争的未封顶的微分区的最近使用率历史;以及3)系统管理员分配的、每个竞争的未封顶的微分区的权重。
由此,说明性实施例提供了用于将分派窗内的未使用的处理器循环动态地分发到最繁忙的未封顶的分区的计算机实现的方法、系统和计算机可用程序代码。本发明可采用全部硬件实施例、全部软件实施例、或包含硬件和软件元素两者的实施例的形式。在优选实施例中,以软件方式实现本发明,该软件包括但不限于固件、驻留软件、微代码等。
此外,本发明可采用可从计算机可用或计算机可读介质访问的计算机程序产品的形式,其中,所述介质提供被计算机或任意指令执行系统使用、或结合计算机或任意指令执行系统使用的程序代码。为了此描述的目的,计算机可用或计算机可读介质可为任意有形设备,其可包含、存储、传递、传播、或传输被指令执行系统、设备或装置使用、或结合该指令执行系统、设备或装置使用的程序。
所述介质可为电、磁、光、电磁、红外、或半导体系统(或者,设备或装置)、或传播介质。计算机可读介质的例子包括半导体或固态存储器、磁带、可拆卸计算机盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。光盘的当前的例子包括致密盘只读存储器(CD-ROM)、致密盘读/写(CD-R/W)和DVD。
适用于存储和/或执行程序代码的数据处理系统将包括通过系统总线而直接或间接耦接到存储元件的至少一个处理器。存储元件可包括在程序代码的实际执行期间采用的本地存储器、大容量存储装置、以及提供至少某些程序代码的暂时存储以便减小在执行期间必须从大容量存储装置检索代码的次数的高速缓存。
输入/输出或I/O装置(包括但不限于键盘、显示器、定点装置等)可直接、或通过中间的I/O控制器而耦接到该系统。
网络适配器也可耦接到该系统,以使数据处理系统能够通过中间的专用或公用网络而耦接到其他数据处理系统、或远程打印机、或存储装置。调制解调器、有线电视调制解调器、以及以太网卡仅为网络适配器的当前可用类型中的一些。
已为了说明和描述的目的而呈现了本发明的描述,并且,其不意欲是穷举性的、或将本发明限于所公开的形式。对于本领域的普通技术人员来说,很多修改和变化将是显而易见的。选择并描述了实施例,以便最佳地说明本发明的原理、实践应用,并使本领域的其它普通技术人员能够理解:针对于具有各种修改的各种实施例的发明,适于所考虑的具体用途。
Claims (16)
1.一种用于管理处理器循环的计算机实现的方法,该计算机实现的方法包括:
响应于在分派窗中存在的未使用的处理器循环,识别准备运行的未封顶的分区的集合,以形成所识别的分区的集合;
基于使用率历史,从所识别的分区的集合中识别多个候选分区,其中,在预定义的数目的先前的分派窗中,每个所识别的分区使用其权利的至少100%;以及
基于候选分区的抽彩过程,而从多个候选分区中选择分区。
2.如权利要求1所述的计算机实现的方法,还包括:
从所述多个候选分区中移除抽彩过程的优胜者;以及
更新用于所有未封顶的分区的权利历史表。
3.如权利要求2所述的计算机实现的方法,还包括:
编译所有未封顶的分区的列表、以及准备运行的未封顶的分区的列表;
将所有未封顶的分区的列表与准备运行的未封顶的分区的列表比较;
分派抽彩过程的优胜者来消耗在分派窗中存在的未使用的处理器循环;
响应于仅具有一个未封顶的分区的候选分区的数目,而分派所述一个未封顶的分区来消耗在分派窗中存在的未使用的处理器循环;
响应于不具有未封顶的分区的候选分区的数目,对所有未封顶的分区的列表应用标准抽彩过程;以及
分派来自所有未封顶的分区的列表的标准抽彩过程的优胜者来消耗在分派窗中存在的未使用的处理器循环。
4.如权利要求3所述的计算机实现的方法,还包括:
在执行分派步骤之后,确定在分派窗中是否仍有时间。
5.如权利要求4所述的计算机实现的方法,其中,分区管理固件使用算法来执行识别、选择、移除、更新、编译、比较、分派和应用步骤。
6.如权利要求5所述的计算机实现的方法,其中,该算法驻留在该分区管理固件中,并且,其中,该分区管理固件为管理程序。
7.如权利要求2所述的计算机实现的方法,其中,用于在权利历史表中存在的所有未封顶的分区的分派窗循环条目的数目是可编程的。
8.如权利要求7所述的计算机实现的方法,其中,使用用于在权利历史表中存在的所有未封顶的分区的多个分派窗循环条目,而计算在所有未封顶的分区的列表和准备运行的未封顶的分区的列表两者均被列出的每个未封顶的分区的平均权利使用率,以形成计算出的平均权利使用率。
9.如权利要求8所述的计算机实现的方法,其中,该抽彩过程使用所述计算出的平均权利使用率、以及为在所有未封顶的分区的列表和准备运行的未封顶的分区的列表两者均被列出的每个未封顶的分区分配的权重,而从多个候选分区中确定抽彩过程的优胜者。
10.如权利要求7所述的计算机实现的方法,其中,在权利历史表中存在的每个分派窗循环具有被分配的权重。
11.如权利要求1所述的计算机实现的方法,其中,所述分区为逻辑微分区,并且,其中,所述逻辑微分区为逻辑未封顶的微分区。
12.如权利要求1所述的计算机实现的方法,其中,使用率历史为平均权利使用率,并且,其中,所述平均权利使用率必须大于或等于阈值,以识别多个候选分区。
13.一种在数据处理系统内的计算机实现的方法,其用于分发分派窗内的未使用处理器循环,该计算机实现的方法包括:
响应于确定在所有逻辑分区使用它们的处理器循环的最小权利之后、在分派窗中仍有时间,而计算在所有未封顶的分区的列表和准备运行的未封顶的分区的列表两者中均被列出的每个未封顶的分区的平均权利使用率,以形成计算出的用于在所述两个列表中均被列出的每个未封顶的分区的平均权利使用率;
如果计算出的平均权利使用率达到阈值,则将在所有未封顶的分区的列表和准备运行的未封顶的分区的列表两者均被列出的每个未封顶的分区添加到候选列表;以及
分派来自候选列表的基于历史的抽彩过程的优胜候选,以动态分发分派窗内的未使用的处理器循环。
14.一种用于管理处理器循环的数据处理系统,包括:
总线系统;
连接到该总线系统的存储装置,其中,该存储装置包括指令集;以及
连接到该总线系统的处理单元,其中,该处理单元执行该指令集,以便:响应于在分派窗中存在的未使用的处理器循环,识别准备运行的未封顶的分区的集合,以形成所识别的分区的集合;基于使用率历史,从所识别的分区的集合中识别多个候选分区,其中,在预定义的数目的先前的分派窗中,每个所识别的分区使用其权利的至少100%;以及基于候选分区的抽彩过程,而从多个候选分区中选择分区。
15.如权利要求14述的数据处理系统,其中,该处理单元执行另一指令集,以便:从所述多个候选分区中移除基于历史记录的抽彩过程的优胜者;以及更新用于所有未封顶的分区的权利历史表。
16.如权利要求15述的数据处理系统,其中,该处理单元执行另一指令集,以便:编译所有未封顶的分区的列表、以及准备运行的未封顶的分区的列表;将所有未封顶的分区的列表与准备运行的未封顶的分区的列表比较;分派抽彩过程的优胜者来消耗在分派窗中存在的未使用的处理器循环;响应于仅具有一个未封顶的分区的候选分区的数目,而分派所述一个未封顶的分区来消耗在分派窗中存在的未使用的处理器循环;响应于不具有未封顶的分区的候选分区的数目,对所有未封顶的分区的列表应用标准抽彩过程;以及分派来自所有未封顶的分区的列表的标准抽彩过程的优胜者来消耗在分派窗中存在的未使用的处理器循环。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/467,222 | 2006-08-25 | ||
US11/467,222 US8024738B2 (en) | 2006-08-25 | 2006-08-25 | Method and system for distributing unused processor cycles within a dispatch window |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101131654A true CN101131654A (zh) | 2008-02-27 |
CN100538649C CN100538649C (zh) | 2009-09-09 |
Family
ID=39128928
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007101383646A Expired - Fee Related CN100538649C (zh) | 2006-08-25 | 2007-08-01 | 用于分发分派窗内的未使用的处理器循环的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8024738B2 (zh) |
CN (1) | CN100538649C (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106233256A (zh) * | 2014-05-01 | 2016-12-14 | 微软技术许可有限责任公司 | 利用优化模块的负载平衡可伸缩存储 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8694999B2 (en) * | 2006-12-07 | 2014-04-08 | Wind River Systems, Inc. | Cooperative scheduling of multiple partitions in a single time window |
US8762680B2 (en) | 2009-05-19 | 2014-06-24 | International Business Machines Corporation | Scaling energy use in a virtualized environment |
US8356193B2 (en) * | 2009-05-19 | 2013-01-15 | International Business Machines Corporation | Scaling energy use in a virtualized environment |
US9378062B2 (en) * | 2009-06-18 | 2016-06-28 | Microsoft Technology Licensing, Llc | Interface between a resource manager and a scheduler in a process |
US9304820B2 (en) | 2013-08-23 | 2016-04-05 | International Business Machines Corporation | Sharing resources allocated to an entitled virtual machine |
CA3083562A1 (en) | 2017-11-27 | 2019-05-31 | Snowflake Inc. | Batch data ingestion in database systems |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6714960B1 (en) * | 1996-11-20 | 2004-03-30 | Silicon Graphics, Inc. | Earnings-based time-share scheduling |
EP1037147A1 (en) * | 1999-03-15 | 2000-09-20 | BRITISH TELECOMMUNICATIONS public limited company | Resource scheduling |
US7140020B2 (en) * | 2000-01-28 | 2006-11-21 | Hewlett-Packard Development Company, L.P. | Dynamic management of virtual partition computer workloads through service level optimization |
US7096469B1 (en) * | 2000-10-02 | 2006-08-22 | International Business Machines Corporation | Method and apparatus for enforcing capacity limitations in a logically partitioned system |
US6957435B2 (en) * | 2001-04-19 | 2005-10-18 | International Business Machines Corporation | Method and apparatus for allocating processor resources in a logically partitioned computer system |
JP3879471B2 (ja) * | 2001-10-10 | 2007-02-14 | 株式会社日立製作所 | 計算機資源割当方法 |
US7093250B1 (en) * | 2001-10-11 | 2006-08-15 | Ncr Corporation | Priority scheduler for database access |
US7159216B2 (en) * | 2001-11-07 | 2007-01-02 | International Business Machines Corporation | Method and apparatus for dispatching tasks in a non-uniform memory access (NUMA) computer system |
US7143413B2 (en) * | 2002-05-15 | 2006-11-28 | Hewlett-Packard Development Company, L.P. | Method and system for allocating system resources among applications using weights |
US7296267B2 (en) * | 2002-07-12 | 2007-11-13 | Intel Corporation | System and method for binding virtual machines to hardware contexts |
US6851030B2 (en) * | 2002-10-16 | 2005-02-01 | International Business Machines Corporation | System and method for dynamically allocating associative resources |
US7290260B2 (en) * | 2003-02-20 | 2007-10-30 | International Business Machines Corporation | Dynamic processor redistribution between partitions in a computing system |
US20040226015A1 (en) * | 2003-05-09 | 2004-11-11 | Leonard Ozgur C. | Multi-level computing resource scheduling control for operating system partitions |
US7103809B2 (en) * | 2003-10-24 | 2006-09-05 | Motorola, Inc. | Server selection method |
US7665090B1 (en) * | 2004-03-08 | 2010-02-16 | Swsoft Holdings, Ltd. | System, method, and computer program product for group scheduling of computer resources |
US20060123217A1 (en) * | 2004-12-07 | 2006-06-08 | International Business Machines Corporation | Utilization zones for automated resource management |
US20060123423A1 (en) * | 2004-12-07 | 2006-06-08 | International Business Machines Corporation | Borrowing threads as a form of load balancing in a multiprocessor data processing system |
US7752415B2 (en) * | 2004-12-22 | 2010-07-06 | International Business Machines Corporation | Method for controlling the capacity usage of a logically partitioned data processing system |
US7620661B2 (en) * | 2005-10-27 | 2009-11-17 | International Business Machines Corporation | Method for improving the performance of database loggers using agent coordination |
US9189291B2 (en) * | 2005-12-12 | 2015-11-17 | International Business Machines Corporation | Sharing a kernel of an operating system among logical partitions |
US8020164B2 (en) * | 2005-12-22 | 2011-09-13 | International Business Machines Corporation | System for determining and reporting benefits of borrowed computing resources in a partitioned environment |
US7945913B2 (en) * | 2006-01-19 | 2011-05-17 | International Business Machines Corporation | Method, system and computer program product for optimizing allocation of resources on partitions of a data processing system |
-
2006
- 2006-08-25 US US11/467,222 patent/US8024738B2/en not_active Expired - Fee Related
-
2007
- 2007-08-01 CN CNB2007101383646A patent/CN100538649C/zh not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106233256A (zh) * | 2014-05-01 | 2016-12-14 | 微软技术许可有限责任公司 | 利用优化模块的负载平衡可伸缩存储 |
CN106233256B (zh) * | 2014-05-01 | 2019-09-17 | 微软技术许可有限责任公司 | 利用优化模块的负载平衡可伸缩存储 |
Also Published As
Publication number | Publication date |
---|---|
US8024738B2 (en) | 2011-09-20 |
CN100538649C (zh) | 2009-09-09 |
US20080052713A1 (en) | 2008-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1837762B1 (en) | Scheduling method, scheduling device, and multiprocessor system | |
EP3039540B1 (en) | Virtual machine monitor configured to support latency sensitive virtual machines | |
Huang et al. | ShuffleDog: characterizing and adapting user-perceived latency of android apps | |
US9430277B2 (en) | Thread scheduling based on predicted cache occupancies of co-running threads | |
KR100885346B1 (ko) | 액티비티 정보를 이용한 가상 머신 관리 | |
US8838801B2 (en) | Cloud optimization using workload analysis | |
CN100538649C (zh) | 用于分发分派窗内的未使用的处理器循环的方法和系统 | |
JP6294586B2 (ja) | 命令スレッドを組み合わせた実行の管理システムおよび管理方法 | |
CN100410872C (zh) | 用于增强的运行时间主机支持的方法和设备 | |
US20090100249A1 (en) | Method and apparatus for allocating architectural register resources among threads in a multi-threaded microprocessor core | |
WO2013192236A1 (en) | Profiling application code to identify code portions for fpga implementation | |
JP2007328782A (ja) | カーネル間でカーネル・サービスを共用するための方法、装置、およびコンピュータ・プログラム | |
CN101819538A (zh) | 管理执行在虚拟机中的操作系统的请求 | |
US20110219373A1 (en) | Virtual machine management apparatus and virtualization method for virtualization-supporting terminal platform | |
JP2011044165A (ja) | システムにおける要求のスケジューリング | |
CN114168271A (zh) | 一种任务调度方法、电子设备及存储介质 | |
CN101971141A (zh) | 用于管理混合计算环境的系统和方法 | |
WO2013035246A1 (ja) | 仮想計算機制御装置、仮想計算機制御方法、仮想計算機制御プログラム、及び集積回路 | |
US8862786B2 (en) | Program execution with improved power efficiency | |
US11360702B2 (en) | Controller event queues | |
Biondi et al. | Moving from single-core to multicore: Initial findings on a fuel injection case study | |
Kumar et al. | A systematic survey of multiprocessor real-time scheduling and synchronization protocol | |
US8886917B1 (en) | Switching to core executing OS like codes upon system call reading greater than predetermined amount of data | |
US9223637B1 (en) | Method and apparatus to advise spin and yield decisions | |
Tabish et al. | An analyzable inter-core communication framework for high-performance multicore embedded systems |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090909 |
|
CF01 | Termination of patent right due to non-payment of annual fee |