CN1664804A - 减少远程存储器对多节点计算机中共享数据的访问的机构 - Google Patents
减少远程存储器对多节点计算机中共享数据的访问的机构 Download PDFInfo
- Publication number
- CN1664804A CN1664804A CN200510053019.3A CN200510053019A CN1664804A CN 1664804 A CN1664804 A CN 1664804A CN 200510053019 A CN200510053019 A CN 200510053019A CN 1664804 A CN1664804 A CN 1664804A
- Authority
- CN
- China
- Prior art keywords
- thread
- node
- processor
- square frame
- memory
- 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
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/5033—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 data affinity
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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
- 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
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种装置、方法和程序产品,用于识别和分组具有相互依赖的数据访问需要的线程。本发明的优选实施例使用两种不同的结构来实现这种分组。本发明公开了一种存储器亲和组(MAG)。所述MAG构造成使得多个线程能够与同一节点相关联而不用预先知道那些线程将被涉及在所述关联中,并且不用任何对于它们相关联的特定节点的控制。也公开了一种逻辑节点构造。所述逻辑节点构造使得多个线程能够与相同的指定节点相关联而不用预先知道在所述关联中将涉及那些线程。虽然逻辑节点不明确地识别包括所述系统的基础物理节点,但是它们提供了一种手段,用于将特定线程与同一节点相关联,将其他线程与其他节点相关联。
Description
技术领域
本发明涉及操作系统中的作业/线程处理,具体涉及当访问共享数据时如何组织作业和线程以最佳地利用存储器资源。
背景技术
计算机系统广泛地用于存储和管理数据。数据存储在计算机系统存储器中,并且由在计算机系统的处理器上执行的计算机系统程序管理。如所公知,处理器经常被当作计算机系统的“头脑”,因为它是在计算机系统中执行计算机系统的程序的组件,使得计算机系统可以进行实际的工作。存储器用于保存正在执行的计算机程序,并且用于保存正在由执行计算机程序的处理器访问的数据。
为了具有竞争性,计算机系统的设计者不断努力来使得计算机系统更强大,同时保持或降低计算机系统的大小。一种普通手段是通过提高所使用的处理器的数量来提高计算机系统的整个处理能力。为了获得制造效率,处理器和存储器经常被封装在一起以形成所谓的节点,计算机系统包括一个或多个这样的节点。在这些多节点计算机系统中,任何处理器可以访问在任何节点上的存储器,但是处理器一般可以比它可以访问在任何其他节点上的存储器(远程访问)更有效地访问在其本身节点上的存储器(本地访问)。
计算机程序包括由计算机系统的一个或多个处理器执行的一系列指令。通过执行这些指令,就说处理器执行计算机程序。操作系统(主要负责操作计算机系统以获得其他程序的益处的程序)通过使用作业(有时称为任务或进程)控制这些程序的执行。多数处理器仅仅可以一次执行一个指令流,但是因为它们操作得很快,它们看起来同时运行许多作业并且服务许多用户。所述计算机操作系统在运行时向每个作业提供一个“时机(turn)”,然后要求所述作业在另一个作业获得时机的同时等待。在作业在进行(例如访问辅助存储器)之前需要等待某事发生或可以获得多个处理器的情况下,作业可以建立线程(有时称为子进程或子任务)来异步地继续或加速处理。还没有建立任何线程的作业本身可以被当作具有单个线程。因此,可以说作业由一个或多个线程组成。
从节点的角度来看,操作系统可以分配线程以便以任意方式来执行。例如,可以选择一个作业的线程来在给定的节点上执行,同时可以选择另一个作业的线程来在不同的节点上执行。类似地,来自同一作业的线程可以在不同节点上执行,并且也可以选择被选择来在给定节点上执行的线程在终止之前在一个或多个其他节点上执行。虽然这种灵活性在某些方面是有益的,但是从数据访问角度来看是有问题的。如上所述,节点由处理器和存储器组成,并且处理器可以比在另一个节点上更有效地访问在其本身节点上的存储器。因此,为了有效地执行,操作系统必须保证每个线程访问在它正在其上执行的同一节点上的存储器中的其数据。
操作系统解决这个问题的一种方式是通过将每个线程与一个节点相关联,所述线程对所述节点具有执行和访问数据的偏好。然后,当在执行给定的线程的时间,操作系统只要可能就选择在其偏好的节点上的处理器。类似地,当数据需要以线程的名义置于存储器中的时候,只要可能就选择在其偏好节点上的存储器。这种手段一般有益于最小化远程存储器访问,只要由执行的线程进行的工作在计算机系统的各节点间得以平衡。
具有一个或多个节点的计算机系统也可以被划分为两个或多个逻辑分离的系统。一个逻辑分区可以被分配到处理器和存储器而与它们所属的节点无关。而且,由于配置改变或容量升级或降级,处理器和/或存储器可以动态地添加到所述分区和/或计算机系统或从所述分区和/或计算机系统中去除。与在计算机系统内本地对远程存储器访问有关的效率问题也适用于每个逻辑分区内。在本说明书中,术语系统用于指示整个非分区的计算机系统或计算机系统的逻辑分区。
虽然将线程与偏好节点相关联的现有技术有益于最小化远程存储器访问,但是它不处理对共享数据的存储器访问的频发问题。共享数据访问是这样的,其中来自相同或不同作业的不同的线程需要访问同一信息。数据将在一些节点上的存储器中(通常是与首先引用它的线程相关联的节点),但是除非引用它的所有线程与同一节点相关联,与其他节点相关联的那些线程将不太有效地访问它。共享的数据访问是很普通的,使得容易看到对于共享数据的低效的多节点存储器访问是如何严重的问题。
不使用用于最小化对于共享数据的远程存储器访问的机构,计算机系统性能将继续缺少由多节点系统提供的可能承诺。
发明内容
本发明涉及一种装置、方法和程序产品,用于识别和分组具有相互依赖的数据访问需求的线程。
本发明的优选实施例使用两种不同的结构来实现这种分组。第一种是存储器亲和组(affinity),它使得多个线程能够与同一节点相关联而不预先知道哪些线程将被涉及在所述关联中,并且没有对于它们相关联的特定节点的任何控制。第二种是逻辑节点,它使得多个线程能够与同一特定节点相关联而不预先知道哪些线程将被涉及在所述关联中。虽然逻辑节点不明显地识别包括所述系统的基础物理节点,但是它们提供了将特定线程与同一节点相关联和将其他线程与其他节点相关联的手段。
附图说明
图1A是示出能够支持本发明的优选实施例的计算环境的方框图。
图1B是示出能够支持本发明的优选实施例的替代计算环境的方框图。
图2是示出本发明的优选实施例的核心服务(Kernel Service)的扩展视图的方框图。
图3A和3B是示出用于执行优选实施例的线程建立机构的突出处理的步骤的流程图。
图4是示出用于将线程与亲和组去关联的、在优选实施例的线程建立机构内的突出步骤的流程图。
图5是示出用于使得其他系统组件可以获得存储器亲和组信息的、在优选实施例的线程建立机构内的突出步骤的流程图。
图6是示出用于初始化在优选实施例中使用的各种权重以实现核心组件平衡通告(KCBN)的、在初始程序负荷(IPL)内的突出步骤的流程图。
图7-11、14和15是示出用于响应于在系统内的配置改变而调整各种KCBN权重的、在优选实施例中使用的突出步骤的流程图。
图11-14和16-25是示出用于执行工作重新分配的、在优选实施例的监视处理器和节点平衡器中使用的突出步骤的流程图。
图26-28是示出与优选实施例的线程建立机构如何执行本地节点分配相关联的突出步骤的流程图。
图29A-31示出了在本发明的优选实施例中使用的数据结构。
具体实施方式
现在转向附图,图1A示出了在本发明的优选实施例的计算装置中使用的一些操作组件。计算机装置100是增强的IBM iSeries计算机系统,不过也可以使用其他计算机。所描述的组件包括处理节点130、网络接口125、用户界面150和海量存储器155。优选实施例的计算机装置100包括四个处理节点,不过可以使用更少或更多的节点。网络接口125用于与其他计算机系统通信。用户界面150用于接受命令和将信息转送到计算机系统100的一个或多个用户。
也示出了节点130之一的分解图(即节点131)。节点131包括处理器132和存储器134。在优选实施例中,每个节点可以包括多达8个处理器132,不过包括更多或更少处理器的其他配置也是可能的。处理器132用于执行在存储器134中存储的线程,不过应当明白,在某些时间,这些线程可以部分地或全部驻留在海量存储器155中。处理器可以访问在任何节点上的存储器,虽然它可以更有效地访问在其本身节点上的存储器。
图1B示出了优选实施例的计算环境的更详细的视图。如图所示,优选实施例能够在逻辑分区的计算机系统上操作。在这种情况下,核心服务137的一个实例被配置为驻留在每个分区中(在图1B上被示出为系统1-3)。优选实施例的机构将每个分区看作完整的系统。因此,在此使用的术语系统应当被解释为指示非分区的计算机装置或在计算机装置内的单个逻辑分区。系统可以使用整个计算机装置的少于全部的节点,就像对于系统1和2的情况那样。也可能一个节点支持多个系统,这是对于节点1和2的情况。优选实施例的许多机构涉及分配和调整如何在一个系统的多个节点上分布工作(线程)。因此,当一个系统的配置改变时,优选实施例的机构确定是否需要工作分布调整,如果是肯定的,则执行那些调整。
每个系统被示出为包括线程135和操作系统136。核心服务137被集成到操作系统136中。核心服务向其他操作系统实体和其他程序提供操作系统级服务。应当注意,虽然优选实施例提供了重新平衡需要的核心服务通告,但本发明不限于核心或操作系统级服务,也可以被应用到能够利用重新平衡通告优点的所有服务。
作为最后的预备事项,应当明白,虽然在此在计算机装置环境中描述本发明的实施例,但是诸如核心服务137的某些程序机构能够以程序产品形式被分布。当然,可以使用不同类型信号承载媒体来分布程序产品,所述信号承载媒体包括但是不限于:可记录类型媒体(诸如软盘和CD-ROM),传输型媒体(诸如数字和模拟通信链路)。
图2是优选实施例的核心服务137的一些方面的分解图。如图所示,核心服务137包括线程管理器200、节点管理器220和配置管理器240。线程管理器200还被示出为包括线程建立机构(TCM)205、线程分派机构(TDM)215和线程存储器管理器(TMM)217。TCM 205在优选实施例用来建立可执行的线程以及必要的线程控制结构。作为建立进程的一部分,本地节点也被TCM 205分配到这些可执行的线程。本地节点分配是重要的,因为TDM215偏向于尽可能在它们的所分配的本地节点上执行线程,并且TMM偏向于尽可能从它们的本地节点分配存储器。这种偏向的含义与整个系统利用和资源分配相关。在伴随附图26-28的文本中描述了TCM 205的本地节点分配方面。
在线程已经由TCM 205建立和分配到本地节点后,它们被TDM 215分派来执行。一般而言,可以在在系统的各种节点上的多个处理器中的任何一个上执行线程。TCM 205是在优选实施例内的实体,它负责分组线程以便最佳地利用可用的处理器和存储器资源。在以下图3A-5的讨论中提供了关于TCM 205的功能和内部工作的其他细节。
在附图2中也示出了节点管理器220。节点管理器220——它本身由三个离散的实体组成——用于优选实施例中以确定在系统中的各种节点的相对工作负荷。节点管理器220被另外地用于优选实施例来识别和校正在系统内的工作负荷不平衡,并且向其他核心服务通告节点工作负荷的改变,以便这些服务可以因此而自我调整。在本专利申请的工作重新分配部分(图11-14和16-25)中说明了不平衡识别和处理,而在伴随附图7-11、14和15的文本中描述了核心组件平衡通告。
在节点管理器220内示出了分派处理器230、监视处理器(WDH)225和节点平衡器235。这三个实体在优选实施例的系统内来作为异步线程工作。本领域内技术人员明白这些线程的异步特性表示对于原子数据访问(atomicdata access)的需要。因此,虽然在此偶尔提及原子性问题,但是这个专利申请不包括在基础原子性机构的大量处理,所述基础原子性机构如所述是本领域内的技术人员公知的。如其名称所示,分派处理器230负责处理来自TDM215的分派请求。因为线程持续被分派,因此分派处理器230很频繁地运行。关于这一点,其责任之一是在本地节点的基础上累积处理器执行周期计数。(由分派处理器230使用来获得这个周期信息的精确手段对于明白优选实施例不重要,因此在此不说明它。)被调度来每秒执行的WDH 225每7秒获得这些累加的周期。这7秒的间隔在此被称为当前权重间隔。在获得所述信息后,WDH 225对于最后变为当前权重的信息执行各种计算。(在后面说明在优选实施例内的当前权重的使用。)在某些时间,WDH 225每当当前权重间隔期满时也负责通告节点平衡器。节点平衡器235使用这个通告来确定是否需要核心组件平衡通告。
在图2中也示出了配置管理器240。配置管理器240是优选实施例中的实体,它以信号向节点平衡器235通告配置的改变。节点平衡器235然后考虑配置的改变,并且采取与工作分布和核心组件平衡通告相关的适当行动。配置改变的示例包括增加或减少系统上的处理器或存储器的数量。
根据存储器亲和性来分组线程
本发明提供了这样的优点:为了允许对于用于多个线程的共享数据的本地访问而将两个或多个线程分组到一个存储器亲和组(MAG)中。由此,通过允许具有相互依赖的数据访问需要的线程在同一节点上执行,来实现可归因于本地存储器访问的性能增益。在优选实施例中,独立地或根据作业来在MAG中放置线程。如果根据作业来在MAG内放置,则给定作业的所有线程全部被放置在同一MAG中。但是,本领域内技术人员明白存在替代方式。例如,有可能在两个级上指定MAG参与,所述两个级的一个指定覆盖另一个。
图3A-5在此用于描述本发明的存储器亲和分组方面。在优选实施例中,MAG确定和逻辑节点分配发生在一个执行的线程请求建立另一个线程的时间。图3A在此用于描述负责与请求的线程的直接交互的TCM 205的一部分。这种交互的结果最后导致线程建立,如在与图3B相关联的文本中所述。首先转向图3A,方框300示出了接收请求以建立线程。接着,在方框302中,TCM205确定线程建立请求是否指定了是否期望参与MAG。在优选实施例中,在TCCM 205访问的永久线程建立属性(TCA)内指定了对于MAG参与的期望。如果对于这个线程期望MAG参与,则TCM 205接着确定TCA是否指定了特定的MAG[方框304]。在优选实施例中,通过使用MAG标识符(即组ID)来进行这个指定。如果在TCA内指定了组ID,则TCM 205将兑现所述请求,并且简单地建立具有所指定的组ID的线程[方框308]。如果TCA还没有指定的组ID,则它将被分配下一个可以获得的组ID(并且其后这是将由TCA使用的组)[306]。
如果在方框302中TCM 205确定未请求参与MAG,则TCM 205将接着确定在TCA中是否已经指定了“逻辑节点”的使用[方框310]。在优选实施例中,与物理节点不同的逻辑节点用于使得请求的线程可以指定所建立的线程被分配到相同或不同的本地节点。作为线程的实际本地节点的物理节点对于请求线程被隐藏。这种手段具有优点:允许对于请求者的逻辑节点指定,同时保留使用具有不同标识符的物理节点来兑现请求的灵活性。因此,逻辑节点的指定具有指定线程的本地节点的效果。
如果在方框310中已经指定了逻辑节点的使用,则TCM 205确定TCA是否包括特定逻辑节点的指定[方框312]。如果是否定的,则TCM 205分配下一个可以获得的逻辑节点ID,并且将其存储在TCA中[方框314]。最后,TCM 205使用在TCA中指定的逻辑节点ID或新分配的逻辑节点ID来进行建立线程[方框316]。现在返回方框310,如果TCM 205从TCA的查看确定未指定逻辑节点的使用,则TCM 205将在方框318中确定TCA是否包括参考线程的标识。参考线程与要建立的线程相比较是这样的:其中期望存储器亲和性。在优选实施例中,通过在TCA中包括线程ID来实现对于参考线程的指定。如果还未指定参考线程ID,则TCM 205建立没有逻辑节点或MAGID的线程[方框320]。这将具有允许TCM 205选择用于所请求的线程的本地节点的效果。
如果已经指定了参考线程,则TCM 205将接着确定所指定的参考线程是否已经与MAG相关联[方框322]。如果是肯定的,则TCM 205将提取所述参考线程的MAG ID[方框324],并且使用所指定的MAG ID来进行建立所述线程[326]。如果在方框322中TCM 205确定所述参考线程还未与MAG相关联,则TCM 205确定所述参考线程是否具有被分配给它的逻辑节点。如果是肯定的,则TCM 205提取参考线程的逻辑节点[方框330],并且使用指定的逻辑节点来建立所述线程[方框332]。如果在方框328中TCM 205确定事实上还没有向参考线程分配逻辑节点,则TCM 205将分配下一个可用的MAG ID[方框334],并且从参考线程提取本地节点[方框336]。一旦完成了这一点,则一个新的MAG被建立和增加到MAG列表,并且参考线程也被增加到MAG[方框338]。TCM 205然后使用所指定的MAG ID来建立线程[方框340]。
图3B示出了在优选实施例的TCM 205中使用来实际执行线程建立的步骤。存在到图3B的逻辑的三个进入点。可以使用MAG ID来作为输入[方框354]、使用逻辑节点ID来作为输入[方框352]或不指定MAG ID或逻辑节点ID来建立一个线程[方框350]。
如果TCM 205通过方框350进入图3B的逻辑,则TCM 205将进行确定用于所述线程的本地节点[方框356]。如上所述,线程的本地节点是这样的节点,在其上,线程只要可能就被分派,并且本地节点的存储器在可能时以线程的名义被分配。在进行本地节点确定中,系统考虑到几个方面,包括当前和期望的工作负荷。在与附图26-28相关联的文本中提供了关于本地节点确定的细节。TCM 205然后进行建立用于所述线程的核心线程结构[方框372]。在优选实施例中,使用核心线程结构来表示线程。因此,建立核心线程结构与建立线程是同义的。TCM 205接着确定近期建立的线程是否是MAG的成员。在这部分说明中的工作假设是线程建立请求不包括MAG或逻辑节点ID的指定(参见上面方框350的讨论)。因此,确定方框380和384的处理导致为否,这使得TCM 205在方框388终止处理。此处,已经建立和向本地节点分配了所请求的线程。
如果TCM 205通过方框352进入图3B的逻辑,则TCM 205将指定的逻辑节点转换为物理节点,于是,所述物理节点是所述线程的本地节点。在优选实施例中,使用一种确定算法来保持在给定的逻辑节点和给定的物理节点之间的一致的关联。但是,应当注意,可以使用其他映射手段。方框372和380的处理与上述的相同。但是,在这种情况下,已经指定了逻辑节点ID,这使得TCM 205将线程标为不可移动的[方框386],表示不能改变其本地节点(参见下面的工作重新分配部分)。这样做是用于兑现请求线程对特定的逻辑节点的指定。
如果TCM 205通过方框354来进入图3B的逻辑,则TCM 205将首先试图找到与该组ID相关联的MAG[方框360]。在优选实施例中,通过一个组对象来表示每个MAG,并且每个组对象包括组ID、MAG的本地节点和成员线程的列表。所述对象被链接在一起来形成MAG的列表。TCM 205确定通过遍历MAG的列表是否找到一个组ID匹配[方框362]。如果找到匹配[方框362],则TCM 205在方框372建立核心线程结构之前从组对象提取用于MAG的本地节点[方框364]。
现在返回处理方框362,如果在MAG的列表中未找到匹配,则TCM 205需要确定要建立的线程和MAG的本地节点。TCM 205在方框370进行确定这个线程的本地节点。(如上所述,在与图26-28相关联的文本中更详细地解释本地节点确定)。一旦确定了本地节点,则TCM 205建立新的MAG(即组对象)并且在MAG中存储本地节点和组ID[方框378],并且向所述列表增加组对象[方框374]。使用被加到所述列表的新MAG,然后建立线程(即核心线程结构)[方框372]。
如上所述,一旦已经建立了核心线程结构,则TCM 205确定刚刚建立的线程是否是MAG成员。在此,在这个说明部分中,所述线程是MAG的成员。因此,TCM 205在方框382进行向MAG加上线程。在优选实施例中,这是通过向MAG的线程列表增加所述线程来实现的。
图4示出了在优选实施例中使用来在线程终止时处理MAG管理的突出步骤。当在优选实施例中线程终止时,如果它是MAG的一个成员则它具有从所述MAG去除其本身的责任。因此,如果在方框405终止的线程确定它不是MAG的一部分,则正常线程终止处理简单地继续[方框417]。如果所述线程在方框405中确定它是MAG的一个成员,则所述线程从所述MAG的线程列表去除其本身[方框410]。如果终止的线程不是在MAG中的最后线程[方框419],则终止处理再次简单地继续。但是,如果终止的线程是在MAG中的最后线程[方框419],则在方框421从MAG列表去除所述MAG。然后,所述MAG本身在方框417中正常终止处理继续之前在方框423被破坏。
MAG管理的另一个方面是在其中MAG的存在非常短暂的环境(其中MAG进出的环境)中的、关于MAG的表面信息。图5示出了在优选实施例中用于实现这个任务的步骤。当接收到信息请求[方框500]时,首先试图定位对于其寻找信息的MAG[方框505]。如果在MAG列表中未找到相关联的MAG,则在方框535通告请求者,然后正常处理在方框530继续。如果找到了MAG,则在方框520提供所请求的信息。处理然后继续[方框530]。
核心组件平衡通告
本专利申请的这个部分与核心组件平衡通告相关。如上所述,优选实施例的机构操作来最佳地平衡在系统上的整个工作负荷。与平衡相关联是用以向其他核心组件(即服务)通告对于工作分配的改变以便那些组件可以采取适当的步骤的需要。为了接收通告,必须向节点平衡器235注册一个组件。节点平衡器235具有对于图31所示的组件注册表的访问。在优选实施例中使用的注册表逻辑上显示未链接的列表,并且在所述注册表中每个元素包括组件名称、组件方法和指向下一个元素的指针。所述组件方法被建立来在通告时由节点平衡器235调用。也应当注意,虽然优选实施例在操作系统服务中成员的核心服务上操作,但是本发明的应用不限于核心或操作系统服务,也可应用到可以从在系统内的工作分配的改变的通告受益的任何类型的组件或服务。
系统IPL
首先应当注意,虽然在此在系统IPL部分中引入了几个优选实施例概念,但是这些概念中的许多(即,当前权重、过渡权重、权重差门限和起始权重)的全面解释直到讨论了整个上下文未被提供。在与图7-9相关联的文本中讨论了当前权重、过渡权重和权重差概念,结合图26-28的讨论来讨论了起始权重概念。采用这种手段是因为可以经由在后面的段落中提供的上下文来实现更好的理解。
现在参见图6,每次引导系统时——这可以在任何时间发生——调用节点平衡器235。节点平衡器235将节点管理器状态(见图29A的2902)设置为“当前权重”[方框605]并且将所有的存储区域初始化为零(见图29A-31的2904-3100)[方框608]。节点平衡器235建立一组权重。这些权重——它们是在本地节点基础上被建立的——在优选实施例中被使用来管理在系统上的工作分配。被建立的第一权重是所谓的目标权重。用于每个节点的目标权重表示对于那个给定节点的工作的期望份额。优选实施例的机构的目的是与各种目标权重成比例地在整个系统中分配工作。图6的方框610引用图10A,图10A描述了目标权重计算。在本专利申请的配置改变部分中详细地解释了图10A。
在从图10A的逻辑返回后,起始和当前权重2930和2906被设置到目标权重[方框625]。对于每个节点,其当前和过渡权重被设置为等于在当前KCBN集中的目标权重(见图30的3015)[方框635]。在与图7-9相关联的文本中详细说明了过渡权重、当前权重和目标权重的互相作用。起始权重与本地节点分配相关,在伴随附图26-28的文本中描述了本地节点分配。上述所有处理必须发生在IPL处理的剩余部分之前[方框640],IPL处理的剩余部分包括通过操作系统136来分派线程和启动本地节点运动。另外,它可以包括基于目标权重的操作系统/核心资源的节点分布。IPL处理在方框645结束。
配置改变
如在随后的段落中更详细所述,通过在节点基础上对于系统可用的处理器和存储器来驱动目标权重。对于每个系统,在那个特定系统的建造(bringup)期间建立目标权重。它们不改变,除非/直到在系统中发生配置改变。请读者在此假定已经发生了配置改变。这种改变由图7的方框700表示。所述改变的细节对于优选实施例的说明不重要,但是这样的改变的一个示例可以是系统的重新配置以利用一个节点的两个处理器而不是三个。当节点平衡器235接收到配置改变的通告时[方框700],节点平衡器235获取当前权重的拷贝[方框710]。
当前权重表示在系统内工作的实际分配。在图10C和10D上示出了在优选实施例中用于获得当前权重的机构。在图10C中采用的第一步骤是提取当前权重标识符(CWID)[方框1048],其后跟随提取当前权重间隔编号(CWIN)[方框1049]。当前权重仅仅对于一个间隔有效,其后,它们过期并且必须根据最近的间隔重新计算。CWID 2911包括当前权重对其有效的间隔编号。如果CWID 2911等于CWIN 2908,则当前权重有效;如果是否定的,则当前权重过期并且必须重新被计算。简短地参见图29A,其中示出了与当前权重处理相关的信息。与CWID 2911和CWIN 2908一起,示出了当前权重调用计数(CWIC)2910和SET0和SET1。每个集(set)包括分派器承诺百分比累加器(DCPA)和近期执行的周期计数(RECC)。CWIC 2910用于确定CWI何时已经过期。DCPA信息与优选实施例的工作重新分配和本地节点分配方面相关,因此与那个讨论相结合地被说明。在图29A上也示出了当前权重2906和DCP 2907。在优选实施例的这个方面中——现在说明的KCBN逻辑——使用当前权重2906,而在优选实施例的工作重新分配和本地节点分配方面中使用DCP 2907。
现在返回图10C,在方框1049中提取CWIN 2908后,节点平衡器235首先确定CWID 2911是否等于CWIN 2908。如果它们相等,则节点平衡器235进行到图10D的方框1061(在随后的段落中说明这个处理)。如果它们不相等,则节点平衡器235然后测试CWIN 2908以确定它是奇数还是偶数[方框1050]。如果是奇数,则从SET1提取RECC[方框1051]和DCPA[方框1054](见图29A),但是如果CWIN 2908是偶数,则从SET0提取RECC[方框1052]和DCPA[方框1056]。如上所述,分配处理器230很频繁地运行,并且在本地节点基础上累加处理器执行周期来作为其函数部分。然后,这些周期计数和DCP被监视处理器225获得并在某个CWI的结尾基于节点存储在RECC和DCPA中。监视处理器225也递增CWIN,在有效和无效之间触发所述集,反之亦然(这在图11和图14的讨论中详细被讨论)。节点平衡器235然后再次提取CWIN 2908[方框1058],并且确定它自前一次提取后是否已经改变[方框1062]。原子性是一个问题,因为当提取当前RECC和DCPA时CWI有可能已经过期。因此,这些步骤是保证从有效集提取RECC和DCPA信息所必需的。如果CWIN 2908已经改变,则上述的处理重复(见图10D的方框1062和1063),直到节点平衡器235确定CWIN 2908未改变。
现在移动到图10D,当节点平衡器235确定CWIN 2908从前一次提取未改变时[方框1062],节点平衡器235通过将每个节点的RECC除以整个RECC来计算用于每个节点的当前权重[方框1064]。这产生了由每个节点实际执行的当前工作的比例,因此,它们表示整个工作负荷中由每个本地节点承载的实际份额。所述当前权重然后被存储在当前权重集2906中,并且DCP被存储在图29的DCP集2907中。一旦计算和存储了当前权重,则CWID 2911被设置为等于被提取的CWIN。然后从当前权重集2906提取当前权重以返回到图10C和10D的逻辑的调用器[方框1066]。再次为了将DCP返回图10C和10D的逻辑的调用器,DCP也在方框1070被从DCP 2907提取。最后,CWIN 2908再次在方框1072被提取,并且在方框1074相对于先前提取的版本被测试。如果两个值不同,则通过在图10C的方框1057继续来重复处理。
现在返回图7,节点平衡器235将接着确定新的目标权重[方框715]。当然,在此的假设是由于配置改变而已经改变了目标权重。在图10A的第一步骤中[方框1002],对于每个节点确定在系统内处理器的数量和存储量。在优选实施例中,这个信息在系统建造期间被存储在基于节点的数据结构中(见图30的3015和3020)。请读者回忆优选实施例的节点可以具有零个或更多的处理器。然后在方框1004确定在系统上的处理器的总数和存储的总量。一旦确定了节点总数,则将识别目标权重的无效集(即如果TWMN 2920是奇数则为SET0,如果TWMN 2920是偶数则为SET1)。将使用无效集来计算目标权重的新集(即当它们改变时)。然后,当递增TWMN 2920时,这将具有改变那个集有效的效果。
一旦识别了目标权重的无效集,则节点平衡器235接着确定所述系统是否被配置了专用或共享的处理器。如果所述系统是非分区的计算机装置,则它的处理器按照定义是专用的,因为没有它们可能共享的其他系统(如在图1A中那样)。但是,作为一个逻辑分区的系统可以使用共享或专用的处理器。简短地参见图1B,一个节点跨越多个分区的事实不意味着所述分组是所述节点上共享多个处理器。可以在多个分区之间共享在给定的节点上的多个处理器,或者可以由一个或多个专用处理器来支持所述多个分区。具有专用的多个处理器的一个分区专用那些处理器直到它被通告配置改变的时候。具有共享处理器的分区可以动态地被提供在计算机装置上的任何可用的处理器的使用而没有任何这样的通告。节点平衡器235可以通过配置管理器240来获得系统的处理器的特性。如果系统使用共享处理器,则在无效集中的每个节点的目标权重被使得等于系统可以获得的在那个节点上存储量与在所有节点上系统可以获得的存储总量的比例[方框1006]。TWMN 2920然后在方框1020递增,这具有将无效目标权重集改变为有效目标权重集的效果。
如果系统不使用共享的处理器[方框1008],则节点平衡器235确定系统是否具有带有处理器和存储器的任何节点[方框1012]。确定为否(即没有带有处理器和存储器的节点)不是典型的,但是是可能的。例如,有可能将优选实施例的计算机系统100的一个分区配置为具有带有一些处理器和没有存储器的节点和具有存储器和没有处理器的其他节点。如果确实如此,则节点平衡器235将在无效目标权重集中的每个节点的目标权重设置为等于在那个节点上的处理器与在所有节点上系统可以获得的处理器的总数的比例,以便没有处理器的节点将以零作为它们的目标权重[方框1016]。TWMN 2920然后在方框1020递增,这(再次)具有将无效目标权重集改变为有效目标权重集的效果[方框1020]。
如果在方框1012节点平衡器235确定至少一个节点具有至少一个与一些存储器组合的处理器,则节点平衡器235接着确定驻留在具有至少一个处理器和一些存储器的节点上的处理器的总数[方框1014]。目标权重的无效集然后被更新,以便具有至少一个处理器和一些存储器的节点的目标权重被设置为它们各自的处理器与上述的处理器总数的比例[方框1018]。在没有处理器或存储器的节点的无效集内的目标权重被设置为零[方框1022]。TWMN 2920然后在方框1020递增,这(再次)具有将无效目标权重集改变为有效目标权重集的效果[方框1020]。
不论在图10A的流程图中所采用的路径如何,节点平衡器235最终将目标权重、处理器的数量和存储量复制到每个节点的节点锚结构[方框1024]。如在随后的段落中所述,这样做启动了有意义的核心组件平衡通告。图30示出了在优选实施例中使用的节点锚结构。每个节点锚结构包括标识符[3005]、当前的权重和处理器和存储器[3015]、在前的权重和处理器和存储器[3020]。在节点锚结构3000中示出了一系列资源锚。这些锚由注册的组件使用来容放资源或或指针,所述指针指向由注册的组件在节点基础上根据在整个系统上的工作分布来分配的资源。在随后的段落中更详细地说明了所述后一个概念。
现在返回图7,节点平衡器235然后计算在当前权重和目标权重之间的权重差[方框730]。所述差是每个节点的差的绝对值的和。节点平衡器235处理在图8的方框800中继续。权重差门限(WDT)被设置为刚刚计算的差的3/4。图29B示出了WDT 2924。WDT用于适当识别实际工作分布可能与新的期望工作分布相当不同的事实。虽然所述系统将调整当前的工作分布(如由当前权重所示)以接近目标权重,但是时这可能需要多一点时间来进行。因此,这对于注册的核心组件按照新的目标权重来简单地重新调整它们的资源或许是不适当的。因此,WDT与所谓的过渡权重结合使用来向注册的组件提供更逐渐地调整它们的资源的机会。如下所述,在当前权重和目标权重之间设置过渡权重以提供用于注册的组件的中间平衡点。在优选实施例中使用WDT来确定何时在当前和目标权重之间的差足够大来保证过渡权重的使用。如在随后的讨论中所见,优选实施例的WDT可以大至权重差的3/4到小至值1/64(.015625)。
在将WDT 2924设置到差的3/4后,节点平衡器235确定所述差是否小于1/32[方框805]。如果是否定的,则节点平衡器235从所述差减去1/32,并且确定结果是否小于WDT 2924。如果结果小于WDT 2924,则WDT 2924被复位到小于所述差的1/32。无论在方框805中的测试结果如何,节点平衡器235最后确定WDT 2924是否是1/64或更少[方框820]。如果WDT 2924是1/64或更少,则不保证过渡权重的使用,因此WDT 2924被设置为零并且使得在当前集中的KCBN过渡权重(3015)等于目标权重。如果节点平衡器235在方框820确定WDT 2924大于或等于1/64,则节点平衡器235将KCBN过渡权重的当前集(3015)设置为在当前权重和(新)目标权重之间的值。在优选实施例中,这是按照下列公式来进行的。
过渡=目标+(当前-目标)*WDT/权重差
节点平衡器235的处理然后进行到图9的方框900,在此,KCBN当前权重的当前集(3015)被设置为当前权重。然后调用对于每个注册组件(3105)指定的核心组件方法(见图31)[方框905]。
在被调用后(见图9的方框905),所述核心组件方法访问在每个节点存储的KCBN信息。所调用的方法可以获得当前、过渡和目标权重以及那些权重的先前值的拷贝。所调用的方法也可以获得当前和先前的处理器的数量和存储量。所有这个信息用于使得所调用的方法可以确定如何最佳地使用其资源。可以使用上述通告服务的核心组件的示例是综合的文件系统(IFS)。文件系统通常使用预先建立的线程集以处理不同的功能。例如,一个IFS可以具有执行硬盘驱动器(HDD)读取的一个线程集和执行HDD写入的另一个线程集。为了最佳地利用这些线程,所述IFS将使用优选实施例来最佳地以与工作分布一致的方式来分配线程。如果在调用时与所述IFS相关联的核心组件方法通过考虑KCBN权重来确定工作从第一节点向第二节点移动,则所述方法将破坏在第一节点上的一些或所有其预先建立的线程,并且在第二节点上建立一些。在KCBN信息的当前集已经被复制到KCBN信息的前一个集后,用于核心组件平衡通告的配置改变方面的处理然后结束。
过渡权重重新计算
本专利申请的前一个部分涉及当发生配置改变时如何在优选实施例中计算和设置过渡权重。在说明了它后,本专利申请这个部分涉及如何定期重新计算过渡权重以通过定期通告而提供逐渐的重新平衡。图11-14示出了在优选实施例的监视处理器225中使用的步骤。如上所述,优选实施例的监视处理器225每秒执行一次,并且它具有与优选实施例的各个方面相关的功能。但是,仅仅这些方面中的某些对这个特定的讨论感兴趣(即过渡权重重新计算)。因此,仅仅研究某些附图和处理方框而跳过其他以有利于在随后的段落中的处理。在图11中,处理方框1105-1114与优选实施例的其他方面相关。在图11的方框1116中,监视处理器225递增当前权重调用计数(CWIC),并且因为监视处理器225每秒执行,因此CWIC每秒递增。(图29A上示出了CWIC 2910。)监视处理器225接着确定对于所述间隔是否已经达到最大的调用计数[方框1120]。在优选实施例中,最大调用计数是七。计数七表示当前权重间隔的结尾。
图14上示出了所完成的当前权重间隔的监视处理器225处理。在步骤1405,在无效集中的DCP累加(见图29A的DCPA集2912和2916)被归一化。(上面通过CWIN 2908的查看来确定DCPA的哪个集是无效的,奇数CWIN 2908是SET0,偶数CWIN 2908是SET1。)在优选实施例中,通过将所述累加除以在所述间隔中的调用的数量(即七)来处理这个归一化。在此,应当注意在图14上所示的某些步骤(即方框1405和1435)不涉及核心组件平衡通告。但是,在此讨论所述材料,因为在当前权重间隔的结尾执行所述步骤。
监视处理器225接着提取由分派处理器230收集的当前权重周期[方框1410]。在优选实施例中,这些计数在本地节点基础上被存储在基于处理器的数据结构(未示出)中。监视处理器225然后从刚刚获得的周期计数减去在无效集中先前存储的周期计数(见图29A的RECC)以到达在每个本地节点的期满CWI期间执行的周期的数量。这个结果然后被存储回无效集中来替代前一个值[方框1415]。在方框1420中,来自有效集的RECC被提取、除以2、然后加到在无效集中的值(在节点基础上)。这导致作为近期执行的周期计数的在优选实施例中看见的值。
CWIN 2908然后在方框1425中递增以将无效集(即具有最新计数的集)转换为有效集。CWIC 2910然后在方框1430被设置为零来作为新CWI的开始。监视处理器225然后将在方框1410中收集的计数存储到新转换的无效集中以形成这些相同计算的基础(即在下一个CWI的结尾)[方框1440]。WDT2914然后在方框1450中相对于零而测试。非零WDT和当前权重间隔的结尾的组合表示需要确定是否需要重新计算过渡权重。图15和8概述了在优选实施例中使用的过渡权重重新计算步骤。首先参见图5,在方框1500中获得目标权重。
在优选实施例中,用于获得目标权重的机构由图10B所示。在图10B的方框1030中,提取了目标权重修改编号(TWMN)。现在参见图29A,其中示出了目标权重集2922和目标权重修改编号(TWMN)2920。如图所示,在优选实施例中存在两个目标权重集(SET0和SET1)。TWMN 2920用于确定哪个集是有效集和哪个集是无效集。如果TWMN 2920是奇数,则SET1是有效集并且SET0是无效集。如果TWMN 2920是偶数,则SET0是有效集并且SET1是无效集。节点平衡器235然后测试TWMN 2920以确定它是奇数还是偶数[方框1032]。如果TWMN 2920是偶数的,则从SET0提取每个节点的目标权重[方框1034],但是如果TWMN 2920是奇数的,则从SET1提取每个节点的目标权重[方框1036]。然后TWMN 2920在方框1038再次被提取并且在方框1040测试改变。如果TWMN 2920未改变,则在方框1042返回先前提取的目标权重集。如果TWMN 2920已经改变,则重复测试奇数/偶数、集提取和改变测试的步骤直到发现TWMN 2920未改变。在未改变状态中发现TWMN 2920的要求是为了原子性的目的。本专利申请的重新平衡工作和本地节点分配部分概述了在TWMN 2920可以被递增的同时监视处理器225检索目标权重值的实例。
现在返回图15,在方框1505获得当前权重。请参见图10C的前面讨论以获得在优选实施例中用于获得当前权重的步骤的细节。然后在当前权重和目标权重之间计算权重差。如上所述,所述差是每个节点的权重差的绝对值的和。所述差然后相对于WDT 2924被测试。如果所述差大于WDT 2924,则过渡权重不必被重新计算。但是,如果所述差小于或等于WDT 2924,则使用与图8和9相关联的上述处理来重新计算过渡权重。请参见那些附图的说明来获得更多的信息。
本地节点分配
简短地返回图2,TCM 205在优选实施例中用于建立可执行的线程以及必要的线程控制结构。建立进程的一部分是向这些可执行线程分配一个本地节点。本地节点分配是重要的,因为TDM 215偏向于尽可能在它们所分配的本地节点上执行线程,并且TMM 217偏向于尽可能在它们的所分配的本地节点上分配用于线程的存储器。这个偏向的含义涉及总体系统利用和资源分配。在优选实施例中,向线程的本地节点分配表示所述系统将择优地在其本地节点上执行线程,并且在其本地节点上分配存储器。这在此被称为节点亲和性。当然,如果一个特定的节点配置仅仅一个处理器,则这种亲和性变为处理器亲和性。另外,本领域的技术人员将明白本发明不限于由优选实施例提供的特定类型的亲和性。例如,数量达到总是在其本地节点上执行线程的要求的紧密亲和性也落入本发明的精神和范围内。
如上所述,在优选实施例中使用目标权重来特征化在整个系统上的期望工作分布。当前的权重用于特征化在整个系统上的当前工作分布。如果每个线程进行相同数量的工作,则确定新线程的本地节点将是直接的。即,基于将被分配到每个节点的现有线程的数量保持为与目标权重相同的比例来简单地分配本地节点。但是,事实是不同的线程进行不同量的工作,并且不可能提前知道线程要做多少工作。因此,优选实施例根据目标权重和当前权重来建立起始权重,并且分配本地节点以便将分配到每个本地节点的线程的数量保持与起始权重相同的比例。其当前权重超过其目标权重的节点将其起始权重设置为在一定程度上小于其目标权重(即因为它已经具有大于其工作负荷的份额),并且其当前权重低于其目标权重的节点将其起始权重设置为在一定程度上大于其目标权重(即因为它当前具有小于其工作负荷的份额)。当对于每个节点计算其起始权重时,系统越忙,则当前权重被施加更多的影响。
图26示出了本地节点分配的高级步骤。TCM 205在处理方框2605获得每个节点的起始权重。图27和28概述了在优选实施例中这个处理如何工作。现在参见图27,TCM 205首先在方框2705提取起始权重标识符(IWID)。图29B示出了IWID 2928和起始权重2930。然后,在TCM 205在方框2715确定IWID是否匹配CWIN之前,在方框2710提取CWIN 2908。如果IWID不匹配CWIN,TCW 205进行到图28的方框2800以计算新的起始权重,因为现有的起始权重过期。
在方框2805获得当前权重以及CWID和DCP。请参见图10C的上述说明以获得这些步骤的说明。在方框2710提取的CWIN的值然后在方框2810被设置到CWID,以便它表示与当前权重相关联的间隔数量。然后在方框2815获得目标权重。请参见图10B的上述说明以获得这些步骤的说明。
在方框2820以第一节点开始,TCM 205现在组合目标和当前权重以产生每个节点的起始权重。在组合目标和当前权重中,对于给定的节点的DCP越大,则当前权重对于那个节点的产生的起始权重具有更多的影响。
组合所述权重的第一部分是计算将控制当前权重的影响的乘数。如果DCP是75%或更小[方框2825],则在方框2850,通过将所述乘数设置为等于DCP的立方除以75%的平方来抑制当前权重的影响。否则,如果DCP小于100%[方框2835],则在方框2855通过将所述乘数设置为等于100%减((100%的立方-DCP)/(25%的平方))来放大当前权重的影响。否则,如果DCP是100%或更大[方框2835],则在方框2840通过将所述乘数设置为等于100%来最大化当前权重的影响。无论路径如何,所述乘数将在0-100%的范围内,并且用于下面的第二部分中。
组合所述权重的第二部分是计算一个除数,所述除数按照当前权重允许具有的影响数量,使得起始权重当当前权重小于目标权重时大于目标权重,并且当当前权重大于目标权重时小于目标权重。TCM 205在方框2860将所述除数计算为目标权重加((当前权重-目标权重)乘以所述乘数)。然后,产生的除数其范围根据所述乘数而在目标权重和当前权重之间的某处,并且用于下面的第三部分中。
第三部分是通过将目标权重的平方除以所述除数来计算未归一化的起始权重[方框2875]。这具有当当前权重越小时使得起始权重更大的影响,反之亦然。为了避免可能的除以零,TCM 205查看所述除数为零[方框2870],如果如此,它在方框2865简单地将起始权重设置为等于目标权重。TCM 205然后查看是否存在更多的要处理的节点[方框2809],如果是肯定的,则它对于剩余的每个节点重复上述的处理。当TCM 205确定已经考虑了所有的节点时,它进行到图27的方框2750。在经由连接方框2750返回到图27的逻辑后,TCM 205归一化该未归一化的起始权重,并且在起始权重2930中存储它们[方框2745]。在优选实施例中,通过将每个权重除以所有节点的起始权重的和来归一化权重。IWID然后在方框2735被设置为CWID,以指定当前权重间隔,在此间隔期间,起始权重有效。
来自方框2715的当前所述的执行路径和“是”分支(见上述说明)在方框2725汇合。在此,TCM提取起始权重,然后再次提取CWIN。如果新提取的CWIN与先前提取的CWIN不同,则起始权重过期并且以图28的方框2805重新开始先前所述的起始权重计算步骤。如果新提取的CWIN与先前提取的CWIN相同,则被提取的起始权重是最新的,并且被返回到图26的逻辑。
现在返回图26的方框2610,TCM 205确定每个节点的当前存在的线程的数量。在优选实施例中,核心服务137通过当一个线程被建立时递增一个计数器并且当破坏一个线程时递减它来在节点基础上跟踪现有的线程。然后通过求和计数器来确定线程的总数[方框2615]。然后在方框2620,在节点基础上确定线程的目标数量。在优选实施例中,这是通过将线程的总数乘以每个节点的起始权重来实现的。在实际线程和目标线程之间具有最大的短落差(short fall)的节点是被选择为刚刚建立的线程的本地的节点[方框2622]。
工作重新分配
概述
我们上面讨论了本发明的优选实施例如何能够检测在系统内的工作不平衡和进行适当的调整。这在优选实施例中通过在监视处理器225、分派处理器230和节点平衡器235之间的一系列状态驱动交互来实现。在优选实施例中用于工作重新分配目的的状态被称为观察平衡、记录周期和移动线程。所述观察平衡状态——它是开始点——被系统管理器设置。因此,系统管理器使得系统能够确定是否存在工作平衡问题。当状态被设置到观察平衡时,监视处理器225跟踪一个五十三秒的时段——在此被称为观察平衡间隔(OBI)。在某个数量——在优选实施例为六——的间隔已经过去后,监视处理器225通告节点平衡器235。
当节点平衡器235苏醒时,它注意所述状态被设置到观察平衡。节点平衡器235通过执行系统是否不平衡的高级分析来响应。当在随后的段落中更详细地说明这个确定时,在此应当注意,分派处理器230——它很频繁地运行——正在跟踪在本地节点基础上执行的周期的数量。这种原始的周期计数被节点平衡器235使用来进行其高等级平衡确定。当节点平衡器235确定系统的工作负荷可能不平衡时,它将所述状态设置为记录周期,由此通告监视处理器225。
监视处理器225然后识别状态已经被改变到记录周期,并且在跟踪通过后,单一记录周期间隔将所述状态设置为移动线程,并且通告节点平衡器235。同时,分派处理器230识别节点平衡器235已经将所述状态设置为记录周期。分派处理器230通过在线程基础和本地节点基础上收集周期数据来响应。分派处理器230当它以后确定所述状态已经改变到除了记录周期之外的某状态时停止在线程基础上收集周期数据。
当节点平衡器235从监视处理器225接收到上述的通告时,它执行对于由分派处理器230收集的基于线程的数据的低级分析。节点平衡器235然后两次查看系统的平衡/不平衡状态,并且在系统的工作负荷未适当地平衡的情况下使用基于线程的数据来确定那些线程要移动。如果节点平衡器235确定系统的工作负荷不平衡时,它在节点之间移动线程以更适当地平衡系统的工作负荷。最后,节点平衡器235将所述状态设置回观察平衡以开始处理。
在观察平衡状态中的分派处理器230
刚才所述的是这样的事实:分派处理器230当在观察平衡状态时保持在本地节点基础上执行的周期数量的原始计数。在图16A上示出这一逻辑。在图16A上所示的是与本发明的优选实施例相关的、在分派处理器230内的步骤。本领域内的技术人员明白,存在其他不相关的线程分派处理。在方框1600中,分派处理器230获得要被分派的线程的本地节点ID。然后在方框1605获得最后一次执行这个特定线程时消耗的周期。所消耗的周期计数然后在本地节点基础上被加到当前权重周期计数累加器上。这个计数——它由分派处理器230保持——被存储在基于处理器的数据结构(未示出)中。分派器230然后确定它是否在观察平衡状态内或之外。如果是肯定的,则上述的消耗的周期被加到观察平衡周期计数累加器——它是由分派处理器230(未示出)保有的另一个基于处理器的数据存储器。分派处理器230然后确定它是否在记录周期状态中[方框1645]。因为在此我们在观察平衡状态,因此分派处理器230仅仅返回方框1640,在其中剩余的线程分派处理发生。下面结合记录周期状态来说明图16B的逻辑。
在观察平衡状态中的监视处理器225
前面相对于核心组件平衡通告而讨论了图11。在那个讨论期间,涉及这些处理方框中的那些(即监视处理器225的处理方框)与工作重新分配相关的方框。现在说明这些方框。在方框1105,获得当前的分派器承诺百分比。在优选实施例中,这些是通过对于本发明的益处和优点不重要的系统接口而被获得的,因此在此不进一步说明。所述百分比在节点基础上表示系统的活动水平的指示。像RECC一样,通过CWIN 2908的查看来识别无效集(见图29A的DCPA集2912和2916)[方框1110]。如果CWIN 2908是奇数的,则DCP被加到在SET0中的DCPA;如果CWIN 2908是偶数,则DCP被加到在SET1中的DCPA。监视处理器225然后确定CWIC 2910是否已经达到其最大[方框1120]。如果已经达到了所述最大,则监视处理器225处理被完成的当前权重间隔。这个处理已经参照图14在前得到说明(见上)。请读者在此假设被完成的当前权重间隔处理不是所讨论的问题。监视处理器225因此确定当前状态是否是观察平衡或其外[方框1122]。
在此,当前状态是观察平衡,因此监视处理器225移动到图12的方框1205。在此,监视处理器225计算对于最老的保存区域(见图29B,保存区域SA0-SAN,2932-2936)的索引。在优选实施例中,这种计算涉及提取图29B的观察间隔数量(OIN)2950和将OIN 2950除以保存区域的数量(即,N+1),然后使用产生的余数来作为所述索引。监视处理器225然后在节点基础上向最老的保存区域的DCPA加DCP[方框1210]。然后递增最老的保存区域的调用计数(IC)[方框1215]。监视处理器225然后确定是否已经达到了最大调用计数[方框1220]。如果如此的话,则已经完成了一个需要处理的观察间隔。在图17中示出了这个处理。如果还未完成观察间隔,则处理在图13中继续。
首先转向图17,监视处理器225首先从分派处理器230获得观察平衡周期计数,并且将它们在节点基础上存储在第二最老保存区域中[方框1700]。(再次,见图29B,保存区域SA0-SAN,2932-2936。)这些值将最终变为在下一个观察间隔中执行的周期的数量的基础。然后,在方框1705,监视处理器225将计算在刚刚完成的观察间隔中执行的周期。在优选实施例中,这是通过从在方框1700获得的计数减去在最老保存区域中的周期计数而进行的,所述在最老保存区域中的周期计数是刚刚完成的观察间隔的基础。这个计算的结果然后被存储回最老的保存区域。在方框1710中,监视处理器225将第二最老保存区域的DCPA设置为零。这是为了准备下一个观察间隔的累加。监视处理器225然后将第二最老保存区域的调用计数设置为零,这再次是准备在下一个间隔中的累加[1715]。OIN 2950然后被递增,这具有将最老的保存区域原子地改变为最新的和将第二最老改变为最老的效果[方框1720]。
在方框1725中,监视处理器225确定OIN 2950是否已经达到观察平衡门限。这个值在优选实施例中使用来确定何时监视处理器225应当从工作负荷的角度查看所述系统的节点是否被平衡。在优选实施例中,这个值是六。如果还没有达到观察平衡门限,则监视处理器225在方框1740返回图12的逻辑。如果已经达到了观察平衡门限,则监视处理器225确定当前状态是否是观察平衡(见图29A的节点管理器状态2902)。如果当前状态不是观察平衡,则监视处理器225在方框1740返回图12的逻辑。在此,所述状态是观察平衡,因此监视处理器225通告节点平衡器235来进行高级确定:在返回图12的逻辑之前,在系统的节点之间,由系统执行的工作是否被正确地平衡[1740]。这个逻辑结合图18被说明。
在观察平衡状态中的节点平衡器235
现在转向图18,节点平衡器235求取所述六个最近的保存区域的调用计数的和[方框1800]。节点平衡器235然后计算每个节点的平均DCP[方框1805]。在优选实施例中,这是通过首先从最近的六个保存区域求取在节点基础上的DCPA的和来完成的。用于每个节点的总数然后被除以所述调用计数的和(即在方框1800确定的值)。结果是用于每个节点的平均DCP。节点平衡器235然后求取所述六个最近保存区域的在节点基础上的观察平衡周期计数的和[方框1810]。(见图29B,周期计数和保存区域SA0-SAN,2932-2936。)然后在方框1815确定系统总和。在图19继续用于进行平衡/不平衡确定的步骤。图19的逻辑由节点平衡器235对于每个节点使用一次。每次使用图19的逻辑时,考虑下面是输入:1)系统的总的周期计数,2)所考虑的节点的DCP,3)节点的目标权重(见图10B和相关联的文本来获得如何计算目标权重的说明);4)用于特定节点的周期计数。
现在移向图19,节点平衡器235在方框1900计算目标周期计数。在优选实施例中,这是通过将在所有节点上执行的总的周期乘以特定节点的目标权重来实现的。结果是用于所讨论的节点的目标周期计数。所述目标周期计数然后从所述节点的周期计数被减去[方框1910]。
在优选实施例中,目标周期计数的1/32被用作容差,以便如果实际横轴起计数在目标周期计数的1/32内则所述节点被说成平衡,即使它可能略微失衡。可以在处理方框对1905/1920和1915/1925的逻辑中看到这个容差的应用。如果实际的周期计数仅仅略微小于目标周期计数[方框1905和1920],则返回结果零[方框1935]。结果零表示对于特定的节点未看见不平衡。类似地,如果实际周期计数仅仅略微大于目标周期计数[方框1915和1925],则返回结果零[方框1935]。当然,如果方框1910的计算结果是零,则在方框1935返回零。如果在实际周期计数和目标周期之间的差多于略微低,则图19的逻辑将返回作为负数的、在实际和目标周期计数之间的差[方框1930],它指示特定节点在不超过其合理比例时能够采取的附加工作量。如果在实际周期计数和目标周期计数之间的差多于略微高,则图19的逻辑将测试用于特定节点的DCP是否大于75%。周期计数的过多和大于75%的DCP表示所述节点具有多于其合理的工作份额,并且事实上过多。当发现是这样时,图19的逻辑将返回作为正数的、在实际周期和目标周期计数之间的差[方框1945],这指示应当从所讨论的节点移动的工作量。如果在方框1940图19的逻辑确定虽然有周期计数的过多但是特定节点的DCP不超过75%,则所述节点不被看作过度工作[方框1935]。
回忆图19的逻辑用于每个节点,并且现在返回图18而且假定已经考虑了所有的节点,如果图19的逻辑结果示出了不存在工作的不平衡(即在整个系统中工作被适当的分布),则节点平衡器235只在方框1840终止执行。但是,如果所述逻辑示出了不平衡(即,至少一个节点具有太多工作和至少一个节点具有太少工作),则节点平衡器235进行到方框1830,在此初始化记录状态值。所述初始化区域如下:1)图29C的记录周期ID 2940被递增,2)周期计数2948在本地节点基础上被设置为零,3)记录周期调用计数2942被设置为零,4)每个节点的DCPA 2948被设置为零。然后,在节点平衡器235终止执行之前,在方框1840,节点管理器状态2902被设置到记录周期。
在记录周期状态中的分派处理器
所述状态现在已经被节点平衡器235设置到记录周期(见上),因此分派处理器230的处理方框1645将在下次分派线程时评估成“是”。因此,分派处理器230将接着确定线程的本地节点是否是可移动的[图16B的方框1609]。如果是否定的,则分派处理器230仅仅在返回图16A的逻辑之前在方框1660递增记录周期的周期累加器。如果是肯定的,则分派处理器230确定记录周期ID是否匹配[方框1610]。这个确定是通过比较在线程控制结构(未示出)中保存的记录周期ID与图29C的记录周期ID 2940而进行的。如果ID匹配,则分派处理器230向已经被存储在线程结构(未示出)中的现有总数加上所计数的原始周期[方框1655]。当ID不匹配时,当前周期的原始周期计数还没有被存储在这个特定线程的控制结构中,因此在所述线程控制结构中的记录周期ID被设置到在记录周期ID 2940中存储的值[方框1650],并且周期计数被设置为等于最近执行的周期[方框1665]。这是在方框1605中确定的值。不论处理方框1610如何评估,记录周期的本地节点总数在方框1660中也递增。
在记录周期状态中的监视处理器225
现在返回图13以继续,下一次监视处理器225执行处理方框1305将评估成“是”,因为状态2902现在被节点平衡器235设置到记录周期。监视处理器225向记录状态DCPA加上DCP(见图29C的2948的DCPA)[方框1310]。然后在方框1315记录周期IC 2942递增。监视处理器225然后测试记录周期IC 2942以确定是否已经达到最大值。在优选实施例中,所述最大值是五十三。如果还未达到最大值,则监视处理器225仅仅在方框1340退出。如果在方框1320,监视处理器225确定已经达到最大值,则它从分派处理器230获得记录周期计数,并且将它们存储在周期计数存储区域2948中。监视处理器225然后在方框1335将所述状态设置为移动线程,并且通告节点平衡器235在它在方框1340退出之前在方框1330移动线程。
在移动线程状态中的节点平衡器235
图20在此用于描述在优选实施例中的线程移动。节点平衡器235首先计算每个节点的平均DCP[方框2000]。在优选实施例中,这是通过将在2948的DCPA中保存的值除以在所述周期中的间隔总数而实现的(即记录周期IC2942)。节点平衡器235然后求取2948的累加周期计数的和,这产生在记录周期期间用于所述系统的总数[方框2005]。
节点平衡器235接着确定在记录周期上在整个系统中是否合理地分配了工作。在优选实施例中,这是经由图19所示的逻辑完成的。读者可以回忆,图19如上所述,在此不重复细节。但是,回忆图19的逻辑用于每个节点,并且现在返回图20而且假设已经建立了所有节点,如果图19的逻辑的结果示出不存在工作的不平衡(即在整个系统中工作适当的分布),则节点平衡器235仅仅在方框2035将所述状态设置为观察平衡,并且在方框2040中止执行。但是,如果图19的逻辑示出了不平衡(即至少一个节点具有太多的工作,至少一个节点具有太少的工作,并且在观察平衡状态中同样的节点分别被观察为具有太多的工作和太少的工作),则节点平衡器235进行到方框2020,在此确定要移动的周期的数量。请读者首先回忆在方框2010识别了缺少周期的节点和在具有过多周期的节点。然后由节点平衡器235将要移动的周期的数量设置为最大过量和最大短缺中较小者的1/2。节点平衡器235然后在这个基础上移动线程。
图21A-23示出了在优选实施例中用于执行这个任务的节点平衡器235逻辑。开始,在方框2100,建立一个空列表。这个列表将最后保存作为要移动的候选者的线程。然后,在方框2105,节点平衡器235从由所述系统保存的线程列表选择第一个(或下一个)线程。节点平衡器235然后确定是否所述线程具有与其相关联的当前记录周期ID[方框2110]。如果是否定的,则节点平衡器235确定是否存在要考虑的更多线程[方框2111],如果是肯定的,则进行下一个线程选择[方框2105],并且再次确定当前记录周期ID是否与其相关联[方框2110]。图21B示出了用于处理具有当前记录周期ID的线程的逻辑。节点平衡器235首先在方框2120确定用于所讨论的线程的本地节点是否已经事先确定为具有过量周期的节点。如果是否定的,则处理在图21A的方框2111继续,如上所述,如果所讨论的线程的本地节点确实是具有过量周期的,则节点平衡器235确定特定线程是否是MAG的成员,在此该组的所有线程要求具有相同的本地节点[2125]。如果是否定的,则节点平衡器235提取由这个线程记录的周期[方框2130]。节点平衡器235然后向所述候选列表增加这个线程,根据其记录周期的数量来将其分级(最多的在前)。节点平衡器235然后在图21A的方框2111继续处理。
如果在图21B的方框2125节点平衡器235确定所讨论的线程确实是一个组的一部分,则节点平衡器235确定所述组是否是在这个记录周期期间以前已经遇到的那个[方框2140]。如果是肯定的,则处理在图21A的方框2111继续。如果是否定的,则节点平衡器235计算用于所述组的总的周期计数(即所述组的线程的记录周期的和)[方框2145],然后根据所述组的总的周期计数来向移动候选列表增加所述组[方框2150]。一旦完成了这一点,则处理在图21A的方框2111继续。
当已经考虑了所有的线程时,处理方框2111评估成“否”,并且节点平衡器235实际地移动线程以重新平衡系统。在优选实施例中用于实现这个任务的逻辑被示出在图22中。在方框2200中,节点平衡器235选择在候选列表中的第一个(下一个)线程或MAG。假定还没有到达列表的结尾[方框2205],则节点平衡器235确定所讨论的线程或MAG是否具有比移动所需要更多或更少的周期(见处理方框2020和相关联的文本)[方框2215]。如果所述线程或MAG消耗了比所需要更多的周期,则节点平衡器235仅仅在方框2200继续处理。如果是否定的,则节点平衡器235确定所考虑的那个是否是线程或组[方框2225],如果是线程,则节点平衡器235进行到图23的逻辑。如果是组,则在进行使用图23的逻辑来用于在所述组中的每个线程之前在方框2230改变所述组的本地节点。
现在转向图23,节点平衡器235改变所讨论的线程的本地节点[方框2300]。只要所述特定线程保留这个特定的本地节点,则TDM 215将尝试和分派其来在其新的本地节点上执行,并且TMM 217将试图在其新的本地节点上获得用于其的存储器。最后,在方框2305,节点平衡器235将重建与所述线程相关联的重要存储页面。在优选实施例中,这是通过下述方式来实现的:提供在暂时不可获得的老本地节点上的页面,将那些页面复制到新的本地节点上,并且使得在新本地节点上可以获得那些页面。现在返回图22,每次一个线程或线程组被移动到新的本地节点时,要移动的周期被减少已经移动的周期[方框2240]。处理然后在方框2200继续,直到已经考虑了所有的线程。当已经考虑了所有的线程时,处理方框2205评估成“是”,使得节点平衡器235重新初始化OIN。节点平衡器235也通过下述方式来建立用于下一个观察间隔的基础:提取节点周期计数,并且将它们存储在最老的保存区域中[方框2210]。这些初始化具有这样的效果:使得下一个观察间隔完全重新开始,以便在考虑进一步的平衡之前观察至少六个间隔。
在执行初始化后,节点平衡器235返回图20的方框2035,在此它于在方框2040终止处理之前将所述状态设置到观察平衡。
在本专利申请文件的工作重新分配部分的开始,我们指出所述状态被系统管理器初始地设置为观察平衡。这是必要的,因为用户可以回忆,在IPL期间节点管理器状态2902被设置为当前权重(见图6的方框605)。图24和25分别示出了在系统和系统管理器之间的交互以启动本地节点移动(即重新平衡)和禁止本地节点移动。在优选实施例中,系统管理器通过用户界面150与计算机系统100交互。在此,系统管理器能够输入一个命令,所述命令指令节点管理器220将其本身设置为观察平衡状态,由此启动本地节点移动。在图24的方框2400中,节点管理器220确定它是否已经处于观察平衡中或之外的状态。如果是肯定的,则节点管理器220仅仅通告系统管理器(通过用户界面150)已经启动了本地节点移动[方框2405]。如果节点管理器220未在观察平衡状态中,则节点管理器220初始化所述OIN,如在与图22的方框2210相关联的文本中所述。节点管理器220然后在返回之前在方框2415将其状态设置为观察平衡。
系统管理器也能够输入一个命令,所述命令指定节点管理器220将其本身设置为当前权重状态,由此禁止本地节点移动。在图25的方框2500中,节点管理器220确定它是否已经在当前权重状态中,如果是肯定的,则节点管理器220仅仅通告系统管理器(通过用户界面150)已经禁止了本地节点移动[方框2505]。如果节点管理器220不在当前权重状态中,则节点管理器220然后在返回前在方框2510将其状态设置到当前权重。
在此给出的实施例和示例被提供来最佳地说明本发明及其实际应用,并且由此使得本领域内技术人员能够建立和使用本发明。但是,本领域内技术人员将认识到上述说明和示例是为了仅仅说明和举例而被提供的。所给出的说明不意欲是穷尽的或将本发明限定到所公开的精确形式。根据上述教程,在不脱离所附的优选实施例的精神和范围的情况下,许多修改和改变是可能的。
Claims (18)
1.一种计算机装置,所述计算机装置包括,
第一处理器,所述第一处理器具有与其相关联的第一存储器;
第二处理器,所述第二处理器具有与其相关联的第二存储器;
第一作业,所述第一作业具有第一线程;以及
分组机构,用于分组两个或多个所述第一线程以便将它们包括在一个组中,所述两个或多个线程独立于它们与所述作业的关联而被分组,所述组用于提供关于其中包括的线程的处理器亲和性,所述处理器亲和性适用于所述第一处理器或所述第二处理器。
2.按照权利要求1的计算机装置,包括第二线程,它们不与所述作业相关联,并且其中所述组包括至少一个所述第二线程。
3.按照权利要求1的计算机装置,其中所述第一处理器和所述第一存储器包括第一节点,并且所述第二处理器和所述第二存储器包括第二节点。
4.按照权利要求2的计算机装置,其中,在已经建立所述组后,所述第二线程中的所述至少一个被所述分组机构分组到所述组中。
5.按照权利要求2的计算机装置,其中,当建立至少一个所述第二线程时建立所述组,并且所述组包括所述至少一个所述第一线程。
6.一种计算机装置,所述计算机装置包括:
第一处理器,所述第一处理器具有与其相关联的第一存储器,所述第一处理器和所述第一存储器是第一物理节点;
第二处理器,所述第二处理器具有与其相关联的第二存储器,所述第二处理器和所述第二存储器是第二物理节点;
线程,所述线程能够在所述物理节点中的任何一个上执行;以及
逻辑节点,所述逻辑节点当建立所述线程时被指定,所述逻辑节点被转换为所述第一物理节点或所述第二物理节点,以便能够给所述线程提供用于特定节点的节点亲和性而不必指定特定的物理节点。
7.一种程序产品,所述产品包括,
信号承载媒体;以及
程序产品,被布置在所述信号承载媒体上,所述程序产品包括分组机构,用于分组两个或多个第一线程集,所述第一线程与一个作业相关联,所述两个或多个线程被分组以便将它们包括在一个组中,所述两个或多个线程独立于与作业的任何关联而分组,所述组用于提供关于其中包括的线程的处理器亲和性,所述处理器亲和性适用于第一处理器或第二处理器,所述第一处理器具有与其相关联的第一存储器,所述第二处理器具有与其相关联的第二存储器。
8.按照权利要求7的程序产品,包括第二线程,它们与所述作业不关联,并且其中所述组包括至少一个所述第二线程。
9.按照权利要求7的程序产品,其中所述第一处理器和所述第一存储器包括第一节点,并且所述第二处理器和所述第二存储器包括第二节点。
10.按照权利要求8的程序产品,其中,在建立所述组后,所述第二线程中的所述至少一个被所述分组机构分组到所述组中。
11.按照权利要求8的程序产品,其中当建立所述第二线程中的所述至少一个时建立所述组,并且所述组包括所述至少一个所述第一线程。
12.一种程序产品,所述程序产品包括,
逻辑节点,所述逻辑节点当建立一个线程时被指定,所述逻辑节点被转换为第一物理节点或第二物理节点,以便能够给所述线程提供用于指定节点的节点亲和性而不必指定特定的物理节点,所述第一物理节点包括第一处理器和第一存储器,并且所述第二节点包括第二处理器和第二存储器。
13.一种计算机实现的方法,所述方法包括步骤:
建立第一线程,所述第一线程与第一作业相关联;
建立第二线程,所述第二线程与所述第一作业相关联;
建立第三线程,所述第三线程与所述第一作业相关联;
将所述第一线程和所述第二线程分组,但是不分组第三线程,以便将它们包括在一个组中,所述组用于提供关于其中包括的线程的处理器亲和性,所述处理器亲和性适用于所述第一处理器或所述第二处理器,所述第一处理器具有与其相关联的第一存储器,所述第二处理器具有与其相关联的第二存储器。
14.按照权利要求13的方法,包括第四线程,它与所述作业不相关联,其中所述组包括所述第四线程。
15.按照权利要求13的方法,其中所述第一处理器和所述第一存储器包括第一节点,并且所述第二处理器和所述第二存储器包括第二节点。
16.按照权利要求14的方法,其中,在已经建立所述组后,所述第四线程被分组到所述组中。
17.按照权利要求14的方法,其中当建立所述第四线程时建立所述组,并且所述组包括所述第一线程。
18.一种计算机实现的方法,所述计算机实现的方法包括步骤:
建立第一线程,所述第一线程能够在第一物理节点或第二物理节点上执行,所述第一物理节点具有第一存储器,所述第二物理节点具有第二存储器;
指定第一逻辑节点,当建立所述第一线程时指定所述第一逻辑节点,所述第一逻辑节点被转换为所述第一物理节点以便给所述第一线程提供用于所述第一物理节点的节点亲和性而不必指定特定的物理节点;
建立第二线程,所述第二线程能够在所述第一物理节点上或在所述第二物理节点上执行;
指定第二物理节点,当建立所述第二线程时指定所述第二逻辑节点,所述第二逻辑节点被转换为所述第二物理节点,以便给所述第二线程提供用于所述第二物理节点的节点亲和性而不必指定特定的物理节点。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/793,346 US7584476B2 (en) | 2004-03-04 | 2004-03-04 | Mechanism for reducing remote memory accesses to shared data in a multi-nodal computer system |
US10/793,346 | 2004-03-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1664804A true CN1664804A (zh) | 2005-09-07 |
CN100392633C CN100392633C (zh) | 2008-06-04 |
Family
ID=34987869
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100530193A Expired - Fee Related CN100392633C (zh) | 2004-03-04 | 2005-03-04 | 多处理器多线程计算机系统及其线程组织方法 |
Country Status (2)
Country | Link |
---|---|
US (2) | US7584476B2 (zh) |
CN (1) | CN100392633C (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100461112C (zh) * | 2006-01-19 | 2009-02-11 | 国际商业机器公司 | 动态改善逻辑分区的存储器亲和性的装置和方法 |
CN102073547A (zh) * | 2010-12-17 | 2011-05-25 | 国家计算机网络与信息安全管理中心 | 一种多路服务器多缓冲区并行收包的性能优化方法 |
CN101273332B (zh) * | 2005-09-30 | 2012-01-18 | 英特尔公司 | 用于线程数据亲和性优化的方法和装置以及编译器 |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050198642A1 (en) * | 2004-03-04 | 2005-09-08 | International Business Machines Corporation | Mechanism for assigning home nodes to newly created threads |
US7574708B2 (en) * | 2004-03-04 | 2009-08-11 | International Business Machines Corporation | Mechanism for enabling the distribution of operating system resources in a multi-node computer system |
CA2538503C (en) * | 2005-03-14 | 2014-05-13 | Attilla Danko | Process scheduler employing adaptive partitioning of process threads |
US8387052B2 (en) * | 2005-03-14 | 2013-02-26 | Qnx Software Systems Limited | Adaptive partitioning for operating system |
US9361156B2 (en) | 2005-03-14 | 2016-06-07 | 2236008 Ontario Inc. | Adaptive partitioning for operating system |
US8245230B2 (en) * | 2005-03-14 | 2012-08-14 | Qnx Software Systems Limited | Adaptive partitioning scheduler for multiprocessing system |
US7844781B2 (en) * | 2006-02-23 | 2010-11-30 | International Business Machines Corporation | Method, apparatus, and computer program product for accessing process local storage of another process |
US8799918B2 (en) * | 2006-09-11 | 2014-08-05 | Microsoft Corporation | Dynamic network load balancing using roundtrip heuristic |
US20080196030A1 (en) * | 2007-02-13 | 2008-08-14 | Buros William M | Optimizing memory accesses for multi-threaded programs in a non-uniform memory access (numa) system |
JP5347648B2 (ja) * | 2009-03-30 | 2013-11-20 | 富士通株式会社 | プログラム、情報処理装置及び状態出力方法 |
US8745622B2 (en) * | 2009-04-22 | 2014-06-03 | International Business Machines Corporation | Standalone software performance optimizer system for hybrid systems |
US8656397B2 (en) * | 2010-03-30 | 2014-02-18 | Red Hat Israel, Ltd. | Migrating groups of threads across NUMA nodes based on remote page access frequency |
US9262181B2 (en) * | 2011-05-10 | 2016-02-16 | International Business Machines Corporation | Process grouping for improved cache and memory affinity |
US9684600B2 (en) * | 2011-11-30 | 2017-06-20 | International Business Machines Corporation | Dynamic process/object scoped memory affinity adjuster |
US10061622B2 (en) | 2013-02-26 | 2018-08-28 | Red Hat Israel, Ltd. | Updating memory topology information for virtual machines |
US10114662B2 (en) | 2013-02-26 | 2018-10-30 | Red Hat Israel, Ltd. | Updating processor topology information for virtual machines |
US20150081400A1 (en) * | 2013-09-19 | 2015-03-19 | Infosys Limited | Watching ARM |
US9921881B2 (en) | 2014-05-27 | 2018-03-20 | Sybase, Inc. | Optimizing performance in CEP systems via CPU affinity |
US9348644B2 (en) * | 2014-10-08 | 2016-05-24 | International Business Machines Corporation | Application-level dispatcher control of application-level pseudo threads and operating system threads |
US10110707B2 (en) | 2015-12-11 | 2018-10-23 | International Business Machines Corporation | Chaining virtual network function services via remote memory sharing |
US10102036B2 (en) * | 2016-02-05 | 2018-10-16 | International Business Machines Corporation | Providing additional thread context to assist memory locality |
US10185593B2 (en) | 2016-06-03 | 2019-01-22 | International Business Machines Corporation | Balancing categorized task queues in a plurality of processing entities of a computational device |
US10691502B2 (en) | 2016-06-03 | 2020-06-23 | International Business Machines Corporation | Task queuing and dispatching mechanisms in a computational device |
US11029998B2 (en) | 2016-06-03 | 2021-06-08 | International Business Machines Corporation | Grouping of tasks for distribution among processing entities |
GB2551529B (en) * | 2016-06-21 | 2018-09-12 | Advanced Risc Mach Ltd | Switching between private cache and shared memory to handle atomic operations |
US11150944B2 (en) | 2017-08-18 | 2021-10-19 | International Business Machines Corporation | Balancing mechanisms in ordered lists of dispatch queues in a computational device |
Family Cites Families (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4625081A (en) * | 1982-11-30 | 1986-11-25 | Lotito Lawrence A | Automated telephone voice service system |
US4633387A (en) * | 1983-02-25 | 1986-12-30 | International Business Machines Corporation | Load balancing in a multiunit system |
US4811345A (en) * | 1986-12-16 | 1989-03-07 | Advanced Micro Devices, Inc. | Methods and apparatus for providing a user oriented microprocessor test interface for a complex, single chip, general purpose central processing unit |
US4905171A (en) * | 1987-11-09 | 1990-02-27 | International Business Machines Corporation | Workstation controller performance monitor |
JP2977688B2 (ja) * | 1992-12-18 | 1999-11-15 | 富士通株式会社 | マルチプロセッシング装置、方法、及びこれらに使用するプロセッサ |
US5745778A (en) * | 1994-01-26 | 1998-04-28 | Data General Corporation | Apparatus and method for improved CPU affinity in a multiprocessor system |
US5473773A (en) * | 1994-04-04 | 1995-12-05 | International Business Machines Corporation | Apparatus and method for managing a data processing system workload according to two or more distinct processing goals |
EP0725340A3 (en) * | 1995-02-03 | 1996-10-02 | Ibm | Apparatus and method for managing the workload of a distributed data processing system by limiting the consumption of processing capacity |
US6105053A (en) * | 1995-06-23 | 2000-08-15 | Emc Corporation | Operating system for a non-uniform memory access multiprocessor system |
US6728959B1 (en) * | 1995-08-08 | 2004-04-27 | Novell, Inc. | Method and apparatus for strong affinity multiprocessor scheduling |
JP3543441B2 (ja) | 1995-09-19 | 2004-07-14 | 株式会社日立製作所 | 大域的なリソースキャッピング方法 |
JPH09167141A (ja) * | 1995-12-18 | 1997-06-24 | Hitachi Ltd | 負荷分散制御方法 |
US5892945A (en) * | 1996-03-21 | 1999-04-06 | Oracle Corporation | Method and apparatus for distributing work granules among processes based on the location of data accessed in the work granules |
US5978892A (en) * | 1996-05-03 | 1999-11-02 | Digital Equipment Corporation | Virtual memory allocation in a virtual address space having an inaccessible gap |
US5878224A (en) * | 1996-05-24 | 1999-03-02 | Bell Communications Research, Inc. | System for preventing server overload by adaptively modifying gap interval that is used by source to limit number of transactions transmitted by source to server |
JPH10198640A (ja) | 1997-01-07 | 1998-07-31 | Hitachi Ltd | プロセッサの負荷制御方式 |
US6317774B1 (en) * | 1997-01-09 | 2001-11-13 | Microsoft Corporation | Providing predictable scheduling of programs using a repeating precomputed schedule |
US6151688A (en) * | 1997-02-21 | 2000-11-21 | Novell, Inc. | Resource management in a clustered computer system |
US6128642A (en) * | 1997-07-22 | 2000-10-03 | At&T Corporation | Load balancing based on queue length, in a network of processor stations |
CA2212316C (en) * | 1997-07-31 | 2001-02-13 | Ibm Canada Limited - Ibm Canada Limitee | A method of recognizing fixed and variable sized data objects in memory |
US6101508A (en) * | 1997-08-01 | 2000-08-08 | Hewlett-Packard Company | Clustered file management for network resources |
US5991893A (en) * | 1997-08-29 | 1999-11-23 | Hewlett-Packard Company | Virtually reliable shared memory |
FI108478B (fi) * | 1998-01-21 | 2002-01-31 | Nokia Corp | Sulautettu jõrjestelmõ |
JPH11259318A (ja) | 1998-03-13 | 1999-09-24 | Hitachi Ltd | ディスパッチ方式 |
US6477561B1 (en) * | 1998-06-11 | 2002-11-05 | Microsoft Corporation | Thread optimization |
US6253226B1 (en) * | 1998-06-24 | 2001-06-26 | Oracle Corporation | Duration-based memory management of complex objects |
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 |
JP2000137692A (ja) | 1998-10-30 | 2000-05-16 | Toshiba Corp | 分散ノード間負荷分散方式 |
US6665699B1 (en) * | 1999-09-23 | 2003-12-16 | Bull Hn Information Systems Inc. | Method and data processing system providing processor affinity dispatching |
US6658448B1 (en) * | 1999-10-21 | 2003-12-02 | Unisys Corporation | System and method for assigning processes to specific CPU's to increase scalability and performance of operating systems |
US6658449B1 (en) * | 2000-02-17 | 2003-12-02 | International Business Machines Corporation | Apparatus and method for periodic load balancing in a multiple run queue system |
US20030110203A1 (en) * | 2000-02-17 | 2003-06-12 | Brenner Larry Bert | Apparatus and method for dispatching fixed priority threads using a global run queue in a multiple run queue system |
US6963917B1 (en) * | 2000-10-20 | 2005-11-08 | International Business Machines Corporation | Methods, systems and computer program products for policy based distribution of workload to subsets of potential servers |
JP2002202959A (ja) * | 2000-12-28 | 2002-07-19 | Hitachi Ltd | 動的な資源分配をする仮想計算機システム |
US20020099759A1 (en) * | 2001-01-24 | 2002-07-25 | Gootherts Paul David | Load balancer with starvation avoidance |
US6728858B2 (en) * | 2001-03-30 | 2004-04-27 | Intel Corporation | Method and apparatus including heuristic for sharing TLB entries |
US7178145B2 (en) * | 2001-06-29 | 2007-02-13 | Emc Corporation | Queues for soft affinity code threads and hard affinity code threads for allocation of processors to execute the threads in a multi-processor system |
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 |
JP2003256310A (ja) * | 2002-03-05 | 2003-09-12 | Nec Corp | サーバ負荷分散システム、サーバ負荷分散装置、コンテンツ管理装置、及びサーバ負荷分散プログラム |
US7159221B1 (en) * | 2002-08-30 | 2007-01-02 | Unisys Corporation | Computer OS dispatcher operation with user controllable dedication |
US7334230B2 (en) * | 2003-03-31 | 2008-02-19 | International Business Machines Corporation | Resource allocation in a NUMA architecture based on separate application specified resource and strength preferences for processor and memory resources |
CA2426619A1 (en) * | 2003-04-25 | 2004-10-25 | Ibm Canada Limited - Ibm Canada Limitee | Defensive heap memory management |
US7356655B2 (en) * | 2003-05-15 | 2008-04-08 | International Business Machines Corporation | Methods, systems, and media for managing dynamic storage |
US7266540B2 (en) | 2004-03-04 | 2007-09-04 | International Business Machines Corporation | Mechanism for dynamic workload rebalancing in a multi-nodal computer system |
US20050198642A1 (en) | 2004-03-04 | 2005-09-08 | International Business Machines Corporation | Mechanism for assigning home nodes to newly created threads |
US7574708B2 (en) | 2004-03-04 | 2009-08-11 | International Business Machines Corporation | Mechanism for enabling the distribution of operating system resources in a multi-node computer system |
-
2004
- 2004-03-04 US US10/793,346 patent/US7584476B2/en not_active Expired - Fee Related
-
2005
- 2005-03-04 CN CNB2005100530193A patent/CN100392633C/zh not_active Expired - Fee Related
-
2009
- 2009-08-31 US US12/551,162 patent/US8312462B2/en not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101273332B (zh) * | 2005-09-30 | 2012-01-18 | 英特尔公司 | 用于线程数据亲和性优化的方法和装置以及编译器 |
CN100461112C (zh) * | 2006-01-19 | 2009-02-11 | 国际商业机器公司 | 动态改善逻辑分区的存储器亲和性的装置和方法 |
CN102073547A (zh) * | 2010-12-17 | 2011-05-25 | 国家计算机网络与信息安全管理中心 | 一种多路服务器多缓冲区并行收包的性能优化方法 |
CN102073547B (zh) * | 2010-12-17 | 2013-08-28 | 国家计算机网络与信息安全管理中心 | 一种多路服务器多缓冲区并行收包的性能优化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100392633C (zh) | 2008-06-04 |
US7584476B2 (en) | 2009-09-01 |
US8312462B2 (en) | 2012-11-13 |
US20100229177A1 (en) | 2010-09-09 |
US20050210468A1 (en) | 2005-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1664804A (zh) | 减少远程存储器对多节点计算机中共享数据的访问的机构 | |
CN1664803A (zh) | 用于使能多节点计算机系统中操作系统资源的分配的机制 | |
US10545789B2 (en) | Task scheduling for highly concurrent analytical and transaction workloads | |
EP2212806B1 (en) | Allocation of resources for concurrent query execution via adaptive segmentation | |
Gidra et al. | NumaGiC: A garbage collector for big data on big NUMA machines | |
US8352945B2 (en) | System, method, and apparatus for scan-sharing for business intelligence queries in an in-memory database | |
US7290260B2 (en) | Dynamic processor redistribution between partitions in a computing system | |
CN1914597A (zh) | 处理单元的动态加载和卸载 | |
US7266540B2 (en) | Mechanism for dynamic workload rebalancing in a multi-nodal computer system | |
Teodoro et al. | Accelerating large scale image analyses on parallel, CPU-GPU equipped systems | |
CN1774699A (zh) | 共享资源的并发访问 | |
US7627662B2 (en) | Transaction request processing system and method | |
CN101908003A (zh) | 并行化查询的多核调度 | |
CN101359333A (zh) | 一种基于隐含狄利克雷分配模型的并行数据处理方法 | |
CN1928811A (zh) | 处理操作管理系统和方法 | |
CN112559165A (zh) | 内存管理方法、装置、电子设备及计算机可读存储介质 | |
CN1326567A (zh) | 处理系统调度 | |
Chen et al. | Dosas: Mitigating the resource contention in active storage systems | |
Zhang et al. | Gang scheduling extensions for I/O intensive workloads | |
CN1664786A (zh) | 用于指定本地节点给新创建线程的机制 | |
CN1773458A (zh) | 用于管理资源元素队列的方法和控制器 | |
Brady et al. | SmartGridRPC: The new RPC model for high performance Grid computing | |
KR20190139006A (ko) | 분산 메시지 시스템 및 분산 메시지 시스템에서의 동적 파티셔닝 방법 | |
Sudarsan et al. | Design and performance of a scheduling framework for resizable parallel applications | |
Lagerstrom et al. | PScheD Political scheduling on the CRAY T3E |
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: 20080604 Termination date: 20190304 |
|
CF01 | Termination of patent right due to non-payment of annual fee |