CN102893261A - 空闲转换采样 - Google Patents
空闲转换采样 Download PDFInfo
- Publication number
- CN102893261A CN102893261A CN2011800237596A CN201180023759A CN102893261A CN 102893261 A CN102893261 A CN 102893261A CN 2011800237596 A CN2011800237596 A CN 2011800237596A CN 201180023759 A CN201180023759 A CN 201180023759A CN 102893261 A CN102893261 A CN 102893261A
- Authority
- CN
- China
- Prior art keywords
- thread
- monitored
- scheduling
- processor
- computer
- 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
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/86—Event-based monitoring
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
过程基于事件产生样本。该过程使用调度监视器识别由当前处理器调度的下一个调度的被监视线程。该过程设置下一个调度的被监视线程的处理器亲合性,使得下一个调度的被监视线程仅在当前处理器上运行,而不能迁移到不同的处理器。在下一个调度的被监视线程的处理器亲合性已被设置到处理器后,该过程还使用在当前处理器上运行的被采样线程获取下一个调度的被监视线程调用栈。在获得下一个调度的被监视线程调用栈后,该过程恢复下一个调度的被监视线程的处理器亲合性。
Description
技术领域
本发明一般涉及计算环境。更具体地,本公开涉及采样技术。
背景技术
在应用特征分析(profiling)工具中典型地使用基于时间的或基于硬件事件的采样技术来确定资源的特定使用。当前的方法是周期性地产生中断以获取样本。当采取中断时,收集并记录样本数据。样本数据的例子是中断的进程/线程、正执行的指令或可选地在样本时间正被访问的数据地址。此后聚集收集的数据,并生成按照地址、符号、进程等显示样本分布的报告。多种工具是基于该技术的。样本的完整执行上下文典型地没有被记录,且不在报告中提供。
已做出尝试,通过在样本时间获得调用栈而改进该技术。现有的工具集可试图直接遍历(walk)调用栈或调用单独的(采样器)线程上的函数来获得被中断线程的调用栈。试图在中断级遍历调用栈不理想,因为一些应用可具有已被页调出(page out)的栈。此外,栈遍历代码典型地执行存储器分配,这在中断级是不允许的。结果,当被请求时,可利用用户模式的采样线程来遍历调用栈。在多处理器系统上,请求单独的线程收集被中断线程的调用栈可允许被中断线程迁移到不同的处理器并向前进展,即,继续执行,同时收集调用栈。收集的调用栈不会反应线程在其被中断时的状态。
发明内容
在本发明的一个方面,提供了一种计算机程序产品。该计算机程序产品包括具有计算机可读程序的计算机可用介质。当在计算机上执行时,该计算机可读程序使得计算机基于事件生成样本。而且,当在计算机上执行时,该计算机可读程序使得计算机使用调度监视器识别在当前处理器上被调度的下一个调度的被监视线程。此外,当在计算机上执行时,该计算机可读程序使得计算机设置下一个调度的被监视线程的处理器亲合性(affinity),使得下一个调度的被监视线程仅在当前处理器上运行,而不能迁移到不同的处理器上。当在计算机上运行时,该计算机可读程序也使得计算机在下一个调度的被监视线程的处理器亲合性已被设置到当前处理器上后,使用在当前处理器上运行的采样器线程获取下一个调度的被监视线程调用栈。此外,当在计算机上执行时,该计算机可读程序使得计算机在已获得下一个调度的被监视线程调用栈后,恢复下一个调度的被监视线程的处理器亲合性。当在计算机上执行时,计算机可读程序使得计算机记录用于下一个调度的被监视线程的调用栈。
在本发明的另一方面,提供了一种过程。该过程基于事件产生样本。而且,该过程使用调度监视器识别被当前处理器调度的下一个调度的被监视线程。此外,该过程设置下一个调度的被监视线程的处理器亲合性,使得下一个调度的被监视线程仅在当前处理器上运行,而不能迁移到不同的处理器。该过程也在下一个调度的被监视线程的处理器亲合性已被设置到当前处理器上后,使用在当前处理器上运行的采样器线程获取下一个调度的被监视线程调用栈。此外,该过程在已获得下一个调度的被监视线程调用栈后,恢复下一个调度的被监视线程的处理器亲合性。该程也记录用于下一个调度的被监视线程的调用栈。
在本发明的又一方面,提供了一种系统。该系统包括基于事件生成样本的当前处理器。而且,该系统包括操作系统,其(ⅰ)使用调度监视器,识别由当前处理器调度的下一个调度的被监视线程,以及(ⅱ)设置下一个调度的被监视线程的处理器亲合性,使得下一个调度的被监视线程仅在当前处理器上运行,而不能迁移到不同的处理器。此外,该系统包括特征分析器,其(ⅰ)在下一个调度的被监视线程的处理器亲合性已被设置到当前处理器上后,使用被配置为仅在当前处理器上运行的采样器线程,获取下一个调度的被监视线程,(ⅱ)在已获得下一个调度的被监视线程调用栈后,恢复下一个调度的被监视线程的处理器亲合性,以及(Ⅲ)记录用于下一个调度的被监视线程的调用栈。
在本发明的另一方面,提供了一种计算机程序产品。该计算机程序产品包括具有计算机可读程序的计算机可用介质。当在计算机上执行时,该计算机可读程序使得计算机基于事件生成样本。而且,当在计算机上执行时,该计算机可读程序使得计算机使用调度监视器识别由当前处理器调度的最后调度的被监视线程。此外,当在计算机上执行时,该计算机可读程序使得计算机设置最后调度的被监视线程的处理器亲合性,使得最后调度的被监视线程仅在当前处理器上运行,而不能迁移到不同的处理器。当在计算机上执行时,该计算机可读程序也使得计算机在最后调度的被监视线程的处理器亲合性已被设置到当前处理器后,使用在当前处理器上运行的采样器线程获取最后调度的被监视线程。此外,当在计算机上执行时,该计算机可读程序使得计算机在已获得最后调度的被监视线程调用栈后,恢复最后调度的被监视线程的处理器亲合性。当在计算机上执行时,计算机可读程序使得计算机记录用于最后调度的被监视线程的调用栈。
附图说明
现在将参考附图、仅通过举例的方式描述本发明的实施例,在附图中:
图1示出了根据本发明实施例采样空闲转换(idle transition)的采样系统。
图2A示出了根据本发明实施例可被中断处理器利用以用于到空闲线程(to_idle_thread)的过程。
图2B示出了根据本发明实施例的可被中断处理器利用以用于来自空闲线程(from_idle_thread)的过程。
图3A示出了根据本发明实施例的可被调度器中的调度监视代码利用以用于到空闲线程的过程。
图3B示出了根据本发明实施例的可被调度器中的调度监视代码利用以用于来自空闲线程的过程。
图4示出了根据本发明实施例的用于通知特征分析器的过程。
图5示出了根据本发明实施例的用于在过程块中排队的中断后端的过程。
图6示出了根据本发明实施例的在作为过程块的结果而被唤醒后特征分析器执行的过程。
图7示出了根据本发明实施例的用于特征分析器向操作系统通知样本已完成的过程。
图8A示出了根据本发明实施例的可被空闲转换采样利用以用于来自空闲线程的过程。
图8B示出了根据本发明实施例的可被空闲转换采样利用以用于到空闲线程的过程。
图9示出了根据本发明实施例的采样空闲转换的系统的框图。
具体实施方式
一种方法和系统使用采样技术来确定为什么一个或多个处理器没有被完全利用。确定为什么在一个或多个处理器上运行的应用没有伸缩(scale)可以是非常困难的。在某些环境中,特别是支持事务处理的那些环境中,重要的是确定最大事务率并驱使系统完全利用所有的处理资源。当达到最大事务率、但不是所有的处理器都被完全利用时,有某种类型的瓶颈阻止完全利用。通过确定用于在处理器变得空闲之前执行的最后线程(即,到空闲线程)的上下文,以及/或用于在处理器具有工作可做之后而执行的第一个线程(即,来自空闲线程)的上下文,可获得信息以帮助确定瓶颈的原因。
一种方法是收集用于可对瓶颈有贡献的那些线程的调用栈。即,例如,采样代码可简单地获得仅用于这些线程的调用栈,所述线程最近运行于在样本时间空闲的处理器上。这涉及保持跟踪哪个线程在哪个处理器上运行,以便收集用于正确线程的调用栈。但是,当正在收集调用栈时,这些线程可能迁移并在其他处理器上执行。
保持除了将收集在其上的调用栈的处理器之外的所有的处理器繁忙可阻止线程迁移。这可通过使得采样器线程在这些处理器上自旋(spin)直到获得用于感兴趣的线程的调用栈而完成,但这会损害整体应用性能。
反之,通过阻止感兴趣的线程迁移到不同的处理器(这可在一个实施例中通过设置其处理器亲合性以将其限制为仅在一个处理器上运行而完成),其他的处理器不需要被自旋,这样其他的处理器能自由地继续运行应用。因此,通过阻止线程迁移,存在最小的应用性能恶化。不是通过唤醒所有的采样器线程(即,每个处理器一个线程)且使得采样器线程自旋直到获得调用栈而严重影响正被特征分析的应用的性能,一种方法、系统和计算机程序产品可设置处理器亲合性以阻止线程迁移,这对被特征分析的应用具有最小的性能损害,并且也允许采样空闲转换。在一个实施例中,对于已被看到的调用栈,仅递增发生计数。
可利用到空闲(to_idle)处理和来自空闲(from_idle)处理中的任一个或二者来设置处理器亲合性以防止线程迁移。利用了采样方法。
图1示出了根据本发明实施例的采样空闲转换的采样系统100。采样系统100包括与对应用102进行特征分析的特征分析器104交互的应用102。特征分析器104与操作系统106交互。特征分析器104帮助确定为什么处理器未被充分利用,即,什么使得处理器处于空闲而不是执行有用的工作。该处理基于采样何时处理器空闲。由于调用栈在样本时间被收集,可精确确定对空闲状态潜在地具有贡献的代码。确定代码的位置和导致代码到该位置的调用序列。
与采样同时,调度器108通过调度监视代码监视线程调度。该代码是操作系统的一部分或通过设备驱动器(device driver)或内核扩展而被添加。关于到线程和/或来自线程的信息也可被存储。彼此异步地发生一些事情。调度监视代码正在监视线程调度。而且,处理器以恒定速度(即,基于时间或在事件的每n次发生时,即,基于事件)产生样本。而且,采样器线程侦听命令以使得它们获取感兴趣的线程的调用栈,这由特征分析器104执行。采样器线程是特征分析器线程。可利用许多采样器线程,因为可利用多个处理器。每个采样器线程具有对单个处理器的亲合性。采样器线程可以是非常高优先级的线程,这样当被信号通知时它们立即运行以进行诸如获取目标线程的调用栈的工作。目标线程是其调用栈将被获得的线程。而且,目标处理器是这样的处理器,其上运行有目标线程,且其上亲合性被设置,这样目标线程保持在该处理器上,直到获得其调用栈。
一旦因为采样到空闲或来自空闲而做出决定,将获得目标线程的调用栈。目标线程在该时间内被阻止进行任何向前进展,除非需要向前进展以便允许获取调用栈。换句话说,目标线程被保持在其所在之处,直到收集到调用栈。之后,目标线程可恢复。由于调用栈由特征分析器采样器线程收集,目标线程有可能开始运行在另一个可用的处理器上。在采样器线程开始收集调用栈时,目标线程可能不再位于其被采样的点上,且调用栈可能不会精确地反映在样本时间目标线程在哪里。
不是通过将目标线程“挡在”(box out)除了目标处理器以外的处理器(即,给所有其他处理器无用的繁忙的工作以使它们自旋,这样它们对于目标线程来说不是可用于在其上运行的)之外来显著地阻碍应用性能,目标线程可在其上运行的处理器组被限定为目标处理器。换句话说,其余的处理器不会自旋,且可继续执行真正的工作。在目标线程的调用栈被获取时,仅目标处理器受到影响。一旦目标的调用栈被获取,目标线程被允许再次在任何可用的处理器上运行。设置处理器亲合性,以使得目标线程仅可在其具有亲合性的一个处理器上运行。
采样系统100可具有多个处理器。例如,采样系统100可具有第一处理器112、第二处理器114…以及第n个处理器116。在给定的时间仅一个线程可在每个处理器上运行。但是,该线程有可能在不同的处理器和不同的时间运行。在采样系统100中,一个或多个处理器基于时间或基于事件产生中断。中断可启动样本。因此,每个处理器可产生中断,而不管每个其他处理器的状态,例如,空闲或不空闲。用于每个处理器的中断由硬件产生,并由中断处理器(interrupt handler)110处理,其确定中断发生所在的处理器是否空闲,即,是否没有线程在特定处理器上运行,或不空闲。中断处理器110启动收集调用栈。而且,中断处理器可通知或信号通知特征分析器采样器线程。在一个实施例中,如果中断处理器110确定特定处理器是空闲的,则中断处理器110可发送诸如延迟处理标志的标志到调度器108,其随后可以调度或不调度采样器线程在该特定处理器上运行以采样目标线程。为避免在采样期间的线程迁移,可建立线程到特定处理器的处理器亲合性。对于来自空闲线程,调度器108设置处理器亲合性。对于到空闲线程,中断处理器110或特征分析器104可设置处理器亲合性。
在来自空闲处理期间,可将通知从调度器108发送给特征分析器104。被唤醒并在处理器空闲后运行的第一感兴趣的被监视线程很可能是引起瓶颈的线程。随着系统的运行,调度监视代码等着被告知保存下一个将运行的感兴趣的线程,例如,观察延迟处理标志的设置。在其上处理器是空闲的样本之后,采样代码通过发送/设置延迟处理标志,告知调度监视代码这么做。调度监视代码将保存在处理器被检测到在前一个样本中是空闲的之后运行的第一感兴趣的/被监视的线程。同时,随着样本的发生,确定处理器是否空闲。如果处理器繁忙,什么也不做。如果处理器空闲,为调度监视代码设置延迟处理标志以开始监视线程调度并保存将被调度在处理器上的下一个感兴趣的/被监视的线程。调度监视代码随后清理延迟处理标志。样本随后完成。
同样的处理可一次发生在多于一个处理器上。例如,如果两个处理器是空闲的,并碰巧在基本上相同的时间调度感兴趣的线程,则两个采样器线程可同时获取调用栈。
而且,到空闲通知可从中断处理器110被发送到特征分析器104。在处理器变得空闲之前在其上运行的最后感兴趣的/被监视的线程很可能被某种资源竞争影响。例如,该线程可能不会继续,因为它在等待某种被竞争的资源。在到空闲线程后其他线程不可用于运行。随着系统运行,调度监视代码记住在每个处理器上运行的最后感兴趣的线程。由于现在被记住的线程可能先前已在不同的处理器上被记住,将它从其他处理器的记住列表中移除。同时,发生基于时间或基于事件的周期性样本。在每个样本处,确定处理器是否空闲。如果处理器繁忙,不做任何事情。如果处理器空闲,确定感兴趣的被监视线程是否最后在该处理器上运行。如果感兴趣的线程最后在该处理器上运行,则该线程的处理器亲合性被设置到当前处理器。
在一个实施例中,仅利用来自空闲线程。在可替换的实施例中,仅利用到空闲线程。在又一个可替换的实施例中,利用来自空闲线程和到空闲线程二者。
在另一个实施例中,可与调度器108结合利用诸如调度监视器的组件。调度监视器可以是操作系统106的一部分,或作为内核扩展或设备驱动器的一部分被添加。在另一个实施例中,诸如中断后端工作器(interruptback-end worker)、offlevel处理工作器、中断后端工作器(interruptbackend worker)等组件可作为内核扩展或设备驱动器的一部分被添加。需要该组件,因为可在中断层执行的动作集是有限的,且在中断处理器完成之后,一些工作必须被推迟到随后的时间。
特征分析器104可获取调用栈,即,执行上下文。而且,特征分析器104可恢复处理器亲合性。
图2A示出了根据本发明实施例的可由中断处理器110利用的用于到空闲线程的过程200。在过程块202,过程200确定被中断进程id(“PID”)以及/或线程id(“TID”)。而且,在判定块204,过程200确定微处理器是否空闲。如果微处理器不空闲,过程200前进到过程块210以恢复被中断的线程。或者,如果微处理器是空闲的,过程200前进到判定块206以确定由调度监视代码保存的到空闲PID是否是感兴趣的。如果保存的到空闲PID不是感兴趣的,过程200前进到过程块210以在被中断线程中恢复。或者,如果保存的到空闲PID是感兴趣的,过程200前进到过程块208以通知特征分析器。过程200然后前进到过程块210以恢复被中断线程。
图2B示出了根据本发明实施例的可由中断处理器110利用的用于来自空闲线程的过程250。在过程块252,过程250确定被中断的PID/TID。而且,在判定块254,过程250确定微处理器是否空闲。如果微处理器不空闲,过程250前进到过程块258以恢复被中断线程。或者,如果微处理器是空闲的,过程250前进到判定块255以确定延迟处理标志是否已被设置。如果已设置延迟处理标志,过程250前进到过程块258以恢复被中断线程。如果还未设置延迟处理标志,过程250前进到过程块256以设置用于调度器108的延迟处理标志。过程250随后前进到过程块258以恢复被中断线程。
图3A示出了根据本发明实施例的可由调度器108利用的用于到空闲线程的过程300。在判定块302,过程300确定是否有感兴趣的离开(outgoing)线程。如果没有感兴趣的离开线程,过程300前进到过程块306以继续线程切换。如果有感兴趣的离开线程,过程300继续到过程块304以保存离开PID和/或TID。过程300随后前进到过程块305以从其他处理器的保存的PID/TID列表移除离开PID/TID。过程300随后前进到过程块306以继续线程切换。
图3B示出了根据本发明实施例的可由调度器108使用的用于来自空闲线程的过程350。在判定块352,过程350确定是否已设置延迟处理标志。如果未设置延迟处理标志,过程350前进到过程块360以继续线程切换。或者,如果已设置延迟处理标志,过程350前进到判定块354以确定是否有感兴趣的进来(incoming)线程。如果没有感兴趣的进来线程,过程350前进到过程块360以继续线程切换。或者,如果有感兴趣的进来线程,过程350前进到过程块356以重置延迟处理标志。过程350随后前进到处理快358以通知特征分析器104。另外,过程350随后前进到过程块350以继续线程切换。
图4示出了根据本发明实施例的用于通知特征分析器104的过程400。在判定块402,过程400确定是否有特征分析器要通知。如果没有特征分析器要通知,过程前进到完成块408。或者,如果有特征分析器要通知,过程400前进到过程块404以锁存和/或保存通知数据。过程400前进到过程块406以排队中断后端。结果,由操作系统106来排队工作项。当由操作系统106出队该中断后端时,该工作项中的一条信息是将运行的工作器功能的地址。过程400随后前进到完成块408。
图5示出了根据本发明实施例的用于在过程块406中执行中断后端的过程500。在过程块502,过程500指示未完成的样本。而且,过程500随后前进到过程块504以将目标线程的处理器亲合性设置到当前处理器。此外,过程500随后前进到过程块506以唤醒特征分析器。
图6示出了根据本发明实施例的在作为过程块506的结果由中断处理器或调度器中的任一个发送信号后由特征分析器执行的过程600。在过程块602,过程600使特征分析器等待事件或信号。如果线程是到空闲线程,事件或信号来自中断处理器110。如果线程是来自空闲线程,事件或信号来自调度器108。而且,在过程块604,过程600接收来自操作系统106的信号。此外,在过程块606,过程600读取包含关于目标线程的信息的样本数据。在过程块608,过程600请求用于目标线程的调用栈。而且,在过程块610,过程600恢复目标线程的处理器亲合性。在过程块612,过程600处理返回的调用栈。在一个实施例中,返回的调用栈的处理可涉及将返回的调用栈遍历到树中。而且,可增加到空闲计数和/或来自空闲计数。到空闲计数或来自空闲计数指示调用栈(即调用序列)多少次被看到在叶节点结束。在过程块614,过程600通知操作系统106样本已完成。过程600随后返回到过程块602以等待事件或信号。
图7示出了根据本发明实施例的过程700,其通知操作系统106样本已完成。在过程块702,样本已完成。而且,在过程块704,过程700指示没有未完成的样本。在具有未完成的样本的处理器上不启动额外的样本。此外,在过程块706,过程700重新初始化中断。
在一个实施例中,用于在处理器变得空闲之前的最后监视的线程的空闲转换报告可通过在每个处理器的表中维护最后调度项而被支持。当发生基于时间的样本且该样本中断空闲的处理器时,采样器线程被唤醒并获得最后监视的线程的调用栈。它的调用栈被遍历到树中,且刚插入的调用栈的叶节点的基本到空闲计数被递增。为了获得来自空闲被监视线程的反映在其变得空闲时其状态的调用栈,调用栈必须在处理器空闲时或者在确定线程将被调度时并在其获得机会执行前被获取。在任一种情况下,用于到空闲样本被获取后所调度的第一个被监视线程的调用栈被遍历到树中,且刚插入的调用栈的叶节点的基本来自空闲十进制计数被递增。可生成并查看报告。
当获取了样本并确定处理器空闲时,采样代码向调度器监视代码指示在该处理器上的下一个调度的被监视线程需要被采样。该线程在每个处理器的控制块中被识别,且直到下一个样本被提取时才被更新。
当调度器监视代码检测到来自空闲线程调用栈应当被记录且将被调度的线程是被监视的线程,则它反而使得采样器线程被调度。在一个实施例中,这可通过排队中断后端或第二级中断处理器(其具有强制采样线程处理用于被监视线程的调用栈的指示)来完成。在另一个实施例中,调度监视代码可直接强制下一个调度采样线程,其具有获得用于被监视的线程的调用栈所需的信息。该信息可简单地通过更新映射的样本数据区域中的来自空闲被监视线程标识而被传递。
如果用于来自空闲线程的调用栈在其被调度前不能被获取,则用于不是当前正被执行的线程的调度栈可在处理器空闲时被获取。这些栈可限于一子集,诸如,仅是那些在空闲的处理器上最后调度的子集。也可能存在其他的标准,诸如,排除先前没有返回栈的线程或被识别为是守护(daemon)线程的线程。如果来自空闲线程的栈在处理器空闲时被捕获,则该先前被捕获的调用栈可在以后(诸如,在下一个本样时)被使用。线程的该子集可限于仅是在空闲的处理器上最后被调度的那些。不同的采样器线程可同时获取栈。一些量的逻辑可识别其调用栈正被获取的线程列表,并确保它们不会作为不同处理器上的时间问题的结果而被复制。
图8A示出了根据本发明实施例的可为空闲转换采样利用的用于来自空闲线程的过程800。在过程块802,过程800基于事件产生样本。而且,在过程块804,如果基于中断确定一处理器空闲,过程800利用调度监视器识别由该处理器调度的下一个调度的被监视线程。此外,在过程块806,过程800设置下一个调度的被监视线程的处理器亲合性,使得下一个调度的被监视线程仅在该处理器上运行,而不能迁移到不同的处理器。在过程块808,在下一个调度的被监视线程的处理器亲合性已被设置到该处理器后,过程800利用在该处理器上运行的被采样线程,获取下一个调度的被监视线程调用栈。此外,在过程块810,在已获得下一个调度的被监视线程调用栈后,过程800恢复下一个调度的被监视线程的处理器亲合性。在过程块812,过程800记录用于下一个调度的被监视线程的调用栈。该记录可以是报告的形式。
图8B示出了根据本发明实施例的可为空闲转换采样利用的用于到空闲线程的的过程850。在过程块852,过程850基于事件产生样本。而且,在过程块854,如果基于中断确定一处理器空闲,过程850利用调度监视器识别由该处理器调度的最后调度的被监视线程。此外,在过程块806,过程850设置最后调度的被监视线程的处理器亲合性,使得最后调度的被监视线程仅在该处理器上运行,而不能迁移到不同的处理器。而且,在处理器块858,通过最后调度的被监视线程调用栈,过程850获得用于最后调度的被监视线程的执行上下文。此外,在过程块860,在已获得最后调度的被监视线程调用栈后,过程850恢复最后调度的被监视线程的处理器亲合性。在过程块864,过程850记录用于最后调度的被监视线程的调用栈。记录可以是报告的形式。
在此描述的过程可以在一个或多个通用的、多用的或专用的微处理器中实现。这样的微处理器将执行指令(不管是汇编、编译或机器级的)以执行所述过程。这些指令可由本领域普通技术人员根据对应于所述过程的图的描述而编写,并被存储或传递在计算机可读介质上。也可使用源代码或任何其他已知的计算机辅助设计工具来创建这些指令。
图9示出了根据本发明实施例的采样空闲转换的系统900的框图。在一个实施例中,系统900适于存储和/或执行程序代码,并使用通用计算机或任何其他硬件等价物而被实施。由此,系统900包括处理器902(其可被称为“微处理器”)、存储器912(例如,随机存取存储器(“RAM”),以及/或只读存储器(“ROM”))、特征分析器104以及各种输入/输出设备904。
处理器902通过系统总线直接或间接耦合到存储器912。存储器912可包括在程序代码的实际执行期间使用的本地存储器、大容量存储器,以及/或高速缓存存储器,其提供至少一部分程序代码的临时存储,以便降低在执行期间必须从大容量存储器中获取代码的次数。
输入/输出设备904可直接地或通过介于其间的输入/暑促控制器耦合到系统900。而且,输入/输出设备904可包括键盘、小键盘、鼠标、用于捕获语音命令的话筒、指点设备以及其他可被本领域普通技术人员识别的用户输入设备。而且,输入/输出设备904可包括接收器、发射器、扬声器、显示器、图像捕获传感器、生物识别传感器等。此外,输入/输出设备404可包括存储设备,诸如磁带驱动器、软盘驱动器、硬盘驱动器、光盘(“CD”)驱动器、数字视频盘(“DVD”)驱动器等。
网络适配器也可被耦合到系统900以使得系统900通过介于其间的私有或共有网络变得耦合到其他系统、远程打印机或存储装置。调制解调器、线缆调制解调器以及以太网卡仅是当前可获得一些网络适配器的类型。
应当理解,在此描述的方法和系统可以采取完全硬件实施例、完全软件实施例或包含硬件和软件元件的实施例的形式。如果利用软件来实施方法或系统,软件可包括但不限于固件、驻留软件、微代码等。尽管在图9中图示的实施例中仅清楚地示出一个微处理器,系统可具有多于一个的微处理器。
在此描述的任何配置可与虚拟机一起使用。虚拟机可被配置为保持跟踪调用状态并返回该状态,该状态引用虚拟机支持的接口以返回调用栈。例如,关于线程执行的信息可通过踪迹(trace)数据而获得。该信息可包括从与感兴趣的线程有关的调用栈获得调用栈信息。可利用虚拟机来获取调用栈信息。虚拟机可使用各种方法来获得调用栈信息。例如,可利用进入/退出事件、应用计时器滴答、或采样被被插装值的插装代码。选择的采样线程可发送调用到虚拟机以获得调用栈信息。选择的采样线程可通过虚拟机工具接口发送到虚拟机的调用。虚拟机工具接口可返回调用栈信息到采样线程或可将调用栈信息存储在某个工作区域。获得信息可被放置于树中以用于以后的分析。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
在整篇说明书中提及“一个实施例”、“一实施例”或类似的语言意味着与该实施例结合描述的特定特征、结构或特点包含在本发明的至少一个实施例中。因此,在整篇说明书中出现的短语,“在一个实施例中”、“在一实施例中”以及类似的语言可以(但不必须)指同样的实施例。而且,所描述的本发明的特征、结构或特点可以任何合适的方式组合在一个或多个实施例中。因此,即使特征初始地在特定组合中被要求保护,来自所要求保护的组合的一个或多个特点在某些情况下可从该组合被删除,且所要求保护的组合可指向子组合或子组合的变体。
尽管以从当前被认为是最实用和优选的实施例的角度描述了装置和方法,将理解本公开不需要限于所公开的实施例。本公开旨在涵盖包括在权利要求书的精神和范围内的各种修改和类似的安排,权利要求书的范围应给予最宽的解释,以便包含所有这些修改和类似的结构。本公开包括所附权利要求书的任何和所有的实施例。
Claims (13)
1.一种计算机实施的方法,包括:
基于事件生成样本;
使用调度监视器识别由当前处理器调度的下一个调度的被监视线程;
设置下一个调度的被监视线程的处理器亲合性,使得下一个调度的被监视线程仅在当前处理器上运行,而不能迁移到不同的处理器;
在下一个调度的被监视线程的处理器亲合性已被设置到该处理器后,利用在当前处理器上运行的被采样线程获取下一个调度的被监视线程调用栈;
在已获得下一个调度的被监视线程调用栈后,恢复下一个调度的被监视线程的处理器亲合性;以及
记录用于下一个调度的被监视线程的下一个调度的被监视线程调用栈。
2.如权利要求1所述的方法,其中所述事件基于预定事件。
3.如权利要求2所述的方法,其中预定事件是基于时间的。
4.如权利要求1所述的方法,其中所述事件基于中断。
5.如前述任一项权利要求所述的方法,还包括通知选择被采样线程的特征分析器。
6.如权利要求5所述的方法,其中特征分析器分析应用。
7.如前述任一项权利要求所述的方法,还包括在记录用于下一个调度的被监视线程的下一个调度的被监视线程调用栈后,向操作系统通知样本已完成。
8.一种计算机实施的方法,包括:
基于事件生产样本;
使用调度监视器识别由当前处理器调度的最后调度的被监视线程;
设置最后调度的被监视线程的处理器亲合性,使得最后调度的被监视线程仅在当前处理器上运行,而不能迁移到不同的处理器;
在最后调度的被监视线程的处理器亲合性已被设置到当前处理器上后,使用在当前处理器上运行的被采样线程获取最后调度的被监视线程调用栈;
在已获得最后调度的被监视线程调用栈后,恢复最后调度的被监视线程的处理器亲合性;以及
记录用于最后调度的被监视线程的最后调度的被监视线程调用栈。
9.一种计算机程序产品,其包括具有计算机可读程序的计算机可用介质,其中当在计算机上执行时,所述计算机可读程序使得计算机执行权利要求1到8中的任一项的所有步骤。
10.一种系统,包括:
处理器,其用于基于事件生成样本;
操作系统,其用于(ⅰ)使用调度监视器识别由当前处理器调度的下一个调度的被监视线程,以及(ⅱ)设置下一个调度的被监视线程的处理器亲合性,使得下一个调度的被监视线程仅在该处理器上运行,而不迁移到不同的处理器;
特征分析器,其用于(ⅰ)在下一个调度的被监视线程的处理器亲合性已被设置到该处理器上后,使用被配置为仅在当前处理器上运行的采样器线程获取下一个调度的被监视线程调用栈,以及(ⅱ)在已获得下一个调度的被监视线程调用栈后,恢复下一个调度的被监视线程的处理器亲合性;以及(ⅳ)记录用于下一个调度的被监视线程的下一个调度的被监视线程调用栈。
11.如权利要求10所述的系统,其中所述事件基于预定事件。
12.如权利要求10所述的系统,其中所述预定事件是基于时间的。
13.如权利要求10所述的系统,其中所述事件基于中断。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/786,381 | 2010-05-24 | ||
US12/786,381 US9176783B2 (en) | 2010-05-24 | 2010-05-24 | Idle transitions sampling with execution context |
PCT/EP2011/057574 WO2011147685A1 (en) | 2010-05-24 | 2011-05-11 | Idle transitions sampling |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102893261A true CN102893261A (zh) | 2013-01-23 |
CN102893261B CN102893261B (zh) | 2016-03-16 |
Family
ID=44275921
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180023759.6A Active CN102893261B (zh) | 2010-05-24 | 2011-05-11 | 空闲转换采样方法及其系统 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9176783B2 (zh) |
CN (1) | CN102893261B (zh) |
DE (1) | DE112011101759B4 (zh) |
GB (1) | GB2493609B (zh) |
WO (1) | WO2011147685A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9418005B2 (en) | 2008-07-15 | 2016-08-16 | International Business Machines Corporation | Managing garbage collection in a data processing system |
US8843684B2 (en) * | 2010-06-11 | 2014-09-23 | International Business Machines Corporation | Performing call stack sampling by setting affinity of target thread to a current process to prevent target thread migration |
US8799872B2 (en) | 2010-06-27 | 2014-08-05 | International Business Machines Corporation | Sampling with sample pacing |
US8799904B2 (en) * | 2011-01-21 | 2014-08-05 | International Business Machines Corporation | Scalable system call stack sampling |
US20140223062A1 (en) * | 2013-02-01 | 2014-08-07 | International Business Machines Corporation | Non-authorized transaction processing in a multiprocessing environment |
US9092332B2 (en) * | 2013-05-02 | 2015-07-28 | Microsoft Technology Licensing, Llc | Activity based sampling of diagnostics data |
US9552223B2 (en) * | 2014-09-30 | 2017-01-24 | International Business Machines Corporation | Post-return asynchronous code execution |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US20090044198A1 (en) * | 2007-08-07 | 2009-02-12 | Kean G Kuiper | Method and Apparatus for Call Stack Sampling in a Data Processing System |
US20090187915A1 (en) * | 2008-01-17 | 2009-07-23 | Sun Microsystems, Inc. | Scheduling threads on processors |
US20090210649A1 (en) * | 2008-02-14 | 2009-08-20 | Transitive Limited | Multiprocessor computing system with multi-mode memory consistency protection |
Family Cites Families (184)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5218704A (en) | 1989-10-30 | 1993-06-08 | Texas Instruments | Real-time power conservation for portable computers |
US5305454A (en) | 1991-08-12 | 1994-04-19 | International Business Machines Corporation | Notification of event handlers in broadcast or propagation mode by event management services in a computer system |
GB2276737A (en) | 1993-03-30 | 1994-10-05 | Ibm | Fault-tolerant transaction-oriented data processing |
US5544318A (en) | 1993-04-16 | 1996-08-06 | Accom, Inc., | Asynchronous media server request processing system for servicing reprioritizing request from a client determines whether or not to delay executing said reprioritizing request |
US5473777A (en) | 1993-07-19 | 1995-12-05 | Moeller; Christopher P. | Wrapper for enabling an object otented application to maintain virtual memory using procedural function calls |
US5379432A (en) | 1993-07-19 | 1995-01-03 | Taligent, Inc. | Object-oriented interface for a procedural operating system |
US5404529A (en) | 1993-07-19 | 1995-04-04 | Taligent, Inc. | Object-oriented interprocess communication system interface for a procedural operating system |
US5619202A (en) | 1994-11-22 | 1997-04-08 | Analog Devices, Inc. | Variable sample rate ADC |
EP0649084A1 (en) | 1993-10-18 | 1995-04-19 | Cyrix Corporation | Microprocessor branch processing |
EP0689141A3 (en) | 1994-06-20 | 1997-10-15 | At & T Corp | Disruption-based hardware support for system performance profiling |
US6633897B1 (en) | 1995-06-30 | 2003-10-14 | International Business Machines Corporation | Method and system for scheduling threads within a multiprocessor data processing system using an affinity scheduler |
US6728959B1 (en) | 1995-08-08 | 2004-04-27 | Novell, Inc. | Method and apparatus for strong affinity multiprocessor scheduling |
US5682537A (en) | 1995-08-31 | 1997-10-28 | Unisys Corporation | Object lock management system with improved local lock management and global deadlock detection in a parallel data processing system |
US5751789A (en) | 1995-11-13 | 1998-05-12 | Bell Atlantic Network Services, Inc. | SNID with wireless backup |
US5764241A (en) | 1995-11-30 | 1998-06-09 | Microsoft Corporation | Method and system for modeling and presenting integrated media with a declarative modeling language for representing reactive behavior |
JP3672208B2 (ja) | 1996-07-02 | 2005-07-20 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 階層化トランザクション処理方法 |
GB2321540A (en) | 1997-01-25 | 1998-07-29 | Ibm | Automatic transactional locking using object request broker |
US5881138A (en) | 1997-04-27 | 1999-03-09 | Ameritech Corporation | Method and system for detecting a change in at least one telecommunication service rate plan |
US6199075B1 (en) | 1997-05-30 | 2001-03-06 | Sun Microsystems, Inc. | Method and apparatus for generational garbage collection of a heap memory shared by multiple processors |
US5913213A (en) | 1997-06-16 | 1999-06-15 | Telefonaktiebolaget L M Ericsson | Lingering locks for replicated data objects |
US6697935B1 (en) | 1997-10-23 | 2004-02-24 | International Business Machines Corporation | Method and apparatus for selecting thread switch events in a multithreaded processor |
US6108654A (en) | 1997-10-31 | 2000-08-22 | Oracle Corporation | Method and system for locking resources in a computer system |
US6158024A (en) | 1998-03-31 | 2000-12-05 | International Business Machines Corporation | Method and apparatus for structured memory analysis of data processing systems and applications |
US6055492A (en) | 1997-12-12 | 2000-04-25 | International Business Machines Corporation | System and method for providing trace information data reduction |
US6662358B1 (en) | 1997-12-12 | 2003-12-09 | International Business Machines Corporation | Minimizing profiling-related perturbation using periodic contextual information |
US6002872A (en) | 1998-03-31 | 1999-12-14 | International Machines Corporation | Method and apparatus for structured profiling of data processing systems and applications |
US6751789B1 (en) | 1997-12-12 | 2004-06-15 | International Business Machines Corporation | Method and system for periodic trace sampling for real-time generation of segments of call stack trees augmented with call stack position determination |
US6651243B1 (en) | 1997-12-12 | 2003-11-18 | International Business Machines Corporation | Method and system for periodic trace sampling for real-time generation of segments of call stack trees |
US6513155B1 (en) | 1997-12-12 | 2003-01-28 | International Business Machines Corporation | Method and system for merging event-based data and sampled data into postprocessed trace output |
US6338159B1 (en) | 1997-12-12 | 2002-01-08 | International Business Machines Corporation | System and method for providing trace information |
US6442572B2 (en) | 1998-01-28 | 2002-08-27 | International Business Machines Corporation | Method of and computer system for performing a transaction on a database |
US6233585B1 (en) | 1998-03-12 | 2001-05-15 | Crossworlds Software, Inc. | Isolation levels and compensating transactions in an information system |
US6112225A (en) | 1998-03-30 | 2000-08-29 | International Business Machines Corporation | Task distribution processing system and the method for subscribing computers to perform computing tasks during idle time |
US6125363A (en) | 1998-03-30 | 2000-09-26 | Buzzeo; Eugene | Distributed, multi-user, multi-threaded application development method |
US6954922B2 (en) | 1998-04-29 | 2005-10-11 | Sun Microsystems, Inc. | Method apparatus and article of manufacture for time profiling multi-threaded programs |
US6128611A (en) | 1998-04-30 | 2000-10-03 | International Business Machines Corporation | Internet-enabled generic application program for accessing hierarchical data |
US6941552B1 (en) | 1998-07-30 | 2005-09-06 | International Business Machines Corporation | Method and apparatus to retain applet security privileges outside of the Java virtual machine |
US6314471B1 (en) | 1998-11-13 | 2001-11-06 | Cray Inc. | Techniques for an interrupt free operating system |
US6681230B1 (en) | 1999-03-25 | 2004-01-20 | Lucent Technologies Inc. | Real-time event processing system with service authoring environment |
US6449614B1 (en) | 1999-03-25 | 2002-09-10 | International Business Machines Corporation | Interface system and method for asynchronously updating a share resource with locking facility |
US6601233B1 (en) | 1999-07-30 | 2003-07-29 | Accenture Llp | Business components framework |
US7028298B1 (en) | 1999-09-10 | 2006-04-11 | Sun Microsystems, Inc. | Apparatus and methods for managing resource usage |
US6438512B1 (en) | 1999-09-28 | 2002-08-20 | Convergys Cmg Utah, Inc. | System and method for performance monitoring of application code |
US6654948B1 (en) | 1999-10-12 | 2003-11-25 | International Business Machines Corporation | Methods and apparatus for partial and consistent monitoring of object-oriented programs and systems |
US6728955B1 (en) | 1999-11-05 | 2004-04-27 | International Business Machines Corporation | Processing events during profiling of an instrumented program |
US6742016B1 (en) | 2000-03-24 | 2004-05-25 | Hewlett-Packard Devolpment Company, L.P. | Request acceptor for a network application system and a method thereof |
US6625602B1 (en) | 2000-04-28 | 2003-09-23 | Microsoft Corporation | Method and system for hierarchical transactions and compensation |
US6880086B2 (en) | 2000-05-20 | 2005-04-12 | Ciena Corporation | Signatures for facilitating hot upgrades of modular software components |
US7020696B1 (en) | 2000-05-20 | 2006-03-28 | Ciena Corp. | Distributed user management information in telecommunications networks |
US6769074B2 (en) | 2000-05-25 | 2004-07-27 | Lumigent Technologies, Inc. | System and method for transaction-selective rollback reconstruction of database objects |
US6658652B1 (en) | 2000-06-08 | 2003-12-02 | International Business Machines Corporation | Method and system for shadow heap memory leak detection and other heap analysis in an object-oriented environment during real-time trace processing |
US7236976B2 (en) | 2000-06-19 | 2007-06-26 | Aramark Corporation | System and method for scheduling events and associated products and services |
US6904594B1 (en) | 2000-07-06 | 2005-06-07 | International Business Machines Corporation | Method and system for apportioning changes in metric variables in an symmetric multiprocessor (SMP) environment |
US7389497B1 (en) | 2000-07-06 | 2008-06-17 | International Business Machines Corporation | Method and system for tracing profiling information using per thread metric variables with reused kernel threads |
US6662359B1 (en) | 2000-07-20 | 2003-12-09 | International Business Machines Corporation | System and method for injecting hooks into Java classes to handle exception and finalization processing |
JP2002055848A (ja) | 2000-08-11 | 2002-02-20 | Omron Corp | プログラム実行方式及び当該プログラム実行方式を格納した記憶媒体 |
US20020073103A1 (en) | 2000-08-25 | 2002-06-13 | Bottomley Thomas Mark Walter | Memory garbage collection method and apparatus |
US6993246B1 (en) | 2000-09-15 | 2006-01-31 | Hewlett-Packard Development Company, L.P. | Method and system for correlating data streams |
US7206848B1 (en) | 2000-09-21 | 2007-04-17 | Hewlett-Packard Development Company, L.P. | Intelligently classifying and handling user requests in a data service system |
US6857120B1 (en) | 2000-11-01 | 2005-02-15 | International Business Machines Corporation | Method for characterizing program execution by periodic call stack inspection |
US6874074B1 (en) | 2000-11-13 | 2005-03-29 | Wind River Systems, Inc. | System and method for memory reclamation |
US7426730B2 (en) | 2001-04-19 | 2008-09-16 | Wre-Hol Llc | Method and system for generalized and adaptive transaction processing between uniform information services and applications |
US7499924B2 (en) | 2001-06-28 | 2009-03-03 | International Business Machines Corporation | Method for releasing update locks on rollback to savepoint |
US20030004970A1 (en) | 2001-06-28 | 2003-01-02 | Watts Julie Ann | Method for releasing update locks on rollback to savepoint |
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 |
US20030023655A1 (en) | 2001-07-26 | 2003-01-30 | Stepan Sokolov | Method and apparatus to facilitate suspending threads in a platform-independent virtual machine |
US6697802B2 (en) | 2001-10-12 | 2004-02-24 | International Business Machines Corporation | Systems and methods for pairwise analysis of event data |
US20030083912A1 (en) | 2001-10-25 | 2003-05-01 | Covington Roy B. | Optimal resource allocation business process and tools |
CN100557595C (zh) | 2001-11-01 | 2009-11-04 | 弗里塞恩公司 | 用于验证远程数据库的方法和系统 |
US6976263B2 (en) | 2001-11-19 | 2005-12-13 | Lsi Logic Corporation | Mechanism for encoding and decoding upgradeable RPC/XDR structures |
US8024735B2 (en) | 2002-06-14 | 2011-09-20 | Intel Corporation | Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution |
US7263108B2 (en) | 2002-08-06 | 2007-08-28 | Netxen, Inc. | Dual-mode network storage systems and methods |
US6792460B2 (en) | 2002-10-02 | 2004-09-14 | Mercury Interactive Corporation | System and methods for monitoring application server performance |
US7103597B2 (en) | 2002-10-03 | 2006-09-05 | Mcgoveran David O | Adaptive transaction manager for complex transactions and business process |
US7546333B2 (en) | 2002-10-23 | 2009-06-09 | Netapp, Inc. | Methods and systems for predictive change management for access paths in networks |
US7234166B2 (en) | 2002-11-07 | 2007-06-19 | Stonesoft Corporation | Event sequence detection |
US7398518B2 (en) | 2002-12-17 | 2008-07-08 | Intel Corporation | Method and apparatus for measuring thread wait time |
JP4436036B2 (ja) | 2002-12-18 | 2010-03-24 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 情報処理装置、トレース処理方法、プログラム及び記録媒体 |
US20040148594A1 (en) | 2003-01-24 | 2004-07-29 | Stephen Williams | Acquiring call-stack information |
US20040162741A1 (en) | 2003-02-07 | 2004-08-19 | David Flaxer | Method and apparatus for product lifecycle management in a distributed environment enabled by dynamic business process composition and execution by rule inference |
US7114150B2 (en) | 2003-02-13 | 2006-09-26 | International Business Machines Corporation | Apparatus and method for dynamic instrumenting of code to minimize system perturbation |
US7222119B1 (en) | 2003-02-14 | 2007-05-22 | Google Inc. | Namespace locking scheme |
US6798022B1 (en) | 2003-03-11 | 2004-09-28 | Oki Electric Industry Co., Ltd. | Semiconductor device with improved protection from electrostatic discharge |
US8762415B2 (en) | 2003-03-25 | 2014-06-24 | Siebel Systems, Inc. | Modeling of order data |
US7299478B2 (en) | 2003-03-28 | 2007-11-20 | Sbc Knowledge Ventures, L.P. | Integration service and domain object for telecommunications operational support |
US7000047B2 (en) | 2003-04-23 | 2006-02-14 | International Business Machines Corporation | Mechanism for effectively handling livelocks in a simultaneous multithreading processor |
US7278141B2 (en) | 2003-04-23 | 2007-10-02 | International Business Machines Corporation | System and method for adding priority change value corresponding with a lock to a thread during lock processing |
US7299229B2 (en) | 2003-04-25 | 2007-11-20 | International Business Machines Corporation | Grid quorum |
US7124131B2 (en) | 2003-04-29 | 2006-10-17 | International Business Machines Corporation | Discipline for lock reassertion in a distributed file system |
US7305393B2 (en) | 2003-04-29 | 2007-12-04 | International Business Machines Corporation | Mounted filesystem integrity checking and salvage |
US7496574B2 (en) | 2003-05-01 | 2009-02-24 | International Business Machines Corporation | Managing locks and transactions |
US7194732B2 (en) | 2003-06-26 | 2007-03-20 | Hewlett-Packard Development Company, L.P. | System and method for facilitating profiling an application |
US7536673B2 (en) | 2003-07-22 | 2009-05-19 | Sap Ag | Application business object processing |
US7694304B2 (en) | 2003-08-28 | 2010-04-06 | Mips Technologies, Inc. | Mechanisms for dynamic configuration of virtual processor resources |
US7089250B2 (en) | 2003-10-08 | 2006-08-08 | International Business Machines Corporation | Method and system for associating events |
US20050086455A1 (en) | 2003-10-16 | 2005-04-21 | International Business Machines Corporation | Method and apparatus for generating interrupts for specific types of instructions |
JP4330429B2 (ja) | 2003-11-05 | 2009-09-16 | 株式会社日立製作所 | プロファイル情報の取得装置及び方法 |
US7257657B2 (en) | 2003-11-06 | 2007-08-14 | International Business Machines Corporation | Method and apparatus for counting instruction execution and data accesses for specific types of instructions |
US7458078B2 (en) | 2003-11-06 | 2008-11-25 | International Business Machines Corporation | Apparatus and method for autonomic hardware assisted thread stack tracking |
US6931354B2 (en) | 2003-11-13 | 2005-08-16 | International Business Machines Corporation | Method, apparatus and computer program product for efficient, large counts of per thread performance events |
US20050138443A1 (en) | 2003-12-23 | 2005-06-23 | Barnes Cooper | Method for C state management |
US7624137B2 (en) | 2004-01-05 | 2009-11-24 | International Business Machines Corporation | Method and apparatus for scheduling and performing garbage collection in a real-time system with guaranteed space bounds |
US7526757B2 (en) | 2004-01-14 | 2009-04-28 | International Business Machines Corporation | Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program |
US20050155018A1 (en) | 2004-01-14 | 2005-07-14 | International Business Machines Corporation | Method and apparatus for generating interrupts based on arithmetic combinations of performance counter values |
US7392370B2 (en) | 2004-01-14 | 2008-06-24 | International Business Machines Corporation | Method and apparatus for autonomically initiating measurement of secondary metrics based on hardware counter values for primary metrics |
US7114036B2 (en) | 2004-01-14 | 2006-09-26 | International Business Machines Corporation | Method and apparatus for autonomically moving cache entries to dedicated storage when false cache line sharing is detected |
US7093081B2 (en) | 2004-01-14 | 2006-08-15 | International Business Machines Corporation | Method and apparatus for identifying false cache line sharing |
US7509653B2 (en) | 2004-01-22 | 2009-03-24 | International Business Machines Corporation | Efficient and scalable event partitioning in business integration applications using multiple delivery queues |
US7424705B2 (en) | 2004-03-11 | 2008-09-09 | Intel Corporation | Dynamic management of compiled code |
US7296130B2 (en) | 2004-03-22 | 2007-11-13 | International Business Machines Corporation | Method and apparatus for providing hardware assistance for data access coverage on dynamically allocated data |
US7162666B2 (en) | 2004-03-26 | 2007-01-09 | Emc Corporation | Multi-processor system having a watchdog for interrupting the multiple processors and deferring preemption until release of spinlocks |
US20050246461A1 (en) * | 2004-04-29 | 2005-11-03 | International Business Machines Corporation | Scheduling threads in a multi-processor computer |
US20050262130A1 (en) | 2004-05-21 | 2005-11-24 | Krishna Mohan | Input data specification method and system in business-to-business integration |
US7496918B1 (en) | 2004-06-01 | 2009-02-24 | Sun Microsystems, Inc. | System and methods for deadlock detection |
US7610585B2 (en) | 2004-06-03 | 2009-10-27 | Intel Corporation | Thread synchronization methods and apparatus for managed run-time environments |
US7805509B2 (en) | 2004-06-04 | 2010-09-28 | Optier Ltd. | System and method for performance management in a multi-tier computing environment |
US20050273757A1 (en) | 2004-06-07 | 2005-12-08 | Anderson Craig D | Methods, systems, and computer program products for summarizing operational behavior of a computer program |
US7529914B2 (en) | 2004-06-30 | 2009-05-05 | Intel Corporation | Method and apparatus for speculative execution of uncontended lock instructions |
US7779238B2 (en) | 2004-06-30 | 2010-08-17 | Oracle America, Inc. | Method and apparatus for precisely identifying effective addresses associated with hardware events |
US20060023642A1 (en) | 2004-07-08 | 2006-02-02 | Steve Roskowski | Data collection associated with components and services of a wireless communication network |
US20060031837A1 (en) | 2004-08-05 | 2006-02-09 | International Business Machines Corporation | Thread starvation profiler |
US7487503B2 (en) | 2004-08-12 | 2009-02-03 | International Business Machines Corporation | Scheduling threads in a multiprocessor computer |
US20060059486A1 (en) | 2004-09-14 | 2006-03-16 | Microsoft Corporation | Call stack capture in an interrupt driven architecture |
US7716647B2 (en) | 2004-10-01 | 2010-05-11 | Microsoft Corporation | Method and system for a system call profiler |
US7721268B2 (en) | 2004-10-01 | 2010-05-18 | Microsoft Corporation | Method and system for a call stack capture |
US20060072563A1 (en) | 2004-10-05 | 2006-04-06 | Regnier Greg J | Packet processing |
US20060080486A1 (en) | 2004-10-07 | 2006-04-13 | International Business Machines Corporation | Method and apparatus for prioritizing requests for information in a network environment |
US7548974B2 (en) | 2004-10-12 | 2009-06-16 | International Business Machines Corporation | Adaptively processing client requests to a network server |
US7593980B2 (en) | 2004-11-30 | 2009-09-22 | Cisco Technology, Inc. | Application server system and method |
US20060130001A1 (en) | 2004-11-30 | 2006-06-15 | International Business Machines Corporation | Apparatus and method for call stack profiling for a software application |
US20060149877A1 (en) | 2005-01-03 | 2006-07-06 | Pearson Adrian R | Interrupt management for digital media processor |
FR2881242B1 (fr) | 2005-01-21 | 2007-03-23 | Meiosys Soc Par Actions Simpli | Procede non intrusif de journalisation d'evements internes au sein d'un processus applicatif, et systeme mettant en oeuvre ce procede |
US20060184769A1 (en) | 2005-02-11 | 2006-08-17 | International Business Machines Corporation | Localized generation of global flush requests while guaranteeing forward progress of a processor |
US7325108B2 (en) | 2005-03-15 | 2008-01-29 | International Business Machines Corporation | Method and system for page-out and page-in of stale objects in memory |
TWI257216B (en) | 2005-03-23 | 2006-06-21 | Ind Tech Res Inst | System and a method of request scheduling for the differentiated quality of service at an intermediary |
EP1880266A4 (en) | 2005-04-25 | 2010-09-08 | Invensys Sys Inc | RECORDING AND TRACKING NON-TREND PRODUCTION DATA AND EVENTS IN AN INDUSTRIAL PROCESS CONTROL ENVIRONMENT |
US7689867B2 (en) | 2005-06-09 | 2010-03-30 | Intel Corporation | Multiprocessor breakpoint |
US9110712B2 (en) | 2005-06-10 | 2015-08-18 | International Business Machines Corporation | Method for encapsulating logical units of work using business objects |
US8533709B2 (en) | 2005-08-04 | 2013-09-10 | Microsoft Cororation | Changing frequency of a virtual programmable interrupt timer in virtual machines to control virtual time |
US7788664B1 (en) | 2005-11-08 | 2010-08-31 | Hewlett-Packard Development Company, L.P. | Method of virtualizing counter in computer system |
US20070150904A1 (en) | 2005-11-15 | 2007-06-28 | International Business Machines Corporation | Multi-threaded polling in a processing environment |
US7877734B2 (en) | 2006-01-12 | 2011-01-25 | International Business Machines Corporation | Selective profiling of program code executing in a runtime environment |
US7474991B2 (en) | 2006-01-19 | 2009-01-06 | International Business Machines Corporation | Method and apparatus for analyzing idle states in a data processing system |
US9323578B2 (en) | 2006-01-19 | 2016-04-26 | International Business Machines Corporation | Analyzing wait states in a data processing system |
US7653895B1 (en) | 2006-01-20 | 2010-01-26 | Xilinx, Inc. | Memory arrangement for message processing by a plurality of threads |
US8018845B2 (en) | 2006-01-25 | 2011-09-13 | Cisco Technology, Inc | Sampling rate-limited traffic |
US7584332B2 (en) | 2006-02-17 | 2009-09-01 | University Of Notre Dame Du Lac | Computer systems with lightweight multi-threaded architectures |
US7827541B2 (en) | 2006-03-16 | 2010-11-02 | International Business Machines Corporation | Method and apparatus for profiling execution of code using multiple processors |
US7587364B2 (en) | 2006-03-24 | 2009-09-08 | Sap Ag | Systems and methods for bank determination and payment handling |
US8402253B2 (en) | 2006-09-29 | 2013-03-19 | Intel Corporation | Managing multiple threads in a single pipeline |
US20080082761A1 (en) | 2006-09-29 | 2008-04-03 | Eric Nels Herness | Generic locking service for business integration |
US7921075B2 (en) | 2006-09-29 | 2011-04-05 | International Business Machines Corporation | Generic sequencing service for business integration |
US20080148241A1 (en) | 2006-10-11 | 2008-06-19 | Scott Thomas Jones | Method and apparatus for profiling heap objects |
US8839271B2 (en) | 2006-10-11 | 2014-09-16 | International Business Machines Corporation | Call stack sampling to obtain information for analyzing idle states in a data processing system |
US9274857B2 (en) | 2006-10-13 | 2016-03-01 | International Business Machines Corporation | Method and system for detecting work completion in loosely coupled components |
US9514201B2 (en) | 2006-10-13 | 2016-12-06 | International Business Machines Corporation | Method and system for non-intrusive event sequencing |
US7493436B2 (en) | 2006-10-26 | 2009-02-17 | International Business Machines Corporation | Interrupt handling using simultaneous multi-threading |
US8136124B2 (en) | 2007-01-18 | 2012-03-13 | Oracle America, Inc. | Method and apparatus for synthesizing hardware counters from performance sampling |
JP4905974B2 (ja) | 2007-03-30 | 2012-03-28 | 株式会社エヌ・ティ・ティ・データ | プログラムプロファイリング装置、プログラムプロファイリング方法、及びプログラム |
US20080263325A1 (en) | 2007-04-19 | 2008-10-23 | International Business Machines Corporation | System and structure for synchronized thread priority selection in a deeply pipelined multithreaded microprocessor |
US7962924B2 (en) | 2007-06-07 | 2011-06-14 | International Business Machines Corporation | System and method for call stack sampling combined with node and instruction tracing |
US8544014B2 (en) | 2007-07-24 | 2013-09-24 | Microsoft Corporation | Scheduling threads in multi-core systems |
US8381215B2 (en) * | 2007-09-27 | 2013-02-19 | Oracle America, Inc. | Method and system for power-management aware dispatcher |
JP4912375B2 (ja) | 2007-09-28 | 2012-04-11 | 長堀工業株式会社 | 流体継手 |
US8117618B2 (en) | 2007-10-12 | 2012-02-14 | Freescale Semiconductor, Inc. | Forward progress mechanism for a multithreaded processor |
US8141053B2 (en) | 2008-01-04 | 2012-03-20 | International Business Machines Corporation | Call stack sampling using a virtual machine |
US8739165B2 (en) | 2008-01-22 | 2014-05-27 | Freescale Semiconductor, Inc. | Shared resource based thread scheduling with affinity and/or selectable criteria |
US8434098B2 (en) | 2008-02-07 | 2013-04-30 | Microsoft Corporation | Synchronizing split user-mode/kernel-mode device driver architecture |
JP5624480B2 (ja) | 2008-03-11 | 2014-11-12 | ユニバーシティ・オブ・ワシントン | 効率的な決定論的マルチプロセッシング(deterministicmultiprocessing) |
KR20090098500A (ko) | 2008-03-14 | 2009-09-17 | 삼성전자주식회사 | 가상 머신의 유휴 구간 검사 장치 및 방법, 그리고 그방법을 수행하기 위한 컴퓨터 프로그램 |
US8286139B2 (en) | 2008-03-19 | 2012-10-09 | International Businesss Machines Corporation | Call stack sampling for threads having latencies exceeding a threshold |
KR100959548B1 (ko) | 2008-05-21 | 2010-05-27 | 한국과학기술원 | 인터럽트 스케줄링 방법 |
US8607237B2 (en) | 2008-06-02 | 2013-12-10 | Microsoft Corporation | Collection with local lists for a multi-processor system |
US9418005B2 (en) | 2008-07-15 | 2016-08-16 | International Business Machines Corporation | Managing garbage collection in a data processing system |
US8566795B2 (en) | 2008-07-15 | 2013-10-22 | International Business Machines Corporation | Selectively obtaining call stack information based on criteria |
US20100017583A1 (en) | 2008-07-15 | 2010-01-21 | International Business Machines Corporation | Call Stack Sampling for a Multi-Processor System |
US8286134B2 (en) | 2008-07-15 | 2012-10-09 | International Business Machines Corporation | Call stack sampling for a multi-processor system |
US20100017581A1 (en) | 2008-07-18 | 2010-01-21 | Microsoft Corporation | Low overhead atomic memory operations |
US8332852B2 (en) | 2008-07-21 | 2012-12-11 | International Business Machines Corporation | Thread-to-processor assignment based on affinity identifiers |
US20100036981A1 (en) | 2008-08-08 | 2010-02-11 | Raghavendra Ganesh | Finding Hot Call Paths |
US20100333071A1 (en) | 2009-06-30 | 2010-12-30 | International Business Machines Corporation | Time Based Context Sampling of Trace Data with Support for Multiple Virtual Machines |
US8843684B2 (en) | 2010-06-11 | 2014-09-23 | International Business Machines Corporation | Performing call stack sampling by setting affinity of target thread to a current process to prevent target thread migration |
US8799872B2 (en) | 2010-06-27 | 2014-08-05 | International Business Machines Corporation | Sampling with sample pacing |
US8799904B2 (en) | 2011-01-21 | 2014-08-05 | International Business Machines Corporation | Scalable system call stack sampling |
-
2010
- 2010-05-24 US US12/786,381 patent/US9176783B2/en active Active
-
2011
- 2011-05-11 DE DE112011101759.6T patent/DE112011101759B4/de active Active
- 2011-05-11 WO PCT/EP2011/057574 patent/WO2011147685A1/en active Application Filing
- 2011-05-11 GB GB1212738.7A patent/GB2493609B/en active Active
- 2011-05-11 CN CN201180023759.6A patent/CN102893261B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US20090044198A1 (en) * | 2007-08-07 | 2009-02-12 | Kean G Kuiper | Method and Apparatus for Call Stack Sampling in a Data Processing System |
US20090187915A1 (en) * | 2008-01-17 | 2009-07-23 | Sun Microsystems, Inc. | Scheduling threads on processors |
US20090210649A1 (en) * | 2008-02-14 | 2009-08-20 | Transitive Limited | Multiprocessor computing system with multi-mode memory consistency protection |
Also Published As
Publication number | Publication date |
---|---|
US9176783B2 (en) | 2015-11-03 |
GB201212738D0 (en) | 2012-08-29 |
GB2493609B (en) | 2014-02-12 |
CN102893261B (zh) | 2016-03-16 |
WO2011147685A1 (en) | 2011-12-01 |
DE112011101759T5 (de) | 2013-03-07 |
DE112011101759B4 (de) | 2015-03-05 |
US20110289361A1 (en) | 2011-11-24 |
GB2493609A (en) | 2013-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102893261A (zh) | 空闲转换采样 | |
EP1856612B1 (en) | Method for counting instructions for logging and replay of a deterministic sequence of events | |
CN102341790B (zh) | 数据处理系统及其使用的方法 | |
US9355002B2 (en) | Capturing trace information using annotated trace output | |
CN103365702B (zh) | IaaS云环境下轻量级虚拟机进程追踪系统和方法 | |
CN1252594C (zh) | 使能跟踪重复指令的方法和系统 | |
US20100017583A1 (en) | Call Stack Sampling for a Multi-Processor System | |
US8286134B2 (en) | Call stack sampling for a multi-processor system | |
CN102446217A (zh) | 复合事件处理设备和复合事件处理方法 | |
CN107004086A (zh) | 安全信息和事件管理 | |
CN106293881B (zh) | 一种基于非一致性i/o访问构架的性能监控器及其监控方法 | |
US20090019318A1 (en) | Approach for monitoring activity in production systems | |
US20180039915A1 (en) | Method and apparatus for resolving contention in a computer system | |
Du et al. | Hawkeye: Adaptive straggler identification on heterogeneous spark cluster with reinforcement learning | |
CN106874067A (zh) | 基于轻量级虚拟机的并行计算方法、装置及系统 | |
CN111951130B (zh) | 一种电子设备的数据取证分析方法及系统 | |
CN114327894A (zh) | 资源分配方法、装置、电子设备及存储介质 | |
US20230401215A1 (en) | Event Sequences Search | |
WO2015181612A1 (en) | System and method for dynamic collection of system management data in a mainframe computing environment | |
CN111401934A (zh) | 分布式广告统计方法以及装置 | |
US8973007B1 (en) | Adaptive lock list searching of waiting threads | |
CN113986097A (zh) | 一种任务调度的方法、装置及电子设备 | |
US20230123509A1 (en) | Prevention of Malicious End Point Behavior Through Stateful Rules | |
CN106294081B (zh) | 生物信息分析任务运行监控系统 | |
Jayasinghe et al. | Continuous analytics on graph data streams using wso2 complex event processor |
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 |