CN100552634C - 对多处理器系统进行负荷平衡的装置和方法 - Google Patents
对多处理器系统进行负荷平衡的装置和方法 Download PDFInfo
- Publication number
- CN100552634C CN100552634C CN03145156.XA CN03145156A CN100552634C CN 100552634 C CN100552634 C CN 100552634C CN 03145156 A CN03145156 A CN 03145156A CN 100552634 C CN100552634 C CN 100552634C
- Authority
- CN
- China
- Prior art keywords
- thread
- class
- operation queue
- zone
- priority
- 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.)
- Expired - Fee Related
Links
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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种对多处理器系统进行负荷平衡的方法和装置,所述多处理器系统包括多个处理器运行队列,每个运行队列用于保持待处理的线程。本发明对每个创建的线程分配一个优先级并且将创建的线程放置于运行队列中,分配的优先级将线程归类到一个区域中;如果归类到一个运行队列中的一个区域中的线程数多于另一运行队列中的同一区域中的线程数,系统就是负荷不平衡的;如果系统是负荷不平衡的,可通过将在该区域中较高线程数的运行队列中的线程转移到在该区域中较具有低线程数的运行队列中来平衡此系统。
Description
技术领域
本发明系针对计算机系统中的资源分配。更具体言之,本发明系针对根据系统管理员设定的某些限制或使用策略对计算机系统的资源进行负荷平衡的方法和装置。
背景技术
在任何给定的处理时间,可能有多个用户进程或线程等待在计算机系统的处理器或CPU上执行。为了最好地利用系统的CPU,就必须采用可以对等待执行的进程或线程进行适当排队的有效机制。为完成这一任务,多数计算机系统采用的机制是利用调度器来完成该任务。
注意,进程是一个程序。当一个程序执行时,不严格地称其是一个任务。在多数操作系统中,在任务和程序之间存在一对一的关系。然而,有些操作系统容许将一个程序分割成为多个任务或线程。这种系统称为多线程操作系统。为简单起见,下面线程和进程可以互换使用。
调度器是一个可以协调计算机系统的共享资源(比如,CPU)的使用的软件程序。调度器通常使用先进先出(即FIFO)、轮转法或后进先出(LIFO)、优先级排队、树等等算法或多个算法的组合来进行调度。基本上,如果一个计算机系统具有3个CPU(CPU1、CPU2和CPU3),每个CPU将相应地具有一个就绪待处理队列或运行队列。如果用来对运行队列分配进程的算法是轮转法并且如果生成的最后进程是分配与CPU2相关联的队列,则生成的下一个进程将分配CPU3的队列。而生成的下一个进程将分配与CPU1相关联的队列,依此类推。这样,调度器的设计可使每个进程公平共享计算机系统的资源。
有时系统管理员可能希望不同的进程对资源的共享是不同的。在此场合,与调度器相结合使用工作负荷管理器(WLM)。WLM对每个进程分配一个数字表示一个进程可利用计算机系统的资源的时间的百分比。每当一个进程使用资源时,减小其被分配的数字。这一方案容许具有较低分配数字的进程仍然可以利用资源。
在某些时候,将这一概念应用于各类进程。在此情况下,一类进程可以是属于一组特定用户的一组进程。于是,恰好与给一个进程分配一个数字的情况一样,当一类进程利用资源时,分配给此类进程的数字减小。同样,这一方案也是保证具有较低分配数字的那些类进程有机会利用资源。
然而,问题是有时在一个例如具有两类进程(每一类进程都具有不同的分配数字)的两处理器系统中,最终是一个处理器处理其队列中的一类进程,而另一处理器处理其队列中的另一类进程。当出现这种情况时,计算机系统的两个处理器的利用效率可能不如系统管理员希望的那样高。特别是,一个运行队列中的进程将得到比容许其得到的更多的处理时间。
这样,需要有一种系统、装置和方法来保证系统的每个队列永远包含分配数字不同的各类进程的混合以保证系统管理员建立的处理器使用策略可以得到坚持。
发明内容
本发明可提供一种集成系统任务调度器和工作负荷管理器的方法、系统和装置。调度器用于向线程分配默认优先级和将线程置于运行队列中,而工作负荷管理器用于执行系统管理员设定的策略。策略之一可以是使不同类的线程类获得系统CPU时间的百分比不同。这一策略在多类线程在运行队列中尽可能均匀分布时可以可靠地实现。
一种对多处理器系统进行负荷平衡的方法,所述系统的构成包括多个处理器运行队列,每个运行队列用于保持待处理的线程,此方法的构成包括:对每个创建的线程分配一个优先级并且将创建的线程放置于运行队列中,分配的优先级将线程归类到一个区域中;判断系统是否负荷不平衡,如果归类到一个运行队列中的一个区域中的线程数多于另一运行队列中的同一区域中的线程数,系统就是负荷不平衡的;以及对系统进行负荷平衡处理,如果系统是负荷不平衡的,可通过将在该区域中具有较高线程数的运行队列中的线程转移到在该区域中具有较低线程数的运行队列中来平衡此系统。
一种对多处理器系统进行负荷平衡的装置,所述系统的构成包括多个处理器运行队列,每个运行队列用于保持待处理的线程,此装置的构成包括:用于对每个创建的线程分配一个优先级并且将创建的线程放置于运行队列中的装置,分配的优先级将线程归类到一个区域中;用于判断系统是否负荷不平衡的装置,如果归类到一个运行队列中的一个区域中的线程数多于另一运行队列中的同一区域中的线程数,系统就是负荷不平衡的;以及用于对系统进行负荷平衡处理的装置,如果系统是负荷不平衡的,可通过将在该区域中具有较高线程数的运行队列的线程转移到在该区域中具有较低线程数的运行队列中来平衡此系统。
在一个具体实施方式中,按类组织线程,每一类由一组相关的线程构成。每一类都与遵循使用策略的优先级相关联。此优先级用于修改分配给此类中的每个线程的调度优先级。根据类优先级的值,类和该类中的每个线程可处于多个优先级区域或范围之一中。本发明周期性地判断一运行队列中一个优先级区域内的线程数另一运行队列中该优先级区域内的线程数相比是否超过一个预先确定的数值。如果是这样,系统就被认为是负荷失衡。本发明就力图均衡此系统的负荷,从线程数大的运行队列中移动该优先级区域内的一个线程送到线程数较小的运行队列。如果此系统在最高优先级区域的负荷是平衡的,本发明将通过检查了解系统在次高优先级区域的负荷是否平衡,依此类推。
附图说明
本发明的特征性的新特点在后附的权利要求中列出。然而,本发明本身,以及其优选使用模式、进一步的目的及优点可参照结合下列附图的实施例的详细描述了解得最为清楚。
图1为示出根据本发明的分布式数据处理系统的示例性框图。
图2为根据本发明的服务器装置的示例性框图。
图3为根据本发明的客户机的示例性框图。
图4示出可由系统管理员设计的资源使用策略。
图5示出了类优先级如何影响运行队列中的线程。
图6示出了由3组不同的用户共享的计算机系统的运行队列。
图7为可用来实现本发明的软件程序的流程图。
具体实施方式
下面参照图1对可实现本发明的数据处理系统的网络的图示予以说明。网络数据处理系统100是其中可以应用本发明的计算机的网络。网络数据处理系统100包含网络102,网络102是用来在网络数据处理系统100之内互联的各种装置和计算机之间提供通信链路的媒体。网络102可包含各种连接,例如,有线通信链路、无线通信链路或光纤缆线。
在示例中,服务器104以及存储单元106与网络102连接。此外,客户机108、110和112与网络102相连。这些客户机108、110和112可以是,例如,个人计算机或网络计算机。在示例中,服务器104向客户机108、110和112提供数据,如引导文件、操作系统映像及应用。客户机108、110和112是服务器104的客户机。网络数据处理系统100可包括附加的服务器、客户机和其他未示出的装置。在示例中,网络数据处理系统100是由网络102代表使用TCP/IP协议集互相通信的全世界网络和网关集合的因特网。在因特网的中心是在主节点或主计算机之间的主干高速数据通信线路,由成千上万个传送数据和消息的商用、政府、教育及其他计算机系统组成。当然,网络数据处理系统100也可以由不同类型的网络实现,比如像内联网、局域网(LAN)或广域网(WAN)。图1的意图是作为一个示例,而不是对本发明的体系结构的限制。
下面参照图2,图2示出的是根据本发明的优选实施例的数据处理系统的框图,此系统,可以作为服务器,例如图1中的服务器104。数据处理系统200可以是对称的多处理器(SMP)系统,包含多个与系统总线206连接的处理器202和204。另一种方案是采用单处理器系统。与系统总线206相连接的还有可提供与局部存储器209的接口的存储器控制器/高速缓存208。I/O总线桥210与系统总线206相连接并提供与I/O总线212的接口。存储器控制器/高速缓存208和I/O总线桥210可如图所示地集成。
与I/O总线212连接的外围部件互连(PCI)总线桥214可提供与PCI局部总线216的接口。可以有多个调制解调器与PCI局部总线216相连接。典型的PCI总线设备可支持4个PCI扩展槽或附加连接器。至图1的网络计算机108、110和112的通信链路可通过藉助附件电路板连接到PCI局部总线216的调制解调器218和网络适配器220来提供。附加的PCI总线桥222和224可提供对附加的PCI局部总线226和228的接口,从这些接口附加的调制解调器或者网络适配器可以得到支持。以这种方式,数据处理系统200允许与多个网络计算机相连接。存储器映像图形适配器230和硬盘232也可以或者直接或者间接地与I/O总线212相连接,如图所示
本技术领域的人员可以理解,图2所示的硬件是可以变化的。比如,其他的外围设备,如光盘驱动器等等,也可以用来代替所示的硬件或者与其一起使用。上述的示例并不意味着对本发明进行系统结构上的限制。
图2所示的数据处理系统也可以是,例如,IBM的e-Server pSeries系统,纽约阿芒口国际商业机器公司的产品,可运行先进交互执行(AIX)操作系统或LINUX操作系统。
下面参考图3,图中示出可以应用本发明的数据处理系统的框图。数据处理系统300是客户计算机的一个示例。数据处理系统300采用外围部件互连(PCI)局部总线系统结构。虽然示出的示例采用PCI总线,但是也可以采用其他的总线结构,如加速图形端口(AGP)和工业标准体系结构(ISA)。处理器302和主存储器304通过PCI桥308与PCI局部总线306相连接。PCI桥308也可包含应用于处理器302的集成存储器控制器和高速缓冲存储器。至PCI局部总线306的附的连接,可以通过元件直接互连或通过附加电路板来实现。在上述示例中,局域网(LAN)适配器310、SCSI主机总线适配器312和扩展总线接口314通过元件直接互连连接到PCI局部总线306。与此相对,音频适配器316、图形适配器318和音频/视频适配器319通过插入扩展槽的附加电路板与PCI局部总线306相连接。扩展总线接口314可提供到键盘和鼠标适配器320、调制解调器322和附加存储器324的连接。小型计算机系统接口(SCSI)主机总线适配器312可提供到硬盘驱动器326、磁带驱动器328和CD-ROM驱动器330的连接。典型的PCI局部总线装置可以支持三个或者四个扩展槽或附加连接器。
操作系统在处理器302上运行并且用来协调和提供对图3中的数据处理系统300内的各种部件的控制。操作系统可以是市售的操作系统,如微软公司出售的Windows 2000。面向对象的编程系统,如Java,可以与操作系统配合运行并提供从在数据处理系统300上执行的程序或应用对操作系统的调用。“Java”是Sun微系统公司的商标。操作系统的指令、面向对象的操作系统、应用或程序存储在存储装置,如硬盘驱动器326中,并且装载到主存储器304由处理器302执行。
本领域的人员可以理解,图3所示的硬件可随实现而改变。其他的内部硬件或外设,如闪速ROM(或等效的非易失性存储器)或光盘驱动器等等,也可以用来代替图3所示的硬件或者与其一起使用。同样,本发明的进程也可应用到多处理器数据处理系统。
另外一个例子,数据处理系统300可以是一个独立系统,配置成为可以引导而无需依靠某种网络通信接口,不管数据处理系统300是否包含某种网络通信接口。再举一个例子,数据处理系统300可以是个人数字助理(PDA),其配置为具有ROM和/或闪速ROM存储器,用来提供存储操作系统文件和/或用户生成的数据的非易失性存储器。
图3中的示例和上述的示例并不代表对本发明的体系结构的限制。比如,数据处理系统300除了采取PDA形式之外,也可以是笔记本计算机或手持计算机。数据处理系统300也可以是信息站设备或web设备。
本发明可以提供一种装置、系统和方法来保证多处理器系统的每个运行队列包含不同线程类中的进程,每个类具有不同的优先级数,从而保证建立的使用策略可以得到遵守。对于图1的客户机108、110和112或对于服务器104或对于服务器104及客户机108、110和112两者,本发明也可以是局部性质的。因此,本发明可以驻留在计算机系统所使用的任何数据存储介质(即软盘、CD盘、硬盘、ROM、RAM等等)之上。
图4示出可由系统管理员设计的资源使用策略。如图4A所示,此资源使用策略的开发是针对一个大学中的3个系(例如物理系、化学系和数学系)共享的计算机系统(例如服务器)。根据此策略,物理系400的用户402得到60%的计算机系统CPU时间,化学系410的用户412得到30%的计算机系统CPU时间,而数学系420的用户422得到10%的计算机系统CPU时间。为了互相区别各组线程,将其标记为类。具体说,属于物理系的用户的线程标记为A类,属于化学系的用户的线程标记为B类,而属于数学系的用户的线程标记为C类。
此资源使用策略的一个附加策略是区域分布策略。此区域分布策略示于图4B。其中显示出两个区域,区域1和区域2。这一分布策略将优先级在0-14之间的所有类归类到区域1中,而将优先级在15-30之间的所有类归类到区域2中。这样,新创建的属于数学系用户的线程将落在区域1中,而属于物理系或化学系用户的线程将落在区域2中。
与现有技术中一样,生成的每个线程具有默认的优先级。此默认优先级对于所有的线程都相同。然而,当线程置于运行队列中时,其优先级根据其所属的类进行调节。例如,对A类线程的默认优先级将加上30。与此类似,对B类线程的默认优先级将加上20,而对C类线程的默认优先级将加上10。这样,运行队列中的线程的总优先级为:P总=P默认+P类。
图5示出类优先级如何影响运行队列中的线程。在图5中,处理器的优先级空间500分割为优先级数0、10、20和30。还示出A类线程520、B类线程540和C类线程560。线程的P默认分配零(0)值。于是,所有的线程都从同一优先级零(0)开始。将优先级增量ΔA 530,30加在A类线程之上,将优先级增量ΔB550,20加在B类线程之上,而将优先级增量ΔC570,10加在C类线程之上。于是,处理器对待A类线程将会优先于B类线程。与此类似,处理器对待B类线程将会优先于C类线程。
在现有技术中,在线程受到处理时,其优先级也减小。这一方案容许运行队列中的所有线程可以公平地得到处理器的注意。在本发明中也采用同一方案。即在线程受到处理时,其P默认将减小。这容许类内的线程互相公平地竞争。此外,在一类线程受到处理时,类优先级也同样地减小。例如,由于A类线程具有比B类线程和C类线程高的优先级,A类线程将在其他两类之前处理。但是,在A类线程受到处理时,A类优先级30也将减小,直到达到20或20以下。此时,A类和B类线程两者都将受到处理。两类的优先级将减小到10或10以下,到那时所有三类中的线程将受到处理。
在类优先级减小时,类可能从一个区域进入另一个区域。于是,类优先级可看作是流动的。当类中的线程受到处理时,优先级减小,而当线程未受到处理时,优先级增加,如在使用策略中所示。
图6示出共享的计算机系统的运行队列。其中假设计算机系统具有两个CPU和两个运行队列,每个运行队列都与一个CPU(即CPU0 600和CPU1 650)有联系。还假设每一类的优先级增量已经加到线程上。系统中存在三类线程。具体地说,与CPU0 600相联系的运行队列既包含A类610的线程,也包含B类620的线程。与CPU1相联系的运行队列包含C类630的线程。
在运行中,当创建一个线程时,工作负荷管理器根据其属于的用户判断线程的类,而调度器利用放置算法(比如,轮转法)将线程放置于运行队列中。当线程受到处理脱离运行队列并且新的线程放置到运行队列中时,可能出现线程按照图6所示分布到系统的场合。
图6中线程的分布并不理想,因为由系统管理员设定的使用策略(见图4A)将不会得到坚持。例如,由于C类线程是与CPU1 650相联系的运行队列中的唯一的线程,这些线程将得到50%的系统处理时间。显然,这比容许其得到的10%高得多。一种保证其一点儿都不会得到多于容许其得到的处理时间的方法是使运行队列中存在另一类线程。这将促使两类线程之间的竞争。的确,线程的理想分布是使每个运行队列中包含所有三个不同类的线程。
保证建立的使用策略得到坚持的一种方法是周期地检查每个运行队列来判断其中是否至少存在不同的两类线程(即一个优先级较高的类和一个优先级较低的类)。如不是如此,则应该在该运行队列中放置一个具有比现在存在于其中的类优先级高的不同类的线程。另外,如果尽管在运行队列中具有这样不同的两类线程,但两类中的任何一类或两类仍然得到高于容许的处理时间,那就需要在运行队列中再放置一个具有更高的类优先级的不同的类的线程。
为了检查运行队列中的所有的线程来判断其中是否每一个都包含至少两类不同的线程,需要花费很多时间并且使CPU高强度运行。结果,本发明每0.1秒检查线程的一部分以便了解其是否分布于全部运行队列中。本发明利用此前引入的区域概念(见图4B)来判断对哪一部分线程进行调查。具体说,本发明将在每一个运行队列中包括相同数目的特定区域中的线程的系统定义为良好平衡系统。如果两个A类线程、两个B类线程和两个C类线程存在于两个处理器中的每一个的运行队列中(见图6B),此系统将是平衡系统。此系统之所以是平衡系统是因为在两个运行队列中都有四个区域2中的线程和两个区域1中的线程。
如果系统不是平衡系统(即,如果一个运行队列比另一个运行队列具有更多的某一特定区域中的线程),则线程将从具有较大线程数的运行队列转移到在该区域中具有较小线程数的运行队列。应该指出,此系统是很强的动态系统。就是说,在任何时刻,一个线程可以放置到运行队列中,而一个或多个线程可以受到处理脱离运行队列,而一个类或多个类可从一个区域转移到另一个区域等。于是,因为这一动态机制,本发明在一个时候只处理一个区域,并且当系统不平衡时只有一个线程从一个运行队列中转移到另一个运行队列。
再参考图6A。当本发明检查区域2时,将会发现在该区域中有八(8)个线程,不过其全部都是在与CPU0 610相联系的运行队列中。因此,系统将被确定为不平衡的。结果,一个线程将从与CPU0相联系的运行队列转移到与CPU1相联系的运行队列,并且该过程结束。
在此场合,转移的线程是A类还是B类线程实际上没什么关系,因为两类都早在区域2中。如果系统是平衡的并且在此进程中所有的B类线程从与CPU0相联系的运行队列转移到与CPU1相联系的运行队列,则B类线程可能会启动取得大量的处理时间(因为其类优先级高于C类线程)。当发生这种情况时,其类优先级将开始减小。如果其类优先级减小到足够使其类优先级现在进入区域1,系统将会再变成为不平衡的。此时,A类线程将从一个运行队列转移到另一个运行队列以使系统重新变为平衡系统。
在使区域2平衡之后,区域1将受到检查。在此场合,将会发现系统是非平衡系统,因为所有的C类线程(请注意C类是区域1中唯一的一类)处于与CPU1相联系的运行队列中。结果,C类线程将每次转移一个直到两个运行队列都包含相同数目的C类线程。
在我们的示例中,理想的线程分布是示于图6B中的情况。在图6B中,每个运行队列都包含相同数目的各类线程。于是,假设线程既没有放置于运行队列中,也没有进行处理脱离运行队列,则系统将会永远保持平衡。如果一个类从一个区域转移到另一个区域,该类中的所有线程将会发生迁移。因此,系统将会继续保持平衡。
图7为可用来实现本发明的软件程序的流程图。当计算机系统打开或重置时,此软件程序启动(步骤700)。此程序监视每个运行队列中的每个类中的线程数。此程序做到这一点的方法是通过对运行队列每秒取样100次以便得到在每个运行队列中每个类中的平均线程数。之后,每0.1秒此过程利用线程类来判断一个运行队列最高区域中的线程数(例如区域2)平均来讲是否比另一运行队列中同一区域(即区域2)中的线程数大1.5个线程。如果是,则此系统将被认为是不平衡的。此过程将尝试通过将在该区域中具有最高线程数的运行队列中的一个线程转移到在该区域中具有最低线程数的运行队列中来平衡此系统。
如前所述,因为此系统具有很强的动态性,此过程将不能保证此系统的确是平衡的(即此过程将不能保证在每个运行队列中在该区域都存在相同数目的线程)。此外,因为这需要花费很多时间并且使CPU高强度运行来保证从所有区域来看此系统是平衡的,此过程将在此中止。
这样,此过程永远从最高区域开始。如果最高区域是不平衡的,则此过程将尝试平衡此区域并在该处中止。如果最高区域是平衡的,则此过程将会调查次高区域。每个区域都将受到调查,从最高的到最低的,直到一个运行队列的线程数比另一运行队列的中的线程数大1.5个线程。当发生这种情况时,将把具有最高线程数的运行队列的一个线程转移到具有最低线程数的运行队列中而此过程将结束。如果在所有的运行队列中所有的区域中的线程数都相等,则此过程将结束而不将任何线程从一个运行队列转移到另一个运行队列(步骤700-714)。
对本发明的上述描述的目的在于显示和描述,而并不企图包罗一切或局限于所公开的形式的本发明。对于本技术领域的人士各种改变和变形是显而易见的。本实施方式的选择和描述是为了最好地说明本发明的原理,实际应用,并且使本技术领域的其他人士理解本发明的可适应预期的各种实际利用的各种改型的各种实施方式。
Claims (14)
1.一种对多处理器系统进行负荷平衡的方法,所述系统的构成包括多个处理器运行队列,每个运行队列用于保持待处理的线程,此方法的构成包括:
对每个创建的线程分配一个优先级并且将创建的线程放置于运行队列中,分配的优先级将线程归类到一个区域中;
判断系统是否负荷不平衡,如果归类到一个运行队列中的一个区域中的线程数多于另一运行队列中的同一区域中的线程数,系统就是负荷不平衡的;以及
对系统进行负荷平衡处理,如果系统是负荷不平衡的,可通过将在该区域中具有较高线程数的运行队列中的线程转移到在该区域中具有较低线程数的运行队列中来平衡此系统。
2.如权利要求1所述的方法,其中按类来组织每个队列的线程。
3.如权利要求2所述的方法,其中根据线程所属于的多处理器系统的用户,来确定线程所属于的类。
4.如权利要求3所述的方法,其中分配的优先级是线程属于的类的优先级。
5.如权利要求4所述的方法,其中当类中的线程受到处理时,类优先级减小,而当类中的线程在容许的范围内未受到处理时,其类优先级增加。
6.如权利要求5所述的方法,其中当类优先级减小或增加时,线程可重新归类到另一个区域。
7.如权利要求6所述的方法,其中如果一个运行队列的一个区域中的线程数超过另一个运行队列的同一个区域中的线程数一个预定的数目以上,则系统是负荷不平衡的。
8.一种对多处理器系统进行负荷平衡的装置,所述系统的构成包括多个处理器运行队列,每个运行队列用于保持待处理的线程,此装置的构成包括:
用于对每个创建的线程分配一个优先级并且将创建的线程放置于运行队列中的装置,分配的优先级将线程归类到一个区域中;
用于判断系统是否负荷不平衡的装置,如果归类到一个运行队列中的一个区域中的线程数多于另一运行队列中的同一区域中的线程数,系统就是负荷不平衡的;以及
用于对系统进行负荷平衡处理的装置,如果系统是负荷不平衡的,可通过将在该区域中具有较高线程数的运行队列的线程转移到在该区域中具有较低线程数的运行队列中来平衡此系统。
9.如权利要求8所述的装置,其中按类来组织每个队列的线程。
10.如权利要求9所述的装置,其中根据线程所属于的多处理器系统的用户,来确定线程所属于的类。
11.如权利要求10所述的装置,其中分配的优先级是线程属于的类的优先级。
12.如权利要求11所述的装置,其中当类中的线程受到处理时,类优先级减小,而当类中的线程在容许的范围内未受到处理时,其类优先级增加。
13.如权利要求12所述的装置,其中当类优先级减小或增加时,线程可重新归类到另一个区域。
14.如权利要求13所述的装置,其中如果一个运行队列的一个区域中的线程数超过另一个运行队列的同一个区域中的线程数一个预定的数目以上,则系统是负荷不平衡的。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/177,410 US7080379B2 (en) | 2002-06-20 | 2002-06-20 | Multiprocessor load balancing system for prioritizing threads and assigning threads into one of a plurality of run queues based on a priority band and a current load of the run queue |
US10/177,410 | 2002-06-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1469246A CN1469246A (zh) | 2004-01-21 |
CN100552634C true CN100552634C (zh) | 2009-10-21 |
Family
ID=29734386
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN03145156.XA Expired - Fee Related CN100552634C (zh) | 2002-06-20 | 2003-06-16 | 对多处理器系统进行负荷平衡的装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7080379B2 (zh) |
JP (1) | JP3887353B2 (zh) |
CN (1) | CN100552634C (zh) |
TW (1) | TWI252432B (zh) |
Families Citing this family (75)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7003570B2 (en) * | 2001-10-05 | 2006-02-21 | Bea Systems, Inc. | System for integrating java servlets with asynchronous messages |
US6886041B2 (en) * | 2001-10-05 | 2005-04-26 | Bea Systems, Inc. | System for application server messaging with multiple dispatch pools |
JP2004171234A (ja) * | 2002-11-19 | 2004-06-17 | Toshiba Corp | マルチプロセッサシステムにおけるタスク割り付け方法、タスク割り付けプログラム及びマルチプロセッサシステム |
US20040215578A1 (en) * | 2003-04-09 | 2004-10-28 | Nokia, Inc. | Controlling usage of system resources by a network manager |
US7614056B1 (en) * | 2003-09-12 | 2009-11-03 | Sun Microsystems, Inc. | Processor specific dispatching in a heterogeneous configuration |
US7430741B2 (en) * | 2004-01-20 | 2008-09-30 | International Business Machines Corporation | Application-aware system that dynamically partitions and allocates resources on demand |
US20050216908A1 (en) * | 2004-03-25 | 2005-09-29 | Keohane Susann M | Assigning computational processes in a computer system to workload management classes |
US7657892B2 (en) * | 2004-05-20 | 2010-02-02 | Bea Systems, Inc. | System and method for application server with self-tuned threading model |
US7752629B2 (en) * | 2004-05-21 | 2010-07-06 | Bea Systems Inc. | System and method for application server with overload protection |
WO2005116833A1 (en) * | 2004-05-21 | 2005-12-08 | Computer Associates Think, Inc. | Method and apparatus for dynamic cpu resource management |
EP1769353A2 (en) * | 2004-05-21 | 2007-04-04 | Computer Associates Think, Inc. | Method and apparatus for dynamic memory resource management |
JP4855655B2 (ja) * | 2004-06-15 | 2012-01-18 | 株式会社ソニー・コンピュータエンタテインメント | 処理管理装置、コンピュータ・システム、分散処理方法及びコンピュータプログラム |
KR100460009B1 (ko) * | 2004-06-23 | 2004-12-04 | 엔에이치엔(주) | 이미지 리소스를 로딩하는 방법 및 이미지 리소스 로딩시스템 |
US20060004977A1 (en) * | 2004-06-30 | 2006-01-05 | Joefon Jann | Autonomically tuning the virtual memory subsystem of a computer operating system |
US8098676B2 (en) * | 2004-08-12 | 2012-01-17 | Intel Corporation | Techniques to utilize queues for network interface devices |
US7437581B2 (en) * | 2004-09-28 | 2008-10-14 | Intel Corporation | Method and apparatus for varying energy per instruction according to the amount of available parallelism |
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 |
US20060239194A1 (en) * | 2005-04-20 | 2006-10-26 | Chapell Christopher L | Monitoring a queue for a communication link |
US20070061805A1 (en) * | 2005-09-15 | 2007-03-15 | Brenner Larry B | Method and apparatus for improving thread posting efficiency in a multiprocessor data processing system |
US7975269B2 (en) * | 2005-09-27 | 2011-07-05 | Sony Computer Entertainment Inc. | Parallel processor methods and apparatus |
US8104033B2 (en) | 2005-09-30 | 2012-01-24 | Computer Associates Think, Inc. | Managing virtual machines based on business priorty |
US7631125B2 (en) | 2005-09-30 | 2009-12-08 | Intel Corporation | Dynamically migrating channels |
US8225313B2 (en) | 2005-10-19 | 2012-07-17 | Ca, Inc. | Object-based virtual infrastructure management |
US7624257B2 (en) * | 2005-11-30 | 2009-11-24 | International Business Machines Corporation | Digital data processing apparatus having hardware multithreading support including a register set reserved for special class threads |
US7493419B2 (en) * | 2005-12-13 | 2009-02-17 | International Business Machines Corporation | Input/output workload fingerprinting for input/output schedulers |
US7636356B1 (en) * | 2006-01-03 | 2009-12-22 | Marvell Israel (M.I.S.L.) Ltd | Processor traffic segregation for network switching and routing |
US8826280B1 (en) | 2006-03-23 | 2014-09-02 | Emc Corporation | Processing raw information for performing real-time monitoring of task queues |
US8347295B1 (en) | 2006-03-23 | 2013-01-01 | Emc Corporation | Profile-based assignment of queued tasks |
US8539493B1 (en) * | 2006-03-23 | 2013-09-17 | Emc Corporation | Configurable prioritization and aging of queued tasks |
JP4578442B2 (ja) * | 2006-06-19 | 2010-11-10 | 株式会社ニコンシステム | 検証装置、および検証プログラム |
US20080002702A1 (en) * | 2006-06-30 | 2008-01-03 | Symbol Technologies, Inc. | Systems and methods for processing data packets using a multi-core abstraction layer (MCAL) |
US20080002681A1 (en) * | 2006-06-30 | 2008-01-03 | Symbol Technologies, Inc. | Network wireless/RFID switch architecture for multi-core hardware platforms using a multi-core abstraction layer (MCAL) |
KR101286700B1 (ko) | 2006-11-06 | 2013-07-16 | 삼성전자주식회사 | 멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치및 방법 |
JP4785710B2 (ja) * | 2006-11-14 | 2011-10-05 | 富士通株式会社 | 資源に対する重要度算出方法及び装置 |
US20080148280A1 (en) * | 2006-12-13 | 2008-06-19 | Stillwell Joseph W | Apparatus, system, and method for autonomically managing multiple queues |
CN101236513B (zh) * | 2007-01-30 | 2012-07-18 | 阿里巴巴集团控股有限公司 | 一种分布式任务系统和分布式任务管理方法 |
US8024731B1 (en) * | 2007-04-25 | 2011-09-20 | Apple Inc. | Assigning priorities to threads of execution |
KR20090005921A (ko) * | 2007-07-10 | 2009-01-14 | 삼성전자주식회사 | 대칭적 다중 프로세서 시스템에서의 로드 밸런싱 방법 및장치 |
US7865631B2 (en) * | 2007-12-06 | 2011-01-04 | International Business Machines Corporation | Dynamic logical data channel assignment using time-grouped allocations |
US8266337B2 (en) * | 2007-12-06 | 2012-09-11 | International Business Machines Corporation | Dynamic logical data channel assignment using channel bitmap |
CN101227320B (zh) * | 2007-12-28 | 2013-07-31 | 中国移动通信集团浙江有限公司 | 多处理器系统负荷均衡配置方法 |
KR20100138885A (ko) | 2008-02-26 | 2010-12-31 | 인터내셔널 비지네스 머신즈 코포레이션 | 라우팅 워크로드들 및 그 계산방법 |
CN101256668B (zh) * | 2008-03-12 | 2012-09-05 | 中兴通讯股份有限公司 | 一种计算均衡的多核进行视频滤波的方法 |
US8312467B2 (en) * | 2008-05-13 | 2012-11-13 | Oracle America, Inc. | Method and system for concurrently executing an application |
CN101751293B (zh) * | 2008-12-16 | 2013-10-30 | 智邦科技股份有限公司 | 程序的线程群组管理方法 |
US8402466B2 (en) * | 2009-02-17 | 2013-03-19 | International Business Machines Corporation | Practical contention-free distributed weighted fair-share scheduler |
US9207943B2 (en) | 2009-03-17 | 2015-12-08 | Qualcomm Incorporated | Real time multithreaded scheduler and scheduling method |
US9881039B2 (en) | 2009-05-26 | 2018-01-30 | International Business Machines Corporation | Rebalancing operation using a solid state memory device |
US8245234B2 (en) * | 2009-08-10 | 2012-08-14 | Avaya Inc. | Credit scheduler for ordering the execution of tasks |
US8413161B2 (en) * | 2009-09-29 | 2013-04-02 | International Business Machines Corporation | Work queue selection on a local processor within a multiple processor architecture |
CN101840312B (zh) * | 2009-12-31 | 2012-01-11 | 创新科存储技术有限公司 | 一种用于多核处理器的raid5写数据方法及装置 |
US8904399B2 (en) * | 2010-03-15 | 2014-12-02 | Qualcomm Incorporated | System and method of executing threads at a processor |
US8413158B2 (en) | 2010-09-13 | 2013-04-02 | International Business Machines Corporation | Processor thread load balancing manager |
JP5218530B2 (ja) * | 2010-11-30 | 2013-06-26 | 富士通株式会社 | 資源に対する重要度算出方法及び装置 |
US9183047B2 (en) * | 2011-05-13 | 2015-11-10 | Samsung Electronics Co., Ltd. | Classifying requested application based on processing and response time and scheduling threads of the requested application according to a preset group |
GB2507229B (en) * | 2011-07-26 | 2014-09-10 | Ibm | Managing workloads in a multiprocessing computer system |
WO2013014767A1 (ja) | 2011-07-27 | 2013-01-31 | 富士通株式会社 | データ処理システム、およびスケジューリング方法 |
CN102841815B (zh) * | 2012-07-12 | 2014-07-09 | 北京航空航天大学 | 一种numa体系结构自适应的进程分类绑定方法 |
US9047417B2 (en) | 2012-10-29 | 2015-06-02 | Intel Corporation | NUMA aware network interface |
TWI462020B (zh) * | 2012-11-28 | 2014-11-21 | Htc Corp | 執行緒管理方法及其電子裝置 |
US9264486B2 (en) * | 2012-12-07 | 2016-02-16 | Bank Of America Corporation | Work load management platform |
US20150205633A1 (en) * | 2013-05-24 | 2015-07-23 | Google Inc. | Task management in single-threaded environments |
US9715406B2 (en) | 2013-06-14 | 2017-07-25 | Microsoft Technology Licensing, Llc | Assigning and scheduling threads for multiple prioritized queues |
US10684973B2 (en) | 2013-08-30 | 2020-06-16 | Intel Corporation | NUMA node peripheral switch |
TWI552079B (zh) * | 2013-09-18 | 2016-10-01 | Chunghwa Telecom Co Ltd | Intelligent multi - layer job assignment system and its |
US9853714B2 (en) | 2013-10-11 | 2017-12-26 | Ge Aviation Systems Llc | Data communications network for an aircraft |
US9749256B2 (en) * | 2013-10-11 | 2017-08-29 | Ge Aviation Systems Llc | Data communications network for an aircraft |
US10297347B2 (en) * | 2015-04-06 | 2019-05-21 | Preventice Solutions, Inc. | Adverse event prioritization and handling |
JP6341192B2 (ja) * | 2015-12-22 | 2018-06-13 | カシオ計算機株式会社 | 情報処理装置、制御方法及びプログラム |
DE102016203965A1 (de) * | 2016-03-10 | 2017-09-14 | Robert Bosch Gmbh | Überwachung eines Rechensystems |
CN106802826B (zh) * | 2016-12-23 | 2021-06-18 | 中国银联股份有限公司 | 一种基于线程池的业务处理方法及装置 |
CN110096344B (zh) * | 2018-01-29 | 2024-09-20 | 北京京东尚科信息技术有限公司 | 任务管理方法、系统、服务器集群和计算机可读介质 |
US10942768B2 (en) * | 2018-08-29 | 2021-03-09 | Red Hat, Inc. | Computing task scheduling in a computer system utilizing efficient attributed priority queues |
CN109992359A (zh) * | 2019-03-28 | 2019-07-09 | 深圳市创联时代科技有限公司 | 一种事务调度方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3658420B2 (ja) | 1994-04-14 | 2005-06-08 | 株式会社日立製作所 | 分散処理システム |
US5774668A (en) * | 1995-06-07 | 1998-06-30 | Microsoft Corporation | System for on-line service in which gateway computer uses service map which includes loading condition of servers broadcasted by application servers for load balancing |
US6105053A (en) * | 1995-06-23 | 2000-08-15 | Emc Corporation | Operating system for a non-uniform memory access multiprocessor system |
US5680539A (en) * | 1995-07-11 | 1997-10-21 | Dell Usa, L.P. | Disk array system which performs data reconstruction with dynamic load balancing and user-specified disk array bandwidth for reconstruction operation to maintain predictable degradation |
US6289369B1 (en) * | 1998-08-25 | 2001-09-11 | International Business Machines Corporation | Affinity, locality, and load balancing in scheduling user program-level threads for execution by a computer system |
US6735769B1 (en) | 2000-07-13 | 2004-05-11 | International Business Machines Corporation | Apparatus and method for initial load balancing in a multiple run queue system |
-
2002
- 2002-06-20 US US10/177,410 patent/US7080379B2/en not_active Expired - Fee Related
-
2003
- 2003-06-16 CN CN03145156.XA patent/CN100552634C/zh not_active Expired - Fee Related
- 2003-06-17 TW TW092116391A patent/TWI252432B/zh not_active IP Right Cessation
- 2003-06-18 JP JP2003174083A patent/JP3887353B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
TW200411566A (en) | 2004-07-01 |
JP2004030663A (ja) | 2004-01-29 |
US20030236815A1 (en) | 2003-12-25 |
CN1469246A (zh) | 2004-01-21 |
JP3887353B2 (ja) | 2007-02-28 |
TWI252432B (en) | 2006-04-01 |
US7080379B2 (en) | 2006-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100552634C (zh) | 对多处理器系统进行负荷平衡的装置和方法 | |
US6947987B2 (en) | Method and apparatus for allocating network resources and changing the allocation based on dynamic workload changes | |
CN100489789C (zh) | 响应分区工作负荷动态再分区计算机系统的装置和方法 | |
US8631410B2 (en) | Scheduling jobs in a cluster having multiple computing nodes by constructing multiple sub-cluster based on entry and exit rules | |
US8261281B2 (en) | Optimizing allocation of resources on partitions of a data processing system | |
US10108458B2 (en) | System and method for scheduling jobs in distributed datacenters | |
Patel et al. | Survey on resource allocation strategies in cloud computing | |
US20060069761A1 (en) | System and method for load balancing virtual machines in a computer network | |
US9172628B2 (en) | Dynamic distribution of nodes on a multi-node computer system | |
Yu et al. | Joint optimization of service request routing and instance placement in the microservice system | |
US20100042723A1 (en) | Method and system for managing load in a network | |
US8381220B2 (en) | Job scheduling and distribution on a partitioned compute tree based on job priority and network utilization | |
US7539995B2 (en) | Method and apparatus for managing an event processing system | |
CN112181620A (zh) | 云环境下虚拟机服务能力感知的大数据工作流调度方法 | |
Hwang et al. | Resource allocation policies for loosely coupled applications in heterogeneous computing systems | |
Stavrinides et al. | Orchestrating bag-of-tasks applications with dynamically spawned tasks in a distributed environment | |
CN114721824A (zh) | 一种资源分配方法、介质以及电子设备 | |
CN102098223B (zh) | 节点设备调度方法、装置和系统 | |
WO2021095943A1 (ko) | 서비스 프로파일을 고려한 컨테이너의 배치 방법 | |
JPH01283663A (ja) | 計算機システム | |
Ramachandra et al. | Task Clustering and Scheduling in Fault Tolerant Cloud Using Dense Neural Network | |
Kaur et al. | Challenges to task and workflow scheduling in cloud environment | |
CN111858051B (zh) | 一种适合边缘计算环境的实时动态调度方法、系统和介质 | |
Feng et al. | A deadline and budget constrained cost-time optimization algorithm for scheduling dependent tasks in grid computing | |
Zhang et al. | A distributed computing framework for All-to-All comparison problems |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20091021 Termination date: 20100616 |