使用性能监视器优化系统性能的系统和方法

文档序号:6609089阅读:245来源:国知局
专利名称:使用性能监视器优化系统性能的系统和方法
技术领域
本发明一般地涉及一种使用性能监视器来优化系统性能的系统和方法。更特别地,本发明涉及一种监视多个不相似的处理器中的线程并基于分析针对各个线程所收集的数据来优化这些处理器之间的CPU时间的系统和方法。
背景技术
使用异类(heterogeneous)处理器的组合的计算系统变得日益普及。在这些环境中,一个或多个通用处理器与一个或多个专用处理器结合起来进行工作。作为不同的处理器类型,通用处理器使用与专用处理器所使用的指令集架构(ISA)不同的ISA。拥有不同的处理特性和ISA使得每个处理器类型能有效地执行不同类型的任务。
因为处理器的不同特性,所以这种异类环境对于诸如多媒体、游戏以及数值密集型应用之类的各种应用来说是具有吸引力的。在这种环境中,一个程序可以有多个线程。这些线程中的一些线程可以在通用处理器上执行,而其他线程可以在专用处理器上执行。然而,挑战是常常直到应用运行时才知道资源可用性。由此,挑战是预先确定应当分配给各种线程的CPU时间量。在异类处理环境中,这种挑战加重了,在异类处理环境中一种类型的CPU(基于第一ISA)可能受到抑制,而另一种类型的CPU(基于第二ISA)可能不受抑制。
由此,需要一种在异类处理环境中监视线程性能的系统和方法。还需要一种基于对线程性能数据的分析来动态地改变线程所接收的CPU时间量的系统和方法。

发明内容
已经发现,用一种使用性能监视器来收集线程性能数据的系统和方法能解决前面所提及的挑战。线程可以在基于第一指令集架构(ISA)的第一处理器或基于第二ISA的第二处理器上运行。单个计算机系统中可以包括多个第一处理器和多个第二处理器。第一处理器和第二处理器每个均可以存取存储在公共共享内存(memory)内的数据。对所收集的线程性能数据进行分析以确定相应的线程是否需要额外的CPU时间来优化系统性能。如果需要额外的CPU时间,则改变(增加)线程接收的CPU时间量,使得当调度器进行了调度时,线程接收该额外的时间。在一个实施例中,通过改变对应于线程的优先级值来实现增加的CPU时间。
在另一个实施例中,用户可以通过选择由性能监视器在收集数据时所存储和使用的性能选项来配置系统。用户还可以选择哪些处理器监视线程性能。以这种方式,如果一个处理器专用于特定任务而不换出(swapout)用于不同线程,则不太需要对运行在该处理器上的专用线程进行监视。
在另一个实施例中,使用公共调度器将线程调度到第一处理器和第二处理器二者。在这个实施例中,线程性能数据存储在共享内存中。调度器确定特定的处理器是否以低于预定义的CPU利用率在运行。如果处理器以低于预定义的利用率在运行,则像上面所描述的那样对线程所接收的针对该处理器的CPU时间进行调整。然而,如果处理器以可接受的利用率水平在运行,则不对线程所接收的CPU时间进行调整。
前面所述的是概要并且因而包含必要的说明、简化、总结以及对细节的省略;因此,本领域的普通技术人员将意识到该概要仅是说明性的,并且不旨在以任何方式进行限制。在下面给出的非限制性的详细的说明中,由权利要求书唯一限定的本发明的其他方面、创造性特征和优点将变得显而易见。


通过参考附图,可以更好地理解本发明,并且本发明的众多目的、特征和优点对于本领域的普通技术人员而言变得显而易见。
图1是示出了在异类处理器环境中的收集由调度器用来分配CPU时间的线程性能数据的性能监视器的示图;图2是示出了在异类处理器环境中使用性能监视器来收集线程数据所采取的步骤的高级流程图;图3是示出了由性能监视器采取的用来收集针对第一CPU的线程事件数据的步骤的流程图,该第一CPU基于第一指令集架构(ISA);图4是示出了由性能监视器采取的用来收集针对一个或多个第二CPU的线程事件数据的步骤的流程图,该第二CPU每个均基于第二ISA;图5是示出了由调度器采取的用来基于所收集的线程事件数据分配CPU时间的步骤的流程图;图6是在其中可以实现本发明的传统信息处理系统的框图;以及图7是包括多个在其中可以实现本发明的异类处理器的宽带引擎(engine)的框图。
具体实施例方式
下面的内容旨在提供对本发明的例子的详细描述,而且不应该将其作为对本发明自身的限制。相反,在该描述之后的权利要求书中所限定的本发明的范围内可以做出任何数量的变型。
图1是示出了在异类处理器环境中的收集由调度器用来分配CPU时间的线程性能数据的性能监视器的示图。在所示出的例子中,使用两种异类处理器类型,其中每种处理器类型均基于不同的指令集架构(ISA)。由基于第一ISA的处理器执行的进程包括在方框130中,而由基于第二ISA的处理器执行的进程包括在方框160中。由两个ISA所运行的进程包括性能监视器和各种线程。性能监视器150监视在第一ISA中出现的线程事件,而性能监视器180监视在第二ISA中出现的线程事件。线程140代表由基于第一ISA的处理器执行的各种线程,而线程170代表由基于第二ISA的处理器执行的各种线程。两个ISA的处理器能够存取存储在共享内存100中的数据。如在图7中更详细解释的那样,在一个实施例中,基于第一ISA的处理器是主处理组件(PPE),而基于第二ISA的处理器是协作处理组件(SPE)。在这个实施例中,使用宽带引擎总线来方便各种处理器对共享内存的存取。
在图1所示出的实施例中,线程事件数据存储在共享内存100中。针对运行在第一ISA处理器上(例如在PPE之一上)的线程的线程事件数据存储在内存区域110中,而针对运行在第二ISA处理器上(例如在SPE之一上)的线程的线程事件数据存储在内存区域120中。调度器190读取线程事件数据并相应地分配CPU时间。将已调度(schedule)的线程分派给基于第一ISA的处理器(例如处理器192)中的一个或者分派给基于第二ISA的处理器(例如处理器194)中的一个。在一个实施例中,公共调度器为两种类型的处理器(处理器192和194)调度线程。这个实施例便于在调度主线程运行在PPE之一上的同时对运行在SPE之一上的“辅助”线程进行调度。当然,本领域的普通技术人员将意识到可以使用单独的调度器,使得一个调度器对将在一种类型的处理器例如PPE上运行的线程进行调度,而另一个调度器对将在另一种类型的处理器例如SPE上运行的线程进行调度。
图2是示出了在异类处理器环境中使用性能监视器来收集线程数据所采取的步骤的高级流程图。首先,始于200的横在顶部的小流程图示出用户选择性能选项,在步骤210处性能选项被接收并且存储在性能配置文件220中。另外,用户可以选择哪些处理器应当对运行在处理器上的线程的性能进行监视。例如,特定的进程或线程可以被专用于给定的处理器,诸如SPE之一。作为专用进程,该进程不会被换进或换出,由此不需要对其性能进行监视以增加其CPU时间,因为该进程已经专用于处理器。而且,用户可以决定只对运行在特定处理器类型上的线程进行监视,诸如只对运行在PPE上的线程进行监视而不对运行在SPE上的那些进程进行监视,或者反之亦然。最后,用户还可以在各种处理器上设置阈值,使得只在处理器的利用率低于用户定义的阈值的时候才执行这里所描述的CPU时间的改变。以这种方式,用户可以选择触发针对线程以及处理器的额外CPU时间的阈值和事件,在处理器中由性能监视器收集线程事件。另外,可以建立默认的配置设置以设置要监视的默认事件以及默认处理器和阈值。当使用默认设置时,接着可以使用在小流程图中所示出的机制来改变这些默认设置。该小流程图在此之后在215处结束。
在更大的流程图中示出了性能监视处理,并且性能监视处理开始于该流程图上的225处,在步骤230处,检查存储在性能配置文件220中的性能选项。做出关于是否对在基于第一ISA(例如PPE)的处理器上运行的线程事件进行监视的决定(判决240)。如果对在基于第一ISA的处理器上运行的线程事件进行监视,则判决240转移到“是”分支245,在该分支上在步骤250处读取来自性能配置文件的选项,其指示要针对线程收集的事件的类型,并且在预定义的进程260处对收集针对运行在第一ISA处理器上的线程的线程事件数据的性能监视器进行初始化(参见针对处理细节的图3以及对应的文字)。另一方面,如果不对运行在基于第一ISA的处理器上的线程事件进行监视,则绕过步骤250和260,判决240转移到“否”分支265。
做出关于是否对在基于第二ISA(例如SPE)的处理器上运行的线程事件进行监视的决定(判决270)。如果对在基于第二ISA的处理器上运行的线程事件进行监视,则判决270转移到“是”分支275,在该分支上在步骤280处读取来自性能配置文件的选项,其指示要针对线程收集的事件的类型,并且在预定义的进程285处对收集针对运行在第二ISA处理器上的线程的线程事件数据的性能监视器进行初始化(参见针对处理细节的图4以及对应的文字)。另一方面,如果不对运行在基于第二ISA的处理器上的线程事件进行监视,则绕过步骤280和285,判决270转移到“否”分支290。在此之后处理在295处结束。
图3是性能监视器采取的用来收集针对基于第一指令集架构(ISA)的第一CPU的线程事件数据的步骤的流程图。当只使用了特定类型的一个处理器时,才使用图3中所描述的性能监视器。在一个实施例中,处理器组件包括单个主处理组件(PPE)处理器和多个协作处理组件(SPE)。在图7中更详细地描述了这个实施例。在具有单个PPE的实施例中,可以用图3中所示出的步骤来对在处理器上运行的线程进行监视。另一方面,当在处理器组件中存在特定类型的多个处理器时,使用图4来监视线程的性能。
回到图3,处理开始于300处,于是在步骤310处从性能配置文件220中取回针对被监视的处理器类型的设置。在步骤320处,针对在性能配置文件中所指明的事件而开启事件跟踪。在步骤330处,当前正在处理器上运行的线程完成或者超时。在步骤340处,性能监视器收集在执行刚刚完成的线程期间所积累的事件数据。在步骤350处,在共享内存100内的内存区域110中存储该事件数据。做出关于是否对配置设置进行重置的决定(判决360)。例如,如果用户对性能配置文件进行了编辑(参见图2,步骤200-215),则系统将对配置设置进行重置。为了对配置设置进行重置,判决360转移到“是”分支365,其返回以清除配置设置并且取回存储在性能配置文件中的配置设置。另一方面,如果不对配置设置进行重置,则判决360转移到“否”分支370,于是做出关于是否继续对在处理器上运行的线程进行监视的决定(判决375)。例如,用户可以针对该处理器而关断性能监视或者关闭系统。如果继续监视,则判决375转移到“是”分支380,其返回以收集针对下一个完成的线程的线程事件数据。这个循环继续进行直到关断监视或者发生系统关闭,在此时判决375转移到“否”分支385而性能监视在395处结束。
图4是示出了由性能监视器采取的用来收集针对一个或多个第二CPU的线程事件数据的步骤的流程图,该第二CPU每个均基于第二ISA。当只使用特定类型的多个处理器时,使用图4中所描述的性能监视器。在一个实施例中,处理器组件包括多个协作处理组件(SPE)。在图7中详细描述这个实施例。在具有多个SPE的环境中,可以使用图4所示出的步骤来监视在处理器上运行的线程。
处理开始于400处,于是在步骤410处从性能配置文件220中取回针对被监视的处理器类型的设置。在步骤420处,针对在性能配置文件中所指明的事件而开启事件跟踪。在步骤430处,当前正在处理器上运行的线程完成或者超时。做出关于是否对线程正在其上运行的处理器进行监视的决定(判决400)。例如,性能配置文件可以指示一个或多个处理器(例如SPE)未被监视。如果性能监视器正在对运行刚刚完成的线程的处理器进行监视,则判决440转移到“是”分支445,于是在步骤450处性能监视器收集在执行刚刚完成的线程期间所积累的事件数据。在步骤460处,在共享内存100内的内存区域120中存储该事件数据。另一方面,如果性能监视器未监视该SPE,则绕过步骤450和460,判决440转移到“否”分支465。
做出关于是否对配置设置进行重置的决定(判决470)。例如,如果用户对性能配置文件进行了编辑(参见图2,步骤200-215),则系统将对配置设置进行重置。为了对配置设置进行重置,判决470转移到“是”分支475,其返回以清除配置设置并且取回存储在性能配置文件中的配置设置。另一方面,如果不对配置设置进行重置,则判决470转移到“否”分支478,于是做出关于是否继续对在这种类型的处理器上运行的线程进行监视的决定(判决480)。如果继续进行监视,则判决480转移到“是”分支485,其返回以收集针对在处理器之一(只要该处理器正被监视着)上完成的下一个线程的线程事件数据。这个循环继续进行直到用户关断性能监视或者发生系统关闭,在那时判决480转移到“否”分支490而性能监视在495处结束。
图5是示出了由调度器采取的用来基于所收集的线程事件数据分配CPU时间的步骤的流程图。在所示出的实施例中,使用单个调度器来调度针对两种类型的处理器(基于例如PPE的第一ISA的那些处理器以及基于例如SPE的第二ISA的那些处理器)的线程。然而,可以容易地对所示出的调度器进行修改,使得可以使用超过一个调度器来将线程调度到各种处理器类型。
处理开始于500处,于是在步骤510处调度器从性能配置文件220取回CPU利用率阈值。在步骤520处,调度器取回关于下一个要分派给处理器之一的线程。在步骤530处,识别针对下一个线程的ISA和基于所识别ISA的处理器。例如,如果下一个线程运行在第一ISA上,则识别基于第一ISA(例如,PPE)的处理器。另一方面,如果该线程运行在第二ISA上,则识别基于第二ISA(例如,SPE之一)的处理器。
在所示出的实施例中,做出关于所识别的处理器的利用率是否低于针对该处理器所设置的阈值的决定(判决540)。在步骤510中事先读取针对各个处理器的阈值。如果所识别的处理器的利用率低于针对该处理器所设置的阈值,则判决540转移到“是”分支545,于是在步骤550处取回(根据它是运行在第一ISA上的线程或运行在第二ISA上的线程,从内存110或内存120中取回)由性能监视器针对该线程所收集的性能数据,并且对所取回的数据进行分析。在步骤560处,如果有必要,就基于该分析对线程将接收的CPU时间量进行调整。返回到判决540,如果所识别的处理器的利用率不低于针对该处理器所设置的阈值,则绕过步骤550到560,判决540转移到“否”分支565。在替代性的实施例中,不执行判决540,因此不管处理器的利用率如何,都执行步骤550和560。
在步骤570处,一旦当前正在所识别的处理器上运行的线程结束或者被换出,就将线程分派给所识别的处理器。做出关于是否对阈值进行重置的决定(判决575)。如果用户使用图2中所示出的步骤200到215对性能配置文件220进行了编辑,则阈值将被重置。如果阈值被重置,则判决575转移到“是”分支580,其返回到步骤510处读取新的利用率阈值。另一方面,如果利用率阈值未被重置,则判决575转移到“否”分支582。
做出关于是否继续进行处理的另一个决定(判决585)。在系统正在运行的同时,处理继续进行,目的是调度用于执行的线程(也即,处理继续进行直到系统关闭)。如果处理继续进行,则判决585转移到“是”分支588,其返回以调度并分派下一个用于执行的线程。这个循环继续进行直到系统关闭,在那时判决585转移到“否”分支590并且处理在595处结束。
图6说明了信息处理系统601,其是能够执行这里所描述的计算操作的计算机系统的简化例子。计算机系统601包括耦合到主机总线602的处理器600。第二级(L2)高速缓存604也耦合到主机总线602。主机-PCI桥606被耦合到主内存608,包括高速缓存和主内存控制功能,并且提供总线控制以处理在PCI总线610、处理器600、L2高速缓存604、主内存608和主机总线602之间的传输。主内存608耦合到主机-PCI桥606以及主机总线602。诸如LAN卡630之类的由主机处理器600单独使用的设备耦合到PCI总线610。服务处理器接口和ISA存取通路612提供了在PCI总线610与PCI总线614之间的接口。以这种方式,PCI总线614与PCI总线610绝缘。诸如闪存618之类的设备耦合到PCI总线614。在一种实现中,闪存618包括BIOS代码,该代码结合了用于各种低级系统功能和系统启动功能的必需的处理器可执行代码。
PCI总线614提供了用于由主机处理器600和服务处理器616所共享的各种设备的接口,该设备包括例如闪存618。PCI-ISA桥635提供总线控制以处理在PCI总线614和ISA总线640、通用串行总线(USB)功能645、电源管理功能655之间的传输,并且可以包括其他未示出的功能组件,诸如实时时钟(RTC)、DMA控制、终端支持、以及系统管理总线支持。非易失性RAM 620被附连到ISA总线640。服务处理器616包括用于在初始化步骤期间与处理器600进行通信的JTAG和I2C总线622。JTAG/I2C总线622还耦合到L2高速缓存604、主机-PCI桥606和主内存608,提供在处理器、服务处理器、L2高速缓存、主机-PCI桥以及主内存之间的通信路径。服务处理器616还可以使用系统电源资源,用于关断信息处理设备601的电源。
外围设备和输入/输出(I/O)设备可以被附连到各种接口(例如,并行接口622、串行接口664、键盘接口668和耦合到ISA总线640的鼠标接口670)。作为替代,附连到ISA总线640的超级I/O控制器(未示出)可以适应许多I/O设备。
为了将计算机系统601附连到另一个计算机系统以通过网络来复制文件,将LAN卡630耦合到PCI总线610。类似地,为了将计算机系统601连接到ISP以使用电话线连接来连接到互联网,将调制解调器675连接到串行端口664和PCI-ISA桥635。
尽管图6中所描述的计算机系统能够执行这里所描述的进程,但是这种计算机系统只是计算机系统的一个例子。本领域的普通技术人员将意识到,许多其他的计算机系统设计能够执行这里所描述的进程。
图7是说明具有主处理器和多个共享系统内存的辅助处理器的处理组件的框图。图7描绘了可以用于实现本发明的一种异类处理环境。主处理器组件(PPE)705包括处理单元(PU)710,其在一个实施例中充当主处理器并运行操作系统。例如,处理单元710可以是执行Linux操作系统的Power PC内核。PPE 705还包括诸如SPE 745、765和785的多个协作处理组件(SPE)。SPE包括充当PU 710的辅助处理单元的协作处理单元(SPU)、内存存储单元和本地存储设备。例如,SPE 745包括SPU 760、MMU 755和本地存储器(storage)759;SPE 765包括SPU770、MMU 775、和本地存储器779;以及SPE 785包括SPU 790、MMU795和本地存储器799。
可以将每个SPE配置成执行不同的任务,并且相应地在一个实施例中可以使用不同的指令集来存取每个SPE。例如,如果在无线通信系统中使用PPE 705,则每个SPE可以负责诸如调制、码片速率处理、编码、网络接口等单独的处理任务。在另一个实施例中,SPE可以具有同样的指令集并且可以彼此并行地使用以执行受益于并行处理的操作。
PPE 705还可包括针对PU710的使用的第二级高速缓存,诸如L2高速缓存715。另外,PPE 705包括在PU 710和SPU间共享的系统储存器720。例如,系统储存器720可以存储正在运行的操作系统(其可以包括内核)、设备驱动程序、I/O配置等等的镜像、正在执行的应用程序以及其他数据。系统内存720包括一个或多个SPE的本地存储单元,其被映射到系统内存720中的区。例如,可以将本地存储器759映射到映射区740,而可以将本地存储器799映射到映射区742。PU 710和SPE彼此间进行通信并且通过总线717与系统内存720进行通信,该总线717被配置成在这些设备间传递数据。
MMU负责在SPU的本地存储器和系统内存之间传输数据。在一个实施例中,MMU包括被配置成执行该功能的直接存储器存取(DMA)控制器。PU 710可以将MMU编程成控制哪些内存区可以供MMU中的每个使用。通过改变可供每个MMU使用的映射,PU可以控制哪个SPU可以存取系统内存720的哪个区。以这种方式,PU可以例如将系统内存的区指定成专用的供特定的SPU单独使用。在一个实施例中,PU 710以及其他SPU使用存储器映射可以存取SPU的本地存储器。在一个实施例中,PU 710管理用于所有SPU的公共系统内存720的存储器映射。存储器映射表可以包括PU 710的L2高速缓存715、系统内存720以及SPU的共享本地存储器。
在一个实施例中,SPU在PU 710的控制下处理数据。SPU可以是例如数字处理内核、微处理器内核、微控制器内核等,或者是上面这些内核的组合。本地存储器中的每个储存均是与特定SPU相关联的储存器区域。在一个实施例中,每个SPU可以将其本地存储器配置成专用的储存区域、共享储存区域,或者SPU可以将其本地存储器配置成部分专用和部分共享的储存。
例如,如果SPU需要大量的本地存储器,则SPU可以将其本地存储器100%地分派给只可由那个SPU存取的专用内存。另一方面,如果SPU需要最小量的本地存储器,则SPU可以将其本地存储器的10%分派给专用内存并且将剩余的90%分派给共享内存。共享内存可以由PU710和其他SPU存取。SPU可以保留其本地存储器的一部分,目的是为了使SPU在执行需要快速存取的任务的时候具有快速有保证的内存存取。SPU还可以在处理敏感数据时将其本地存储器的一部分保留为专用,例如当SPU正在执行加密/解密时,就是这种情况。
本发明的优选实现之一是客户端应用,也即是在代码模块中的指令集(程序代码)或者其他功能描述性材料,例如该代码模块可以驻留计算机的随机存取存储器中。直到计算机需要,指令集可以存储在另一个计算机存储器中,例如存储在硬盘驱动中或诸如光盘(最终供在CDROM中使用)或软盘(最终供在软盘驱动中使用)之类的可移动存储器中,或者经由互联网或其他计算机网络来下载。因此,本发明可以实现为在计算机中使用的计算机程序产品。另外,尽管可以方便地在由软件选择性地激活或重新配置的通用计算机中实现所描述的各种方法,但是本领域的普通技术人员还将认识到,可以以硬件、固件或构造成执行所需要的方法步骤的更专用的设备中实现这些方法。功能描述性材料是将功能性告知给机器的信息。功能描述性材料包括但不限于计算机程序、指令、规则、事实、可计算功能的定义、对象和数据结构。
尽管已经示出并描述了本发明的特定实施例,但是基于这里的教导,本领域的普通技术人员将很清楚,在不偏离本发明以及其更宽的方面的条件下,可以做出改变和修改。由此,所附权利要求书将在其范围中包括属于本发明的真实精神和范围内的所有这种改变和修改。此外,将理解到,本发明唯一地由所附权利要求书来限定。本领域的普通技术人员将理解,如果特定数量的引入的权利要求要素是想要的,则将在权利要求中明确地书面叙述这种意图,并且在缺少这种书面叙述的时候,不存在任何这样的限制。针对用于帮助理解的非限制性的例子,后续所附的权利要求书包含使用介绍性的短语“至少一个”和“一个或多个”以介绍权利要求要素。然而,不应该将使用这种短语解释成暗示由非限制性冠词“一”或“一个”来介绍权利要求要素会将包含所介绍的这种权利要求要素的任何特定的权利要求限制到只包含一个这样的要素的发明,即使当同一权利要求包括介绍性的短语“一个或多个”或“至少一个”以及诸如“一”或“一个”之类的非限定性冠词,也是如此;同样的情况适用于在权利要求书中对限定性冠词的使用。
权利要求
1.一种计算机实现的方法,其包括收集对应于在一个或多个第一处理器上运行的第一多个线程的线程性能数据,所述第一处理器基于第一指令集架构(ISA);收集对应于在一个或多个第二处理器上运行的第二多个线程的线程性能数据,所述第二处理器基于第二ISA,其中所述第一处理器和所述第二处理器共享可以从所述第一处理器和所述第二处理器进行存取的内存;对针对所述第一多个线程和第二多个线程所收集的线程性能数据进行分析;以及基于所述分析,对分配给所述第一多个线程和第二多个线程中所包括的至少一个线程的CPU时间量进行调整。
2.根据权利要求1所述的方法,其中对CPU时间量进行调整包括修改优先级值。
3.根据权利要求1所述的方法,其还包括从用户接收性能选项;以及在存储区域中存储所述接收的性能选项,其中所述收集的性能数据对应于所述接收的性能选项。
4.根据权利要求3所述的方法,其还包括基于所述接收的性能选项,选择所述一个或多个第一处理器以及所述一个或多个第二处理器,其中仅针对在所选择的第一处理器和第二处理器上运行的线程来收集线程性能数据。
5.根据权利要求3所述的方法,其中所述分析还包括将所述收集的线程性能数据与在所述接收的性能选项中包括的一个或多个阈值进行比较。
6.根据权利要求1所述的方法,其还包括使用公共调度器对所述第一多个线程和第二多个线程进行调度,所述公共调度器从所述共享内存中读取所述收集的线程性能数据。
7.根据权利要求1所述的方法,其中公共调度器对所述第一多个线程和第二多个线程进行调度,所述方法还包括在所述共享内存中存储所收集的线程性能数据;取回对应于所述第一处理器中的至少一个和对应于所述第二处理器中的至少一个的CPU线程利用率阈值;以及将所述取回的CPU线程利用率阈值与对应于所述取回的CPU线程利用率阈值的当前CPU利用率进行比较,其中只对那些具有低于所述取回的CPU线程利用率阈值的当前CPU利用率的处理器执行所述分析和调整。
8.一种信息处理系统,其包括多个异类处理器,其中所述多个异类处理器包括一个或多个基于第一指令集架构(ISA)的第一处理器和一个或多个基于第二指令集架构(ISA)的第二处理器;对应于所述多个异类处理器中的每个的本地存储器;可以由所述异类处理器来存取的共享内存;以及存储在所述本地存储器中的一个本地存储器中的一组指令,其中一个或多个所述异类处理器执行该组指令以执行下面的动作收集对应于在所述第一处理器上运行的第一多个线程的线程性能数据;收集对应于在所述第二处理器上运行的第二多个线程的线程性能数据;分析针对所述第一多个线程和第二多个线程所收集的线程性能数据;以及基于所述分析,对分配给所述第一多个线程和第二多个线程中所包括的至少一个线程的CPU时间量进行调整。
9.根据权利要求8所述的信息处理系统,其还包括执行下面动作的指令从用户接收性能选项;以及在存储区域中存储所述接收的性能选项,其中所述收集的性能数据对应于所述接收的性能选项。
10.根据权利要求8所述的信息处理系统,其还包括执行下面动作的指令基于所述接收的性能选项,选择所述一个或多个第一处理器以及所述一个或多个第二处理器,其中仅针对在所选择的第一处理器和第二处理器上运行的线程来收集线程性能数据。
11.根据权利要求8所述的信息处理系统,其还包括执行下面动作的指令将所述收集的线程性能数据与在所述接收的性能选项中包括的一个或多个阈值进行比较。
12.根据权利要求8所述的信息处理系统,其还包括执行下面动作的指令使用公共调度器对所述第一多个线程和第二多个线程进行调度,所述公共调度器从所述共享内存中读取所述收集的线程性能数据。
13.根据权利要求8所述的信息处理系统,其中公共调度器对所述第一多个线程和第二多个线程进行调度,所述信息处理系统还包括执行下面动作的指令在所述共享内存中储存所收集的线程性能数据;取回对应于所述第一处理器中的至少一个和对应于所述第二处理器中的至少一个的CPU线程利用率阈值;以及将所述取回的CPU线程利用率阈值与对应于所述取回的CPU线程利用率阈值的当前CPU利用率进行比较,其中只对那些具有低于所述取回的CPU线程利用率阈值的当前CPU利用率的处理器执行所述分析和调整。
全文摘要
本发明提出了一种使用性能监视器来优化系统性能的系统、方法和程序产品。该系统使用性能监视器来收集针对在第一ISA处理器或第二ISA处理器上运行的线程的线程性能数据。在单个计算机系统中可以包括多个第一处理器和多个第二处理器。所述第一处理器和第二处理器每个均可以存取存储在公共共享内存中的数据。对所收集的线程性能数据进行分析以确定对应的线程是否需要额外的CPU时间以优化系统性能。如果需要额外的CPU时间,则改变(增加)线程接收的CPU时间量,因此当调度器进行了调度时线程接收该额外的时间。在一个实施例中,通过改变对应于线程的优先级值来完成额外的CPU时间。
文档编号G06F15/16GK101093456SQ200710103849
公开日2007年12月26日 申请日期2007年5月16日 优先权日2006年6月21日
发明者S·J·曼宁, J·M·斯塔福德, D·J·厄尔布, M·小阿吉拉 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1