多节点计算机系统和用于监视其性能的方法

文档序号:6562401阅读:191来源:国知局
专利名称:多节点计算机系统和用于监视其性能的方法
技术领域
本发明一般地涉及计算机系统性能分析。特别地,本发明涉及一种用于测量多节点计算机系统性能的性能分析工具。
背景技术
计算机系统被广泛用于操作和存储数据。典型地,数据被存储在计算机系统存储器中并由在中央处理单元(CPU)上运行的应用程序来操作。很多操作系统能够进行多任务处理,即,这些系统能够同时执行多个不同的任务或进程。例如,很多操作系统支持“线程”的使用。通常,线程提供用指令序列和相关联的数据变量表示的执行单元。线程可以通过时间分片或多重处理而彼此并行地执行。
随着计算机应用复杂性的增加,已经提出了一种用于提升系统性能的方案,其设计具有多个CPU的计算机系统。在一种方案中,计算机系统可以通过多个节点来进行配置,其中每个节点都包含了一个或多个CPU以及本地存储器。此类计算机系统可以包括很多节点,并且可以使用复杂的总线和高速缓存机制在不同节点之间传送数据。通常,每个节点都可以访问任何其他节点的本地存储器;但是,这样做会耗费比访问本地节点存储器所需要的时间长得多的时间。
用每个节点自身的处理和存储器资源来配置每个节点通常被称为NUMA(非均匀存储器访问)体系结构。NUMA系统的一个区别特征在于访问存储器位置所需要的时间是不均匀的,也就是说,访问不同位置的时间可以取决于发出请求的节点以及所访问的存储器的位置而不同。特别地,与CPU对不同节点上的存储器所进行的存储器访问相比,CPU对与之处于相同节点上的存储器所进行的存储器访问耗费的时间较短。由于访问远程节点上的存储器必须通过节点之间的更多硬件组件(诸如总线、总线驱动器、存储器控制器等等)到达请求CPU,因此,访问相同节点上的存储器更快。
对通过NUMA体系结构配置的计算机系统来说,将从CPU到远程存储器的引用次数最小化将明显是有利的。同样,当线程例如通过对malloc()或new()的程序语言调用来发起对存储器的动态请求的时候,或者在从磁盘中读取数据的时候,如果存储器是从执行该线程的CPU的本地存储器中分配的,那么应用性能会得到提高。
节点之间的分离度的量通常被称为“存储器亲缘性(memoryaffinity)”,或被简称为“亲缘性”。由于与访问其他节点上的存储器相比,节点的一个或多个CPU可以更快地访问与该节点相关联的本地存储器区域,因此,该节点与其自身具有最大的亲缘性。随着本地节点与远程节点之间的硬件分离度的增大,本地节点与远程节点之间的亲缘性会减小。
已经开发了多种机制来最大化对节点亲缘性的使用。举例来说,标题为“Mechanism for Assigning Home Nodes to Newly Created Threads”的美国专利申请公开了一种用于首先将原节点(home node)分配给每个线程(也就是优先执行该线程的节点)的技术,而在2004年3月4日提交的标题为“Mechanism for Dynamic Workload Rebalancing in a Multi-NodalComputer System”的美国专利申请10/793,470公开了用于由在系统上运行的各种线程和进程所执行的工作负荷改变时,确保这些节点上的工作负荷保持均衡以反映工作负荷的改变的方法。
然而,由于系统管理员无法访问表征系统性能的数据,因此,在工作减少并随时间流动时对多节点系统的性能特性进行监视和分析仍是非常困难的。在不具有用于监视系统性能的直接机制的情况下,系统管理员可被只好对系统行为的某些方面的根本原因进行猜测,并以特定或是非精确的方式来确定或测量这些改变对系统的影响。由于大多数NUMA系统的复杂性,这种方案无法提供对系统性能特性的适当分析,也无法提供所述改变对于这种系统的计算资源或配置的影响。因此,仍需要一种用于测量多节点计算机系统性能的性能分析工具。

发明内容
本发明的实施例通常包括一种用于测量多节点计算机系统性能的方法、装置和制品。
一实施例提供了一种用于监视多节点计算机系统性能的方法。所述方法通常包括探测与工作负荷在多节点计算机系统中的每个节点上的分布相关的一组系统事件,以及当在多节点计算机系统上执行线程的过程中出现所探测的事件时执行探测例程,其中所述探测例程被配置成记录与多节点计算机系统的现有状态相关的数据。该方法通常还包括在执行所述探测例程之后继续执行所述线程。
本发明的另一实施例包括一种包含了程序的计算机可读媒体,所述程序在被执行时会执行用于监视多节点计算机系统性能的操作。所述操作通常包括探测与工作负荷在多节点计算机系统中的每个节点上的分布相关的一组系统事件,以及当在多节点计算机系统上执行线程的过程中出现所探测的事件时执行探测例程,其中所述探测例程被配置成记录与多节点计算机系统的现有状态相关的数据。所述操作通常还包括在执行所述探测例程之后继续执行所述线程。
本发明的再一实施例包括一种多节点计算机系统。所述多节点计算机系统通常包括多个处理器、多个存储器库以及包括指令的探测管理工具,其中所述指令在由所述多个处理器中的一个所执行时会使得所述处理器执行用于监视多节点计算机系统性能的操作。所述操作通常包括探测与工作负荷在多节点计算机系统中的每个节点上的分布相关的一组系统事件,以及当在多节点计算机系统上执行线程的过程中出现所探测的事件时执行探测例程,其中所述探测例程被配置成记录与多节点计算机系统的现有状态相关的数据。所述操作通常还包括在执行所述探测例程之后继续执行所述线程。


由此,通过参考附图中描述的示例性实施例,可以得到可理解本发明的上述特征的方式以及上文中简要概述的对本发明的更为具体的描述。然而应该注意,附图仅描述了本发明的典型实施例,并且因此不应该将其视为是对本发明的范围进行限制,因为本发明可以容许其他等效实施例。
图1A是描述依照本发明一实施例的示例性计算环境的框图。
图1B是进一步描述依照本发明一实施例的计算节点的框图。
图2是进一步描述依照本发明一实施例的示例性计算环境的框图。
图3是显示依照本发明一实施例的由操作系统提供的内核服务的扩展视图的框图。
图4是描述依照本发明一实施例的用于监视多节点计算机系统性能的方法的流程图。
具体实施例方式
本发明的实施例通常包括一种用于测量多节点计算机系统性能的方法、装置和制品。在一实施例中,可以探测多个与系统相关的事件。当在线程执行期间出现系统事件时,可以调用探测例程来记录与该事件相关的系统变量的状态。举例来说,其中的系统事件(诸如线程创建、分派)和节点事件(诸如与对多节点系统中的工作负荷分布的验证或改变相关的事件)可以被探测以便记录在运行中的多节点计算机系统中发生事件的时候的变量状态。
以下描述引用本发明实施例。然而,本发明并不局限于任何具体描述的实施例;相反,以下特征和单元的任何组合无论是否与所描述的实施例有关,都实现并实施了本发明。此外,在各种实施例中,本发明提供了超越现有技术的众多优点。虽然本发明的实施例可以实现超越其他可能的解决方案以及现有技术的优点,但是是否由给定实施例来实现一个具体优点并没有限制本发明的范围。因此,除非在权利要求中明确叙述,否则以下的方面、特征、实施例和优点都是对本发明进行描述,而不应该将其视为权利要求中的要素或限制。同样,除非在权利要求中明确叙述,否则,对“本发明”的引用既不应该被视为是对这里公开的发明主题的概括,也不应该被视为是权利要求的要素或限制。
本发明的一实施例可以被实现为与计算机系统结合使用的程序产品,举例来说,该计算机系统例如图1中所示并在下文中描述的计算机系统100。该程序产品定义了这里所描述的实施例(包括方法)的功能,并且可以被包含在各种信号承载媒体中。示例性信号承载媒体包括但不局限于(i)永久存储在不可写存储媒体(例如,计算机内的只读存储器设备诸如可由CD-ROM驱动器读取的CD-ROM盘)上的信息;(ii)存储在可写存储媒体(例如,软盘驱动器内的软盘或硬盘驱动器)上的可变信息;以及(iii)经由包括无线通信在内的通信媒体(例如计算机或电话网络)传递的信息。后一实施例特别包括在因特网或其他计算机网络上共享的信息。在传送用于执行本发明的方法的计算机可读指令时,这种信号承载媒体代表本发明的实施例。
一般来说,实现本发明实施例的软件例程可以是操作系统的一部分,或是特定应用、组件、程序、模块、对象或是诸如可执行脚本的指令序列的一部分。这种软件例程通常包括多个能够通过使用计算机系统来执行的指令。同样,程序通常包括驻留在存储器中或是存储设备上的作为其操作一部分的变量和数据结构。此外,这里描述的各种程序可以根据实现程序的应用来标识。然而,本领域技术人员会了解,以下任何特定术语或特定应用均有助于对本发明进行描述,而没有将本发明限制成只与特定的应用或术语一起使用。此外,在这里描述的程序功能使用彼此交互的离散模块或组件来。然而,本领域技术人员会了解,不同的实施例可以采用多种方式来组合或合并这些组件和模块。
图1是描述依照本发明一实施例的第一示例性计算环境的框图。计算系统100提供多节点计算机系统。在优选实施例中,计算系统100可以包括i-Series服务器,该服务器使用的是运行版本号为V5R4或更高版本的I5/OS的POWER4处理器(或是其后继处理器),其中所述处理器和OS都可以从国际商业机器(IBM)买到,但是其他多节点计算机系统也可以使用。如图所示,计算系统100包括一个或多个处理节点130、网络接口125、用户接口150以及海量存储装置155。在这里显示的计算系统100具有四个处理节点130,但是取决于特定计算系统100的配置,也可以使用更多或是更少的节点。网络接口125被用于与其他计算机系统进行通信。用户接口150被用于接受命令、调用应用程序以及处理介于处理节点130与计算系统100的用户之间的输入/输出。所显示的每个节点130都运行提供内核服务137的操作系统136。
图1B描述了依照本发明一实施例的计算节点130的更详细视图。如图所示,节点130包括一组硬件资源,例如共享存储器180、一个或多个处理器140以及单级或多级高速缓冲存储器,诸如共享高速缓存165以及本地高速缓存160。在使用NUMA体系结构来配置的计算机系统100中,相比于与另一个节点130中的相似资源进行交互或是通信的情况,每一个节点130内的硬件资源140-180彼此能够更高效地进行交互。
然而,图1A和1B所描述的体系结构和节点划分方案提供的是示例性的计算机系统体系结构,并且在本发明的可替换实施例中可以使用用于提供对硬件资源的物理划分的其他方案。此外,其他并非基于NUMA的体系结构可以使用本发明的性能分析工具。例如,实施例可被用来对系统性能进行监视,其中该系统被配置成使用统一访问方法将线程分配给共享给定存储器的不同处理器,或者以其他方式来分配未被划分到图1A和1B中所示的节点中的硬件资源。
图2是进一步描述依照本发明一实施例的示例性计算环境100的框图。如图所示,图2描述了逻辑分区系统,该系统包括三个逻辑分区132(标记为LPAR 1、LPAR 2和LPAR 3)。逻辑分区(LPAR)是将处理器、存储器以及计算机系统的存储装置(例如节点130)划分成多个资源集合,由此可以通过每个资源集合自身的操作系统136的实例以及应用空间来独立地操作该资源集合。可以被创建的逻辑分区132的数量取决于系统处理器配置以及其他可用硬件资源。如图所示,逻辑分区132被定义成使用从节点130分配的资源来进行操作。如图所示,每个逻辑分区132包括提供内核服务137的运行中的操作系统136。这里使用的术语“系统”或“计算系统”可以指未分区系统或逻辑分区系统。逻辑分区132可以使用比计算系统100所提供的全部节点130更少的节点,如LPAR 1和LPAR 2的情况。一个节点还能够提供包括在一个以上的逻辑分区中的资源,如节点1和2的情况。本发明的很多被探测事件是通过对怎样(或何时)在系统100的节点130之间分派线程用以执行进行分配和调整而被触发的。因此,在改变了系统100中的分区配置时,可以使用本发明的分析工具来测量这种改变对于系统100中的每一个分区性能的影响。
所显示的每个逻辑分区包括线程135以及操作系统136。在操作系统136中集成了内核服务137。内核服务将操作系统级的服务提供给其他操作系统进程以及其他应用程序。通常,操作系统内核是操作系统的基本单元。内核服务137提供负责为应用程序(例如线程)提供对节点130所提供硬件的安全访问的软件组件。由于通常在每个分区上运行很多程序,并且针对硬件的访问是受到限制的,因此内核服务137还负责决定应该何时在给定节点130上执行线程135以及执行多久。在线程创建、分派以及执行线程135的操作的同时,所探测事件被触发来记录系统变量的状态。
图3是显示依照本发明一实施例的由操作系统136提供的内核服务137的扩展视图的框图。如图所示,内核服务137包括线程管理器300、节点管理器340、配置管理器345、探测设置350以及探测例程355。
线程管理器300进一步被显示成包括线程创建管理器305、线程分派管理器315以及线程存储器管理器317。在一实施例中,线程创建管理器305被用于连同在计算系统100上执行线程所需要的必要线程控制结构一起来创建可执行线程。此外,作为线程创建进程的一部分,线程创建管理器305可为每个线程分配原节点。由于线程分派管理器315偏向于尽可能在已分配的原节点上执行线程,并且线程存储器管理器317偏向于尽可能分配来自所分配的原节点的存储器,因此,原节点的分配是重要的。
在线程创建管理器305创建了线程并为其分配了原节点之后,线程分派管理器315可以对其进行分派用以执行。一般来说,线程可以在系统的各种节点130所提供的任何一个处理器上执行。在一实施例中,虽然线程是相互独立的,但是也可以将这些线程分配到一个线程群组。举例来说,单个应用所创建的多个线程可以共享相同数据单元中的若干单元。因此,将同一原节点分配给所有这些线程是有利的。因此,使得每个所述线程被分配给同一组可以增加系统效率,因为每个线程都可以访问来自同一本地节点的存储器(也就是来自对于每个线程而言具有最高度的亲缘性的节点)的数据单元。在标题为“Mechanism for Assigning Home Nodes to NewlyCreated Threads”的共同拥有的美国专利申请中描述了线程管理器300的操作的附加示例,在此将其整体引入作为参考。
图3还显示了节点管理器340。在一实施例中,节点管理器320提供内核服务,该内核服务被配置成确定系统中各种节点的相对工作负荷。例如,节点管理器340可以被用于在系统100内标识和校正工作负荷的不均衡,并且向其他内核服务通知节点工作负载的调整或改变,由此这些服务也可以自己相应地进行调整。在节点管理器340内显示了分派处理器330、均衡监视器325以及节点均衡器335。如其名称所示,分派处理器330负责处理来自线程分派管理器315的分派请求。由于线程是被连续分派的,因此分派处理器330通常会非常频繁地运行。均衡监视器325被配置成周期性地监视节点130所执行的工作负荷的均衡状态。在优选实施例中,均衡监视器325被配置成每隔七秒钟确定多个节点130间的均衡信息。在获取均衡信息之后,均衡监视器325可以被配置成使用所述均衡信息来执行各种计算,所述均衡信息最终可被节点均衡器35用来确定是否(以及何时)需要进行节点均衡处理。
图3还显示了配置管理器345。在一实施例中,配置管理器345可以被配置成用信号向节点均衡器335通过配置改变。然后,节点均衡器335对所述配置改变进行处理,并且采取适当操作来调整多节点计算机系统的多个节点间的工作分布的均衡。配置改变的示例包括增大或是减少系统上的处理器或存储器的数量。此外,配置变化可以包括对可用于逻辑分区132的资源的改变,或是可反映对计算系统100所提供的底层物理硬件资源集合所做出的改变。虽然将配置管理器345显示成是在内核服务137之外,但在可替换实施例中,配置管理器345可以是操作系统内核服务的一部分。
在标题为“Mechanism for Dynamic Workload Rebalancing in aMulti-Nodal Computer System”的共同拥有的美国专利申请(序列号为10/793,470)中进一步描述了节点管理器340、均衡监视器325、节点均衡器335以及配置管理器345用于标识和处理工作负荷均衡及调整的操作,在此将其整体引入作为参考。
图3还显示了探测设置350以及探测例程355。在一实施例中,探测设置350标识出哪些系统事件应被探测。通常,探测是一种用于收集与计算机系统或者在其上运行的程序或线程相关的数据的方法。通过将探测例程155插入可执行程序或操作系统例程,以便对诸如程序的一部分的执行次数之类的事件进行计数,或是在发生系统事件的时候记录与系统状态相关的数据,例如系统或线程变量的值,而探测代码的可执行分段。作为例证,探测设置340标识出应该借助探测例程355探测哪些程序或操作系统例程或事件(例如哪些内核服务137)。探测例程355随后在计算机系统100的操作期间出现所探测事件的任何时候执行探测功能。通常,探测例程355对系统操作是透明的,而对出现所探测事件时执行所述探测例程355之一所必需的附加的处理器循环来说则是不透明的。
图4是描述依照本发明一实施例的用于监视多节点计算机系统性能的方法的流程图。方法400始于步骤405,其中在计算系统100的运行过程期间遇到所探测的事件。通过参考探测设置350可以确定探测到哪些事件。事件包括可在系统100操作过程期间出现的任何事件连同任何感兴趣的数据。举例来说,分派处理器330可以被探测,而在将任务分派给处理器的任何时间收集数据。所述事件的感兴趣的数据包括线程标识符以及线程被分派到的处理器。在第36-48段中提供了可在均衡多节点系统中的工作中出现的多种事件的描述。
在步骤410,控制被转移到与所探测事件相关联的适当的探测例程355。在一实施例中,探测例程可以被直接插入与所探测事件相关联的可执行指令中。在这种情况下,探测例程将作为用于定义事件的可执行代码的一部分而被执行。在可替换实施例中,探测例程355可以是对于系统上执行的另一进程的异常分支(hook)。在遇到异常分支的时候,控制被转移到该探测进程,该探测进程执行用于记录与系统100的状态相关的数据的探测功能。在步骤415,可以确定事件类型。举例来说,探测设置350可以标识多种可被探测的系统事件。在步骤420,基于在步骤415确定的事件类型来记录适当的系统数据。一旦结束,那么在步骤430可将系统控制返还给系统。如果直接将探测例程插入内核服务137的可执行代码中,那么该内核服务仅仅会继续执行。在可替换实施例中,系统控制可以从一个探测进程转换回到触发了所探测事件的例程。
本说明书的剩余段落提供了可被探测的示例性事件列表。还提供了对于什么系统参数和系统数据类型可以由探测例程355之一记录用于所探测的事件的描述。作为例证,下文中描述的变量和数据单元由运行在i-SeriesIBM Power服务器上的I5/OS操作系统提供。然而,取决于使用特定计算机系统100的实际实现方式,某些、所有或是不同的系统事件及数据变量的集合可以用于进行探测。
改变配置事件每当向逻辑分区132的逻辑配置添加或是从中移除处理器和/或存储器的时候,为每个节点130生成“改变配置”事件。一旦改变了逻辑分区配置,那么节点管理器340随后将会基于新的资源配置而开始将资源分配给新创建的线程。此外,节点均衡器335可以动态改变现有线程的原节点和/或亲缘性组,以便帮助均衡系统工作负载。表I列举了可以被记录用于“改变配置”事件的多个系统变量以及系统数据类型。
表I——改变配置事件uint32xTargetWeightModificationNumber;uint16xWeightDifferentialThreshold;
uint8 xNodeld;uint8 reserved;//剩余字段附属于在xNodeID字段中标识的节点uint16xNewTargetWeight;uint16xNewLogicalProcessorCount;uint32xNewMemoryPageCount;uint16xOldTargetWeight;uint16xOldLogicalProcessorCount;uint32xOldMemoryPageCount;uint16xCurrentWeight;uint16xInitiationWeight;uint16xTransitionWeight;uint16xDispatcherLoadIndex;其中该信息将会有用的一个示例将存在于添加或移除了资源的逻辑分区之中。用户会对探测设置350进行配置,由此在配置改变之前执行用于改变配置事件的探测例程355。一旦探测例程355被触发,那么对于该事件所检索的探测数据将会显示逻辑分区132对所述改变怎样进行反应。随后的事件组也将有可能出现,并且将探测数据记录下来。
初始的“均衡配置”事件将指示出操作系统在开始将工作负荷及其自身的内部资源迁移到新的配置的时候对已改变的配置的初始响应。周期性的“检查均衡”事件将指示出工作负荷的当前均衡,而后续的“均衡配置”事件将显示在工作负荷缓慢迁移成与新的配置相均衡的时候对操作系统的资源所进行的逐步调整。
周期性的“验证均衡”事件将指示出在更大的范围中工作负荷是否超出了足以确保将现有任务移动到新的原节点所需要的均衡。如果该情况得到指示,那么一组“分析均衡”事件将确认移动任务是得到保证的,并且底层分析将会选择出要移动哪些任务。随后将是用于原节点被改变的每个任务的“改变任务”事件,以及用于原节点被改变的每个组的“改变组”事件。然后,当后续的“验证均衡”事件将指示出对任务的附加移动是否可得到保证进行监视时,该进程将重复其自身。“改变均衡器状态”还将指示出“验证均衡”、“分析均衡”以及“移动任务/组”之间的节点均衡器的转变。
均衡配置事件可以响应于分区中的处理器和/或存储器资源配置的改变(参见上文中的“改变配置”事件)而首先触发“均衡配置”事件。通过对配置的改变,系统上的工作负荷将开始迁移到关于新的资源配置的节点均衡状态,并且操作系统可以依照迁移工作负荷均衡来调整其自身的内部资源。“均衡配置”事件随后可以在工作负荷迁移的时候被触发,从而允许操作系统在逐步迁移到关于新的资源配置的均衡状态的过程中周期性地调整其资源。初始事件以及所有随后的事件实际上是一组“均衡配置”事件,其中一个事件对应于每个节点。表II列举了可以被记录用于“均衡配置”事件的多个系统变量以及系统数据类型。
表II——均衡配置事件uint32xTargetWeightModificationNumber;uint16xWeightDifferentialThreshold;uint8 xNodeld;uint8 reserved;//剩余字段附属于由xNodeld值所标识的节点uint16xTargetWeight;uint16xCurrentWeight;uint16xTransitionWeight;uint16xDispatcherLoadIndex;检查均衡事件每当均衡监视器325工作来监视在计算机系统100的节点130上执行的工作负荷均衡的时候,可以触发“检查均衡”事件。“检查均衡”事件记录计算机系统100内(或是分区132之一内)的工作负荷的资源亲缘性均衡。均衡监视器325周期性地根据资源配置而将现有工作负荷均衡与预期工作负荷均衡相比较,并且(1)在将原节点或其他资源亲缘性分配给新的任务、作业和线程的时候使用该信息,以及(2)将该信息用于随着资源亲缘性配置改变而驱动内核服务137所使用的内部资源的周期性的重新均衡。“检查均衡”事件在这个周期性比较期间被生成用于计算机系统的亲缘性资源的每个部分。表III列举了可以被记录用于“检查均衡”事件的多个系统变量和系统数据类型。
表III——检查均衡事件uint32xCurrentWeightIntervalNumber;uint8 xNodeld;uint8 reserved1;uint16reserved2;//剩余字段反映了用于上文标识的每个xNodeID的数据uint16xTargetWeight;uint16xCurrentWeight;uint16xInitiationWeight;uint16xDispatcherLoadIndex;uint64xHomeNodeCyclesOnHomeNodeProcessors;uint64xHomeNodeCyclesOnOtherNodeProcessors;uint64xOtherNodeCyclesOnHomeNodeProcessors;uint64xHomeNodeAllocatesOfHomeNodePages;uint64xHomeNodeAllocatesOfOtherNodePages;uint64xOtherNodeAllocatesOfHomeNodePages;uint32xMoveableTaskCount;xHomeNodeCyclesOnHomeNodeProcessors、xHomeNodeCyclesOnOtherNodeProcessors以及xOtherNodeCyclesOnHomeNodeProcessors的值分别代表节点130为被分配到作为原节点的节点的线程执行操作所耗费的时间量、其他节点执行属于该节点的操作要花费多久以及该节点执行最适宜由其他节点执行的操作要花费多久。这些值(例如在循环中测量到)给出了对系统的当前工作负荷均衡的指示,此外,在将原节点分配给新的任务时,以及在确定何时参与内部操作系统资源的周期性节点重新均衡时,这些值对于节点均衡器325来说可以是有用的。
xHomeNodeAllocatesOfHomeNodePages、xHomeNodeAllocatesOfOtherNodePages以及OtherNodeAllocatesOfHomeNodePages的数据值提供了存储器页是否正在进行最优分配的指示。虽然节点均衡器325可能未使用这些特定值来执行其自身的均衡功能,但是这些值对人类观察者来说可以是非常有用的。举个例子,伴随着xOtherNodeAllocatesOfHomeNodePages中的较小值的xHomeNodeAllocatesOfOtherNodePages中的较大值将表示出在节点130中正在运行渴望得到存储器的应用。系统管理员可以使用附加工具(例如Jobwatcher、Collection Services)来标识哪些特定作业、任务或线程正对特定节点的本地存储器具有很大需求。
新的工作(例如线程创建管理器305所创建的线程)以保持均衡的方式被添加到系统中,由此,仅仅启动新的作业将不会触发众多感兴趣的事件。如果新创建的线程触发了现有服务器作业中的工作,或者如果工作完成,那么可能出现不均衡,并且系统将会检查事件序列来均衡跨节点工作。
验证均衡事件每当均衡监视器325执行操作来验证分区内的工作负荷的资源亲缘性均衡的时候,出现“验证均衡”事件。举例来说,均衡监视器325可以基于资源配置而周期性地将现有的工作负荷均衡与预期的工作负荷均衡相比较,并且将该信息用于确定是否存在下述不均衡,其足以调整对原节点(或是其他亲缘性分配)的改变来实现正执行的某些线程或线程组的更好的工作负荷均衡。在这个周期性比较期间“验证均衡”事件可以被生成用于计算机系统100的亲缘性资源的每个单元。表IV列举了可以被记录用于“验证均衡”事件的多个系统变量以及系统数据类型。
表IV——验证均衡事件uint32xObserveBalanceIntervalNumber;uint8 xNodeld;uint8 reserved;uint16xDispatcherLoadlndex;uint64xExecutedHomeNodeCycles;uint64xTargetHomeNodeCycles;uint64xThresholdHomeNodeCycles;分析均衡事件每当均衡监视器325执行操作来分析计算机系统100(或分区132)内的工作负荷的资源亲缘性均衡的时候,可以触发“分析均衡”事件。一旦均衡监视器325已确定存在下述工作负荷不均衡,其足以调整对与某些任务、作业或是线程具有亲缘性的资源的一部分,则可以将其配置成分析工作负荷以及当前的亲缘性分配,从而选择出哪些线程具有应该被改变的亲缘性分配(例如原节点)。在这个分析期间“分析均衡”事件被生成用于计算机系统100的每个亲缘性资源。表V列举了可以被记录用于“分析均衡”事件的多个系统变量和系统数据类型。
表V——分析均衡事件uint32xRecordingPeriodld;uint8 xNodeld;uint8 reserved;uint16xDispatcherLoadIndex;uint64xExecutedHomeNodeCycles;uint64xTargetHomeNodeCycles;uint64xThresholdHomeNodeCycles;改变均衡器状态事件每当节点管理器340的状态从一种状态变成另一种的时候,出现改变均衡器状态。举例来说,节点管理器340可以在上述状态“检查均衡”、“验证均衡”以及“分析均衡”之间转换。每当状态改变时可生成“改变均衡事件”。表VI列举了可以被记录用于“改变均衡器状态”事件的多个系统变量以及系统数据类型。
表VI——改变均衡器状态事件uint64xController;uint8 xNewState;uint8 xOldState;改变任务事件每当对被分配给分区的资源或者工作负荷的改变已导致节点之间出现不均衡的时候,触发改变任务事件。如上文引用的美国专利申请“Mechanism for Enabling the Distribution of Operating SystemResources in a Multi-Node Computer System”所述,包括作业和线程在内的每个任务都可以具有对于计算机系统100的节点所提供的不同资源的亲缘性。每当与线程具有亲缘性的资源被改变的时候,可以触发“改变任务”事件。举例来说,如果节点均衡器335确定通过改变线程的原节点来均衡系统,那么可以出现“改变任务”。表VII列举了可以被记录用于“改变任务”事件的多个系统变量以及系统数据类型。
表VII——改变任务事件uint32xReeordingPeriodld;uint8 xNewHomeNodeld;uint8 xOldHomeNodeld;uint16reserved;uint64xTotalNumberOfCyclesToMove;uint64xCyclesRecordedByMovedTask;uint64xTaskCountOfMovingTask;改变组事件与“改变任务”事件相似,在与线程组相关联的亲缘性被改变的时候,出现“改变组”事件。如上所述,线程可以是亲缘性组的一部分。被分配给同一个亲缘性组的线程组具有计算系统100所提供的相同资源集合的亲缘性。每当与线程亲缘性组相关联的资源被改变的时候,可以触发“改变组”事件。举例来说,如果节点均衡器335确定通过改变与线程亲缘性组相关联的原节点来均衡系统,那么可以出现“改变组”。表VIII列举了可以被记录用于“改变组”事件的一组系统变量以及系统数据类型。
表VIII——改变组事件uint32xRecordingPeriodld;uint8 xNewHomeNodeld;uint8 xOldHomeNodeld;uint8 xGroupPreferredNodeld;uint8 reserved;uint64xTotalNumberOfCyclesToMove;uint64xCyclesRecordedByMovedGroup;uint64xInitialThreadTaskCount;uint32xGroupId;上述事件列表并不意味着对可以使用本发明的性能分析机制来进行探测的本发明进行穷举;而是,在特定的情况下可以使用更多或更少事件。
虽然上文针对本发明的实施例,但在不脱离本发明的基本范围以及由权利要求所确定的本发明的范围的情况下,可以设计出本发明的另外的实施例。
权利要求
1.一种用于监视多节点计算机系统性能的方法,包括探测与工作负荷在多节点计算机系统中的每个节点上的分布相关的一组系统事件;当在多节点计算机系统上执行线程的过程中出现所探测的事件时执行探测例程,其中所述探测例程被配置成记录与多节点计算机系统的现有状态相关的数据;以及在执行所述探测例程之后继续执行所述线程。
2.根据权利要求1所述的方法,其中所述多节点计算机系统的每个节点都包括一个或多个中央处理单元以及本地存储器库。
3.根据权利要求2所述的方法,其中所述多节点计算机系统的每个节点都可以访问任何其他节点的本地存储器库。
4.根据权利要求2所述的方法,其中所述多节点计算机系统是使用非均匀存储器访问体系结构来配置的。
5.根据权利要求2所述的方法,其中线程管理器被配置成为每个新创建的线程分配原节点,其中线程分派器被配置成优先分派新创建的线程用以在所述原节点上执行,以及其中所探测的例程记录在将新创建的线程进行分派用以在与所述新创建的线程相关联的原节点上执行的时候所完成的工作量。
6.根据权利要求1所述的方法,其中所探测的系统事件是从以下至少一项中选择的改变任务事件、改变组事件、均衡配置事件、检查均衡事件、验证均衡事件、分析均衡事件、改变平衡器状态事件、改变配置事件、以及它们的组合。
7.根据权利要求1所述的方法,其中所述探测例程被配置成记录与多节点计算机系统的现有状态相关的数据,而不干扰所述多节点计算机系统正执行的其他操作。
8.一种多节点计算机系统,包括多个处理器;多个存储器库;以及包括指令的探测管理工具,其中所述指令在由所述多个处理器之一所执行时会使得所述处理器执行用于监视多节点计算机系统性能的操作,所述操作包括探测与工作负荷在多节点计算机系统中的每个节点上的分布相关的一组系统事件;当在多节点计算机系统上执行线程的过程中出现所探测的事件时执行探测例程,其中所述探测例程被配置成记录与多节点计算机系统的现有状态相关的数据;以及在执行所述探测例程之后继续执行所述线程。
9.根据权利要求8所述的多节点计算机系统,其中所述多节点计算机系统的每个节点都包括一个或多个中央处理单元以及本地存储器库的集合。
10.根据权利要求9所述的多节点计算机系统,其中所述多节点计算机系统的每个节点都可以访问任何其他节点的本地存储器库。
11.根据权利要求9所述的多节点计算机系统,其中所述多节点计算机系统是使用非均匀存储器访问体系结构来配置的。
12.根据权利要求9所述的多节点计算机系统,其中线程管理器被配置成为每个新创建的线程分配原节点,其中线程分派器被配置成优先分派新创建的线程用以在所述原节点上执行,以及其中所探测的例程记录多长时间一次对新创建的线程进行分派用以在与所述新创建的线程相关联的原节点上执行。
13.根据权利要求8所述的多节点计算机系统,其中所探测的系统事件是从以下至少一项中选择的改变任务事件、改变组事件、均衡配置事件、检查均衡事件、验证均衡事件、分析均衡事件、改变平衡器状态事件、改变配置事件、以及前述事件的组合。
全文摘要
用于测量多节点计算机系统性能的方法、装置和制品。在一实施例中,可以探测多个与系统相关的事件。当出现所探测的事件时,可以调用探测例程来记录与该事件相关的系统变量的状态。具体而言,其中的事件(诸如线程创建、分派)和节点事件(诸如与对多节点系统中的工作负荷分布的验证或改变相关的事件)可以被探测以便记录在运行中的多节点计算机系统中发生这些事件的时候的变量状态。
文档编号G06F11/34GK1975676SQ200610141249
公开日2007年6月6日 申请日期2006年9月29日 优先权日2005年11月30日
发明者H·J·梅, R·K·基尔曼 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1