CN102341790B - 数据处理系统及其使用的方法 - Google Patents
数据处理系统及其使用的方法 Download PDFInfo
- Publication number
- CN102341790B CN102341790B CN201080010002.9A CN201080010002A CN102341790B CN 102341790 B CN102341790 B CN 102341790B CN 201080010002 A CN201080010002 A CN 201080010002A CN 102341790 B CN102341790 B CN 102341790B
- Authority
- CN
- China
- Prior art keywords
- thread
- sampling
- virtual machine
- trace information
- interested
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
提供了支持多个虚拟机的、跟踪数据的基于时间的上下文采样的机制。响应于事件的出现,唤醒与在数据处理系统的处理器上执行的多个执行线程相关联的多个采样线程。对于每一个采样线程,确定对应执行线程关于一个或多个感兴趣的虚拟机的执行状态。基于对应执行线程的执行状态,对于每一个采样线程确定是否从与对应执行线程相关联的感兴趣的虚拟机检索跟踪信息。对于每一个采样线程,响应于确定要从与对应执行线程相关联的感兴趣的虚拟机检索跟踪信息,从虚拟机检索跟踪信息。
Description
技术领域
本申请一般涉及一种改进的数据处理设备和方法,更具体地涉及用于支持多个虚拟机的追踪数据的基于时间的上下文采样的机制。
背景技术
在分析和增强数据处理系统和在数据处理系统内执行的应用的性能中,有益的是,知道数据处理系统内的哪个软件模块正在使用系统资源。数据处理系统的有效管理和增强需要知道如何和何时使用各种系统资源。性能工具(performance tool)用于当各种软件应用正在数据处理资源内执行时监控和检查数据处理系统以确定资源消耗。例如,性能工具可以识别在数据处理系统中最频繁地执行的模块和指令,或可以识别分配最大存储量或执行最多的I/O请求的那些模块,硬件性能工具可以被内置在系统内或被在以后的时间点添加。
一种已知的软件性能工具是追踪工具。追踪工具可以使用多种技术来提供追踪信息,该追踪信息指示用于执行的程序的执行流。一种技术通过当特定事件出现时记录它们来跟踪特定的指令序列,即所谓的基于事件的剖析(profile)技术。例如,跟踪工具可以记录对模块、子例程、方法、函数或系统组件的每一个进入和每一个退出。替代地,跟踪工具可以记录请求者和针对每一个存储分配请求而分配的存储量。通常,对于每一个这样的事件产生时间戳记录。与进入退出记录类似的相应记录对也被用于跟踪任意代码段的执行、开始和完成I/O或数据传送以及许多其他感兴趣的事件。
为了改善由各种系列的计算机产生的代码的性能,经常需要确定处理器在执行代码中在哪里花费时间,这样的努力在计算机处理领域中被公知为定位“热点”。理想上,人们意欲在代码级的指令和/或源行处隔离这样的热点,以便将注意力集中在可能最受益于代码的改进的区域。
另一种跟踪技术包含周期性地采样程序的执行流,以识别程序中程序看起来花费大量时间的特定位置。这种技术基于以固定时间间隔周期性地中断 应用或数据处理系统执行的思想,即所谓的基于采样的剖析。在每一个中断处,针对预定长度的时间或针对预定数量的感兴趣事件记录信息。例如,可以在每一个时间间隔记录作为被剖析的较大程序的可执行部分的当前执行的线程的程序计数器。可以在处理后的时间针对数据处理系统的负载图和符号表信息来解析这些值,并且,可以从此分析获得哪里正在花费时间的简档(profile)。
已知的采样跟踪技术限于一次对于单个执行环境执行跟踪。即,关于单个操作系统和虚拟机执行环境执行程序的执行流的采样。然而,近年来,应用中件越来越需要使用多个虚拟机来支持各种应用。使用已知的采样跟踪技术,必须以顺序的方式一次一个地单独采样每一个单独的虚拟机执行环境。这导致增加跟踪和分析时间以及可能不像以其他方式可以获得的那样精确的跟踪信息。
发明内容
在一个说明性实施例中,提供了一种数据处理系统中的方法,用于执行将所述数据处理系统中的计算机代码的执行剖析的基于时间的上下文采样。所述方法包括:响应于事件的出现,唤醒与在所述数据处理系统的处理器上执行的多个执行线程相关联的多个采样线程。所述方法进一步包括:针对每一个采样线程确定对应执行线程关于一个或多个感兴趣的虚拟机的执行状态。而且,所述方法包括:针对每一个采样线程,基于所述对应执行线程的所述执行状态,确定是否从与所述对应执行线程相关联的感兴趣的虚拟机检索跟踪信息。而且,所述方法包括:对于每一个采样线程,响应于确定要从与所述对应执行线程相关联的感兴趣的虚拟机检索跟踪信息,从所述虚拟机检索所述跟踪信息。
在其他说明性实施例中,提供了一种计算机程序产品,包括具有计算机可读程序的计算机可用或可读介质。当所述计算机可读程序在计算装置上执行时使得所述计算装置执行上面关于所述方法说明性实施例描述的各种操作及其组合。
在另一个说明性实施例中,提供了一种系统/设备。所述系统/设备可以包括一个或多个处理器和耦接到所述一个或多个处理器的存储器。所述存储器可以包括指令,当所述指令被所述一个或多个处理器执行时使得所述一个或 多个处理器执行上面关于所述方法说明性实施例描述的各种操作及其组合。
在本发明的示例实施例的以下详细描述中将描述本发明的这些和其他特征和优点,并且本发明的这些和其他特征和优点对于考虑到本发明的示例实施例的以下详细描述的本领域的普通技术人员而言将变得清楚。
附图说明
参考下面的附图仅通过示例来描述本发明的优选实施例,在下面的附图中:
图1是其中可以实现说明性实施例的数据处理系统的图示;
图2是其中可以实现说明性实施例的方面的数据处理系统的元件的示例框图;
图3是图示根据一个说明性实施例的用于剖析计算机程序的执行的组件的示例图;
图4是图示根据一个说明性实施例的在获得调用堆栈中使用的组件的图;
图5是根据一个说明性实施例的调用树的图;
图6是图示根据一个说明性实施例的在节点中的信息的图;
图7是概述根据一个说明性实施例的用于获得目标线程的调用堆栈信息的示例处理的流程图;
图8是概述根据一个说明性实施例的用于收集调用堆栈信息的采样线程中的示例处理的流程图;
图9是概述根据一个说明性实施例的用于响应于接收到中断而通知处理器上的采样线程的示例处理的流程图;
图10是概述根据一个说明性实施例的用于采样线程的示例处理的流程图;
图11是根据一个说明性实施例的关于由多个处理器与多个虚拟机相结合地执行的多个线程执行计算机程序的剖析的系统的示例框图;以及
图12是概述根据一个说明性实施例的采样线程的示例操作的流程图,其中,剖析多个处理器和多个虚拟机的多个线程。
具体实施方式
说明性实施例提供了用于提供支持多个虚拟机的、跟踪数据的基于时间的上下文采样的机制。利用说明性实施例的该机制,可以使用与访问各个虚拟机的各个处理器相关联的多个采样器线程来同时采样多个虚拟机执行环境。而且,提供了一种机制,用于唤醒这些采样器线程的每一个,并且用于确定要获得什么跟踪数据或信息(如果有的话)。因此,每次存在引起对需要采样跟踪信息的装置驱动器的调用的中断或其他事件时,唤醒剖析器(profiler)中的每一个采样线程,并且根据在唤醒采样线程时的执行线程的状态,检索跟踪信息并将其存储在用于特定线程的跟踪数据文件中。
可以基于在唤醒采样器线程时执行环境中的对应执行线程的执行在何处来执行关于要获得什么跟踪数据和是否要获得任何跟踪数据的判定。例如,如果在执行线程当前正访问虚拟机时唤醒采样器线程,则可以收集调用堆栈信息。如果在执行线程在执行无用信息(garbage)收集操作的途中的时间唤醒采样器线程,则可以不收集调用堆栈信息。可以基于执行线程的特定执行状态来建立用于限定要何时收集跟踪信息以及要收集什么跟踪信息的各种条件。
而且,可以提供各种计数器来用于获得关于与执行线程和虚拟机相结合的采样器线程的使用的统计。这些计数器可以与执行线程的执行状态的特定条件相关联。每次唤醒采样器线程时可以递增对应的计数器,并且其对应的执行线程的状态对应于与计数器相关联的条件。这些计数器值也可以被采样和存储为用于执行线程的跟踪数据文件的一部分。此信息与其他跟踪信息一起可以用于产生报告,该报告详细描述在执行期间的各个时间点数据处理系统的执行环境中的计算机程序的执行状态。此信息可以用于识别计算机程序的执行期间的处理资源的分布。
本领域的技术人员可以明白,本发明的实施例可以被实施为系统、方法或计算机程序产品。因此,本发明的实施例可以采取完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)或组合软件和硬件方面的实施例的形式,它们在此可以全部被一般地称为“电路”、“模块”或“系统”。而且,本发明的实施例可以采取在任何有形表达介质中包含的计算机程序产品的形式,在该介质中包含计算机可用程序代码。
可以使用一个或多个计算机可用或计算机可读介质的任何组合。计算机可用或计算机可读介质可以例如是但不限于电子、磁、光学、电磁、红外线 或半导体系统、设备、装置或传播介质。计算机可读介质的更具体的示例(非穷尽性列表)包括下面的部分:具有一条或多条导线的电连接、便携计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携光盘只读存储器(CDROM)、光学存储器、诸如支持因特网或内联网的传输介质、或者磁存储器。注意,计算机可用或计算机可读介质可以甚至是其上打印了程序的纸张或另一种适当的介质,因为该程序可以经由例如对该纸张或另一种介质的光学扫描而被电子地捕获,然后被以适当的方式编译、解译或处理,如果必要的话,并接着被存储在计算机存储器中。在本文的上下文中,计算机可用或计算机可读介质可以是可以包含、存储、传递、传播或传送程序以由指令执行系统、设备或装置使用或与指令执行系统、设备或装置相结合地使用的任何介质。计算机可用介质可以包括在基带中或作为载波的一部分的、其中包含了计算机可用程序代码的传播数据信号。可以使用任何适当的介质来传送计算机可用程序代码,所述适当的介质包括但不限于无线、有线、光纤线缆、射频(RF)等。
可以以一个或多个编程语言的任何组合来编写本发明的实施例中的用于执行操作的计算机程序代码,编程语言包括:面向对象的编程语言,诸如JavaTM、SmalltalkTM或C++等;以及,传统的过程式编程语言,诸如“C”编程语言或类似的编程语言。程序代码可以完全地在用户的计算机上、部分地在用户的计算机上,作为单独的软件包执行;部分地在用户的计算机上并且部分地在远程计算机上或完全地在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过包括局域网(LAN)或广域网(WAN)的任何类型的网络连接到用户的计算机,或者可以建立到外部计算机的连接(例如,使用因特网服务提供商通过因特网)。另外,程序代码可以被包含在服务器或远程计算机上的计算机可读存储介质上,并且可以通过网络下载到远程计算机或用户的计算机的计算机可读存储介质以存储和/或执行。而且,计算系统或数据处理系统的任何一个可以在已经通过网络从远程计算系统或数据处理系统下载了程序代码后在计算机可读存储介质中存储该程序代码。
下面参考根据本发明的说明性实施例的方法、设备(系统)和计算机程序产品的流程图和/或框图来描述说明性实施例。可以理解,可以通过计算机程序指令来实现流程图和/或框图的每一个块以及流程图和/或框图中的块的组合。这些计算机程序指令可以被提供到通用计算机、专用计算机或其他可 编程数据处理设备的处理器以产生机器,从而经由计算机或其他可编程数据处理设备的处理器执行的指令建立用于实现在所述流程图和/或框图块中指定的功能/行为的部件(means)。
这些计算机程序指令也可以被存储在计算机可读介质中,这些计算机程序指令可以引导计算机或其他可编程数据处理设备来以特定的方式作为,使得在计算机可读介质中存储的指令产生制品,该制品包括实现在所述流程图和/或框图块中指定的功能/行为的指令部件。
计算机程序指令也可以被安装到计算机或其他可编程数据处理设备上,以使得在计算机或其他可编程设备上执行一系列操作步骤,以产生计算机实现的处理,使得在计算机或其他可编程设备上执行的指令提供用于实现在所述流程图和/或框图块中指定的功能/行为的处理。
附图中的流程图和框图图示根据本发明的各个实施例的系统、方法和计算机程序产品的可能实施方式的架构、功能和操作。在这一点上,流程图或框图中的每一个块可以表示代码的模块、分段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。还应当注意,在一些替代实施方式中,块中指示的功能可以不以附图中指示的顺序出现。例如,根据所涉及的功能,连续地示出的两个块可以事实上基本同时地被执行,或所述块有时可以被以逆序执行。还应当注意,可以通过专用的基于硬件的系统或专用硬件和计算机指令的组合来实现框图和/或流程图中的每一个块、以及框图和/或流程图中的块的组合,该专用的基于硬件的系统执行指定的功能或行为。
现在参考附图,并且具体地参考图1,示出了其中可以实现说明性实施例的数据处理系统的图示。如图1所示,计算机100包括系统单元102、视频显示终端104、键盘106、可以包括软盘驱动器和其他类型的永久和可移除存储介质的存储装置108、以及鼠标110。个人计算机100可以包括附加的输入装置。附加的输入装置的示例可以包括例如操纵杆、触摸板、触摸屏、跟踪球(trackball)和麦克风。
计算机100可以是:任何适当的计算机,诸如IBMTMeServerTM计算机或IntelliStationTM计算机,它们是位于纽约的Armonk的国际商用机器公司的产品;或者,任何其他类型的计算装置。虽然所描述的图示示出了个人计算机,但是可以在其他类型的数据处理系统中实现其他实施例。例如,可以在网络计算机中实现其他实施例。计算机100还优选地包括图形用户界面 (GUI),可以通过在计算机100中运行的常驻在计算机可读介质中的系统软件来实现该GUI。
现在转向图2,描述了根据本发明的说明性实施例的数据处理系统的图。在这个说明性示例中,数据处理系统200包括通信结构(fabric)202,其在处理器单元204、存储器206、永久存储器208、通信单元210、输入/输出(I/O)单元212和显示器214之间提供通信。
处理器单元204用于执行可以被加载到存储器206内的软件的指令。根据具体实现方式,处理器单元204可以是一组一个或多个处理器或可以是多处理器核。而且,可以使用一个或多个异质处理器系统来实现处理器单元204,在该一个或多个异质处理器系统中,主或控制处理器与辅助处理器或合作处理器一起存在于单个芯片上,该辅助处理器或合作处理器使用与主处理器相同或不同的指令集。可以用于实现说明性实施例的机制的异质处理器系统的一个示例是可以从纽约的Armonk的国际商用机器公司获得的Cell宽带引擎 TM(Cell Broadband EngineTM)。作为另一个说明性示例,处理器单元204可以是包含相同类型的多个处理器的对称多处理器(SMP)系统。
在这些示例中,存储器206可以例如是随机存取存储器。永久存储器208可以根据具体实现方式来采取不同形式。例如,永久存储器208可以包含一个或多个组件或器件。例如,永久存储器208可以是硬盘驱动器、闪存、可重写光盘、可重写磁带或以上的某种组合。由永久存储器208使用的介质也以是可移除的。例如,可以将可移除硬盘驱动器用于永久存储器208。
在这些示例中,通信单元210提供与其他数据处理系统或装置的通信。在这些示例中,通信单元210是网络接口卡。通信单元210可以通过使用物理和无线通信链路的任何一个或两者来提供通信。
输入/输出单元212允许与可以连接到数据处理系统200的其他装置的数据输入和输出。例如,输入/输出单元212可以通过键盘和鼠标来提供对用户输入的连接。而且,输入/输出单元212可以向打印机发送输出。显示器214向用户提供用于显示信息的机制。
用于操作系统和应用或程序的指令位于永久存储器208上。这些指令可以被加载到存储器206内以由处理器单元204执行。可以由处理器单元204使用可以位于诸如存储器206的存储器中的计算机实现的指令来执行不同实施例的处理。这些指令被称为可以由处理器单元204中的处理器读取和执行 的计算机可用程序代码或计算机可读程序代码。计算机可读程序代码可以被包含在不同的物理或有形计算机可读介质上,诸如存储器206或永久存储器208。
计算机可用程序代码216以功能的形式位于计算机可读介质218上,并且可以被加载到或传送到数据处理系统200。在这些示例中,计算机可用程序代码216和计算机可读介质218形成计算机程序产品220。在一个示例中,计算机可读介质218可以例如是光盘或磁盘,其被插入或置于作为永久存储器208的一部分的驱动器或其他装置内,以传送到诸如作为永久存储器208的一部分的硬盘驱动器的存储装置上。计算机可读介质218也可以采取永久存储器的形式,诸如连接到数据处理系统200的硬盘驱动器或闪存。
替代地,计算机可用程序代码216可以从计算机可读介质218通过至通信单元210的通信链路和/或通过至输入/输出单元212的连接而被传送到数据处理系统200。在说明性示例中,该通信链路和/或连接可以是物理的或无线的。计算机可读介质也可以采取非有形介质的形式,诸如包含计算机可读程序代码的通信链路或无线传输。
对数据处理系统200图示的不同组件不意味着对可以实现不同实施例的方式提供架构上的限制。不同的说明性实施例可以被实现在包括除对数据处理系统200图示的组件之外的组件或包括代替对数据处理系统200图示的组件的组件的数据处理系统中。图2中所示的其他组件可以与所示的说明性示例不同。
例如,总线系统可以被用于实现通信结构202,并且可以由一条或多条总线构成,诸如系统总线或输入/输出总线。当然,可以使用任何适当类型的架构来实现总线系统,所述适当类型的架构提供了在附接到该总线系统的不同组件或装置之间的数据的传送。另外,通信单元可以包括用于发送和接收数据的一个或多个装置,诸如调制解调器或网络适配器。而且,存储器可以例如是存储器206或高速缓存,诸如在可以在通信结构202中存在的接口和存储器控制器集线器中找到的。
在图1和2中描述的示例不意味着暗示架构上的限制。另外,说明性实施例提供了用于编译源代码或用于执行代码的计算机实现的方法、设备和计算机可用程序代码。可以在数据处理系统中执行关于所描述的实施例的方法,该数据处理系统例如是图1中所示的数据处理系统100、或图2中所示的数 据处理系统200、或基于本说明书对于本领域的普通技术人员而言显而易见的其他类型的数据处理系统和/或计算装置。
说明性实施例提供了一种计算机实现的方法、设备和计算机可用程序代码,用于通过使得从在采样时被中断的每一个虚拟机进行采样来以高效(efficient)的方式同时从一个或多个处理器的多个虚拟机采样调用堆栈信息。而且,可以例如通过在剖析器机制中使用各种计数器等来收集统计信息,以提供关于数据处理系统的执行环境的各个区域中的线程所花费的时间的统计信息。
虽然说明性实施例的机制运行来同时获得多个处理器和多个虚拟机的调用堆栈信息的样值,但是最好首先理解关于一个或多个处理器和单个虚拟机可以如何执行调用堆栈信息的这种采样。因此,本说明书将首先提供可以如何关于单个虚拟机和在一个或多个处理器上执行的线程采样调用堆栈信息的示例,然后将示出可以如何将其扩展到根据说明性实施例的针对多个处理器和多个虚拟机的调用堆栈信息的同时采样。
图3是图示根据说明性实施例的用于在处理期间识别状态的组件的示例图。在这个描述的示例中,该组件是在诸如图2中的数据处理系统200的数据处理系统中出现的硬件和软件组件的示例。
在所描述的示例中,处理器单元300可以产生被发送到操作系统304的中断302,并且处理器单元300中的另一个处理器可以产生也被发送到操作系统304的中断303。这些中断可以导致操作系统304产生对例程或函数的调用306,并且所述调用306被发送到装置驱动器308。存在各种机制来允许诸如操作系统304的操作系统基于来自处理器的中断产生诸如调用306的调用。这样的机制的示例包括:将中断处理器(即被设计来处理特定中断情况的一部分计算机代码)注册到操作系统304,以当中断302和/或303出现时该中断处理器得到通知;或者,使装置驱动器308截获(直接处理)中断向量,以便当中断302或303出现时装置驱动器308获得控制。
当装置驱动器308接收到调用306并且确定应当进行采样时,装置驱动器308将诸如其调用堆栈要被采样的线程的线程标识符(TID)的信息布置在用于所选择的采样线程(未示出)的工作区域311中。即,可以有用于剖析器318的每一个采样线程的独立工作区域311,其中,信息被置于用于剖析器318的适当采样线程的适当工作区域311中,该适当的采样线程用于采样 跟踪数据以用于剖析计算机代码在执行环境中的执行。装置驱动器308还向剖析器318的相应采样线程发送信号,以指示采样线程收集线程310中的感兴趣的线程的调用堆栈信息。在这些示例中,感兴趣的线程是在产生中断302或303的处理单元300的处理器上执行的线程,中断302或303导致对于装置驱动器308的操作系统调用306。
由装置驱动器308向其发送信号的采样器线程检查数据区域314内其对应的工作区域311,以确定特定的采样线程应当执行什么工作。在这些示例中,工作区域311可以识别获取用于中断的线程的调用堆栈信息所需的工作。替代地,根据由装置驱动器308在工作区域311中布置的特定信息,采样线程可以执行其他操作,诸如递增计数器、读取计数器值或产生统计等。
在一个说明性实施例中,线程310内的采样线程执行从虚拟机316收集调用堆栈信息的工作,虚拟机316在一个说明性实施例中是JavaTM虚拟机(JVM)。虽然在从JVM获得调用堆栈信息的上下文中描述了所述说明性实施例,但是所述说明性实施例不限于此。而是,可以根据具体实现方式,关于其他虚拟机或不在虚拟机中的其他应用执行调用堆栈信息的收集。
在一个说明性实施例中,剖析器318是基于时间的上下文采样剖析器应用。剖析器318中所选择的采样线程使用位于工作区域311中的信息来确定要获得其调用堆栈的线程。例如,进程标识符(PID)和用于中断的线程的线程标识符(TID)可以被写入工作区域311,由此向采样线程识别哪个进程的哪个执行线程是采样的对象。用于由TID标识的执行线程的调用堆栈信息可以被采样线程获得和处理,以在数据区域320中建立调用树317,数据区域320由剖析器318分配和保持。调用树317包含调用堆栈信息,并且也可以包括关于叶节点的附加信息,所述叶节点是在中断和采样调用堆栈时执行的当前例程。
在这些说明性示例中的中断的情况下,中断处理器可以进行感兴趣的线程被中断(即正在执行,且其执行被分支到中断处理器)的判定,并且启动延迟过程调用(DPC)或第二级中断处理器,以向剖析器318发送信号。在一个实施例中,基于诸如策略326的一些标准周期地产生中断。在这些示例中,每次指定进程内的线程被中断时,可以执行触发调用堆栈信息的收集。当然,其他事件也可以用于启动信息的收集。例如,可以响应硬件计数器的溢出来周期地产生信息。
剖析器318可以基于在某个时间段上收集的调用堆栈信息来产生报告322。基于时间的采样提供了进行采样时代码正在执行的例程中花费的周期的精确估计,以及到达进行采样的代码所采用的路径的精确估计。基于所收集的信息的报告产生在每一个例程中花费的时间的合理精确的画面以及在由所选择的例程调用的例程中的累积时间。
图4是图示根据一个说明性实施例的在获得调用堆栈信息中使用的组件的示例图。在这个示例中,数据处理系统400包括处理器402、404和406。这些处理器是可以例如在图3的处理器单元300中找到的处理器的示例。在执行期间,这些处理器402、404和406的每一个可以具有在其上执行的线程。替代地,一个或多个处理器可以处于空闲状态中,其中,没有线程在空闲处理器上执行。
在所描述的示例中,当中断出现时,目标线程408在处理器402上执行,线程410在处理器404上执行,并且线程412在处理器406上执行。对于这个示例,目标线程408是在处理器402上中断的线程。例如,可以通过定时器中断或硬件计数器溢出来中断目标线程408的执行,其中,在指定数量的事件后,例如,在完成100,000个指令后,计数器的值被设置为溢出。
当产生中断时,装置驱动器414向采样线程416、418和420发送信号。这些采样线程的每一个与处理器之一相关联。采样线程418与处理器404相关联,采样线程420与处理器406相关联,并且,采样线程416与处理器402相关联。当满足诸如上述的定时器或计数器溢出的预定采样标准时,装置驱动器414唤醒这些采样线程416、418和420。在这些示例中,装置驱动器414类似于在图3中的装置驱动器308。
向采样线程418和420发送信号,并且采样线程418和420被允许在向采样线程416发送信号之前为活动或被执行而不进行任何工作。即,采样线程416被分配了这样的工作,即获得用于目标线程408的调用堆栈信息的请求,然而不向采样线程418和420分配工作,因为线程410和412还没有被中断。采样线程418和420是活动的,因此处理器404和处理器406不进入空闲状态。以这种方式,目标线程408将不从处理器402转移到另一个处理器,因为所有的处理器当前正在忙于执行线程。在这些示例中,通过使得处理器402、404和406处于非空闲状态中,避免了目标线程408从处理器402向另一个处理器的移动。
在所描述的示例中,采样线程416被分配从虚拟机422获得调用堆栈信息的形式的工作。虚拟机422类似于在图3中的操作系统304中执行的虚拟机316。可以通过对虚拟机422进行适当的调用来获得调用堆栈信息,虚拟机422在这个示例中为JVM。在所描述的示例中,用于访问JVM的接口是Java虚拟机工具接口(JVMTI)。这个接口允许调用堆栈信息的收集。该调用堆栈可以例如是包含不同线程或方法的使用计数的标准树。JVMTI是在Java5软件开发包(SDK)版本1.5.0中可获得的接口。在Java 2平台标准版(J2SE)SDK版本1.4.2中可获得Java虚拟机监视程序接口(JVMPI)。这两个接口允许进程或线程以到JVM的工具接口的形式来从JVM获得信息。可以从SunMicrosystems公司获得这些接口的说明,因此,在此不进一步描述这些接口。根据说明性实施例,两接口中的任一接口或到JVM的任何其他接口可以被用于获得用于一个或多个线程的调用堆栈信息。
采样线程416向剖析器424提供调用堆栈信息用于处理。剖析器424根据在采样时从虚拟机422获得的调用堆栈信息构造调用树。可以通过针对在调用堆栈信息中标识的方法和/或函数入口和出口分析调用堆栈信息来构造调用树。通过图3中的剖析器318可以将此调用树存储为图3的数据区域320中的树317,或者存储为独立的数据区域中的独立文件。
图5是可以使用说明性实施例的机制来产生的调用树的示例图。例如,调用树500是与在图3中的调用树317类似的调用树的示例。由诸如图3中的剖析器318的应用基于使用一个或多个采样线程收集的调用堆栈信息来建立和修改调用树500。在图5中所示的示例调用树500中,调用树500由节点502、504、506和508以及节点之间的弧构成,所述弧用于指示调用树500中的哪些节点调用哪些其他节点。在所描述的示例中,节点502表示进入方法A的入口,节点504表示进入方法B的入口,并且节点506和508分别表示进入方法C和D的入口。
现在转向图6,描述了根据一个说明性实施例的用于图示调用树的节点中的信息的图。入口600是诸如调用树500的调用树的节点(诸如在图5中的节点502)中的信息的示例,该调用树是基于通过采样线程采样虚拟机的调用堆栈而获得的跟踪信息所产生的。在这个示例中,入口600包含方法/函数标识符602、树层次(LV)604和样值606。方法/函数标识符602例如包含节点所表示的方法或函数的名称。树层次(LV)604标识调用树内的特定 节点的分级树层次。例如,向回参考图5,如果入口600用于图5中的节点502,则树层次604将指示这个节点是根节点。
调用树的节点可以用于产生诸如图3中的报告322的报告,该报告指示在包括处理器单元300、操作系统304、虚拟机316等的执行环境中使用图3中的线程310的计算机程序的执行的采样的结果。该报告可以是调用树及其节点的分析,用于识别例如计算机程序的执行花费较大量时间的区域。该报告可以提供用于可视化计算机程序在执行环境内执行的方式的机制。报告可视化机制可以包括单独例程的平简档(flat profile),即,由特定例程执行的时间量和在它们调用的所有例程中花费的时间的总和。其他报告可以标识每一个例程和由该例程调用的例程的调用者以及用于标识到该例程和它调用的所有例程的路径的完整调用堆栈。
返回图3,当向剖析器318的采样线程发送信号时,剖析器318的对应采样器线程经由诸如JVMTI和/或JVMPI的虚拟机接口请求对于每一个感兴趣的线程检索调用堆栈。被检索的每个调用堆栈被“移动(walk)”或记录到进程或虚拟机特定的调用树中。这通常被线程记录,以避免锁定以及用以提供改善的性能。在所检索的调用堆栈被移动到树中后,度量(在该情况下是样值的计数)被添加到叶节点中的样值基础。由装置驱动器308提供的对度量的每个采样或改变被添加到调用树的叶节点的基础度量。这些度量可以包括例如特定调用堆栈序列的出现的样值的计数。在其他实施例中,可以仅记录调用堆栈序列。
图7是根据一个说明性实施例的用于获得目标线程的调用堆栈信息的处理的示例流程图。例如,图7中所示的处理可以被实现在软件组件中,诸如图4中的装置驱动器414。
处理从检测被监控的事件开始(步骤700)。在一个说明性实施例中,此被监控的事件可以例如是来自操作系统的调用,其指示处理器已经发生了中断。目标线程(即当被监控的事件出现时正在执行的线程)被识别(步骤702)。信息被写入每一个采样线程的工作区域,以识别与剖析器的采样线程对应的各个进程和线程标识符,然后,向每一个采样线程发送信号(步骤704)。
在步骤704中,将该信号发送到所有采样线程,而不仅发送到与事件出现时感兴趣的目标线程正在其上执行的处理器相关联的采样线程。对于不与感兴趣的目标线程正在其上执行的处理器相关联的那些采样线程,这些采样 线程进入如下所述的旋转(spin)状态,并且不产生用于特定采样的任何调用堆栈跟踪信息。执行所有采样线程的信号通知以保证没有处理器在空闲状态中。在这些说明性实施例中,通过防止处理器进入或保持在空闲状态中,避免了目标线程的迁移或移动。
然后,为感兴趣的目标线程启动调用堆栈信息的收集(步骤706),然后该处理结束。如上所述,例如可以使用JVM的JVMTI和/或JVMPI接口来执行调用堆栈信息的收集。
接下来转向图8,提供了根据一个说明性实施例的、在用于产生调用树的线程中的处理的流程图。例如,图8中所示的处理可以被实现在采样线程中,诸如图4中的采样线程416。因此,可以在剖析器(诸如图3中的剖析器318)中使用从虚拟机为感兴趣的目标线程收集调用堆栈信息的采样线程来执行图8中所示的处理。
该处理从接收到采样用于目标线程的信息的通知开始(步骤800)。例如,该通知可以是来自装置驱动器的、采样线程将要收集调用堆栈信息的信号信号通知。然后,例如经由诸如JVMTI和/或JVMP的虚拟机接口从虚拟机检索调用堆栈信息(步骤802)。例如通过移动调用堆栈信息并且产生包括调用树的节点和节点之间的弧,而从调用堆栈信息产生输出调用树(步骤804)。图5中的调用树500是可以通过由采样线程产生的输出调用树的示例。
最后,输出调用树被存储在数据区域中(步骤806),其后该处理结束。在这些示例中,调用树被存储在诸如图3中的数据区域314的数据区域中,并且可以是一个或多个报告的产生的基础。
图9是根据一个说明性实施例的、用于响应接收到中断而通知处理器上的线程的处理的流程图。图9中所示的处理可以例如被实现在诸如图4中的装置驱动器414的软件组件中。
如图9中所示,处理从等待诸如中断的事件开始(步骤900)。当事件出现时,诸如中断出现时,识别当前的处理器(步骤902)。在这个示例中,当前的处理器是其上接收到中断的处理器。目标线程是中断时正在当前处理器上执行的线程。目标线程是期望其调用堆栈信息的感兴趣的线程。
进行对于当前处理器是否存在工作的判定(步骤904)。可以由装置驱动器使用诸如图3中的策略326的策略来执行步骤904。可能不是每次中断出现时都期望调用堆栈信息。触发调用堆栈信息的收集的“事件”可以是中断 的出现和条件的存在的组合。例如,可能不期望调用堆栈信息,直到某个用户状态出现,诸如特定用户或特定类型的用户登录到数据处理系统中。又如,可能不期望调用堆栈信息,直到用户开始某个处理或启动某个行为。如果不存在工作,则处理返回到步骤900,以等待另一个中断。
如果对于当前处理器存在工作,则处理分配工作(步骤906)。可以通过将工作分配布置在诸如图3中的工作区域311的工作区域中来分配工作。在这些示例中,工作被分配到与出现中断时感兴趣的线程正在其上执行的处理器相关联的采样线程。选择非当前处理器(步骤908),并且,通知所选择的处理器上的线程(步骤910)。在步骤910中,向用于所选择的处理器的采样线程发送信号,以唤醒该采样线程。
然后,进行是否存在更多的非当前处理器要通知的判定(步骤912)。如果存在另外的非当前处理器要通知,则处理返回到步骤908。否则,通知当前处理器上的线程(步骤914),并且处理随后结束。在这些示例中,最后通知用于当前处理器的采样线程,然而,说明性实施例不限于此。而是,可以首先通知当前处理器上的线程。
现在参考图10,描述了根据一个说明性实施例的用于采样线程的处理的流程图。可以通过与剖析器应用相结合的采样线程来实现在图10中所示的处理,该采样线程例如是图4中的采样线程416、采样线程418或采样线程420,该剖析器应用例如是图3中的剖析器318。
如图10中所示,处理从等待通知开始(步骤1000)。当接收到通知时,进行是否已经向采样线程分配了工作的判定(步骤1002)。通过查看诸如图3中的工作区域311的存储位置或数据区域,并且确定是否存在进程标识符、线程标识符和用于指示要执行的工作的类型(例如要收集的跟踪信息的类型等)的其他信息,来进行是否已经分配工作的识别。为了说明性实施例的目的,工作区域中的进程标识符和线程标识符的存在可以本身就是要针对那个特定进程标识符和线程标识符检索调用堆栈信息的指示。在一个说明性实施例中,可以在图3中的数据区域314中向不同的采样线程分配工作。
如果还没有分配工作,则处理在步骤1010继续。另一方面,如果已经分配了工作,则执行所分配的工作(步骤1004)。在这些示例中,该工作是获得用于目标线程的调用堆栈信息。
然后进行工作是否完成的判定(步骤1006)。如果工作未完成,则处理 返回到步骤1004。否则,如果工作完成,则作出工作完成的指示(步骤1008)。例如,可以在诸如图3中的工作区域311的工作区域中进行这个指示。该指示允许其他采样线程知道已经收集了调用堆栈信息。
对于已经完成了它们的工作的线程或者对于还没有被分配工作的线程(步骤1002),处理进入旋转状态(步骤1010),直到完成了所有线程正在执行的所有工作。当旋转状态完成时,处理返回到步骤1000,以等待另一个通知。在执行步骤1010中,采样线程可以执行旋转等待循环。这种类型的循环是短代码段,其读取存储器位置,然后将其与特定值作比较。如果存储器位置的内容等于这个值,则循环完成执行。在这些示例中,存储器位置是工作区域。在这些示例中,采样线程已经完成工作的指示是用于停止旋转状态所需要的特定值。否则,重读存储器位置,并且再一次进行比较。在这些示例中,当已经完成工作的指示出现时,旋转状态结束。这种机制允许采样线程继续活动,直到已经收集了调用堆栈信息。
上面的机制允许剖析器一次使用一个采样线程来与执行环境的单个虚拟机相关联地一次针对一个执行线程收集调用堆栈信息。在任何一次仅实际上使用与产生中断的处理器相关联的采样线程来收集跟踪信息,即,调用堆栈的采样。在与中断的处理器对应的采样线程正在收集调用堆栈信息时,其他采样线程可以被唤醒和置于旋转状态中,以避免在正在收集调用堆栈信息的同时线程迁移。然而,对于这些其他的采样线程不收集跟踪信息。
在另一个说明性实施例中,如上所述,数据处理系统可以包括多个虚拟机,其中多个处理器上的线程访问这些虚拟机中的一个或多个。在该另一个说明性实施例中,每次出现需要跟踪信息的采样(例如一个或多个虚拟机的调用堆栈的采样)的事件时,唤醒所有处理器的所有采样线程。关于每一个采样线程确定它们对应的执行线程的执行状态。该确定判定采样线程要收集跟踪信息,要被置于循环或旋转状态中,还是应当简单地更新装置驱动器采样统计信息。在一个实施例中,在每一个处理器上产生中断,并且,每一个中断处理器循环直到所有处理器已经中断,或者将延迟过程调用(DPC)或第二级中断处理器排队,并且DPC或第二级中断处理器循环直到确定正在执行该处理器的DPC或第二级中断处理器。在替代实施例中,当在一个处理器上出现采样中断时,产生处理器间中断(IPI)以在其他处理器上强制产生中断。在任何一种情况下,一旦确定所有处理器现在准备好继续处理该样值, 则该逻辑进行是否有任何采样器线程需要被通知来处理样值的判定。如果不需要通知任何采样器线程来处理样值,则更新计数。例如,对于每一个采样线程,如果对应的执行线程当前正在感兴趣的虚拟机中执行,即正在访问感兴趣的虚拟机,则对应的采样线程收集那个虚拟机和执行线程的跟踪信息。如果执行线程当前未在感兴趣的虚拟机中执行,而是存在与在感兴趣的虚拟机中执行的执行线程相关联的其他采样线程,则可以将当前的采样线程置于循环或旋转状态中,直到该跟踪信息被其他采样线程收集为止。如果这些条件的任何一个都不存在,则简单地更新装置驱动器采样统计,例如计数值。也可以在检测到其他条件时更新这些装置驱动器采样统计。
例如,通过附接到JVM的剖析器来注册JVM用于监控。当剖析器确定应当监控JVM时,它为每一个进程建立一个采样线程,并且经由装置驱动器支持的接口来注册JVM。当进行采样时,装置驱动器旋转经过每一个注册的JVM以更新计数,并且确定是否需要特定的采样器线程的通知。如果有任何采样器线程需要被通知,则它将对每一个处理器通知一个采样器线程,以检索中断的线程的调用堆栈,或者旋转等待直到所有采样器线程已经完成它们的工作。可以通过对所有的采样器线程(即所有注册的JVM)检查进行中的工作,来确定采样线程的完成。一旦确定所有的采样器线程都已经完成了它们的工作,则采样器线程进入阻挡(blocked)状态,以等待分配新的工作。
图11是根据一个说明性实施例的、用于关于由多个处理器与多个虚拟机相结合地执行的多个线程而执行计算机程序的剖析的系统的示例框图。如图11中所示,每一个采样线程1116-1120与在数据处理系统1100的处理器1102-1106之一上执行的对应线程1108-1112相关联。这些执行线程1108-1112可以访问数据处理系统1100的一个或多个虚拟机1122-1126。而且,采样线程1116-1120可以经由对应的虚拟机接口1132-1136来访问虚拟机1122-1126。剖析器1140可以以与如上所述类似的方式运行以使用对应的采样线程1116-1120来收集跟踪信息,诸如每一个感兴趣的虚拟机1122-1126的调用堆栈信息。剖析器1140可以基于从采样线程1116-1120收集的跟踪信息来产生一个或多个跟踪数据文件和调用树。
装置驱动器1114(如在图4中的装置驱动器414)向采样线程1116-1120发送信号,以使得这些采样线程1116-1120唤醒并确定是否要执行跟踪信息的收集。另外,装置驱动器1114可以保持多个采样统计计数器1150-1154, 它们基于每次唤醒采样线程1116-1120时执行线程1108-1112的执行状态而被递增。剖析器1140可以访问这些计数器1150-1154,以获得关于线程1108-1112的执行的采样的统计信息,并且在产生跟踪数据文件和报告中使用所述统计信息。
如上所述,每次处理器1102-1106产生采样中断时,该中断被发送到操作系统,该操作系统继而产生对驱动器1114的调用。装置驱动器1114可以向剖析器1140的采样线程1116-1120发送信号,以使得这些采样线程1116-1120被唤醒。作为响应,每一个采样线程1116-1120确定它们对应的执行线程1108-1112的状态,并且基于这样状态,确定是否要从正在被那个执行线程访问的虚拟机收集跟踪信息。例如,可以将一个或多个感兴趣的虚拟机1122-1126的标识符写入各个采样线程1116-1120的工作区域。
不是数据处理系统的所有虚拟机1122-1126都需要被指定为感兴趣的虚拟机。例如,在一些情况下,剖析器1140可能仅对于单个虚拟机1122感兴趣。虽然可能仅对一个虚拟机1122感兴趣,但是每一个执行线程1108-1112可能能够访问该同一虚拟机1122,或者,可以与执行线程1108-1112中的多个相关联地提供同一虚拟机1122的实例,使得多个执行线程1108-1112可以与同一虚拟机1122相关联地执行或访问同一虚拟机1122。在该情况下,说明性实施例的机制收集这些执行线程中的每一个的跟踪信息,但是可以汇集该跟踪信息或组合该跟踪信息。
对于具有采样时在感兴趣的虚拟机1122-1126中执行的关联执行线程1108-1112的每一个采样线程1116-1120,诸如调用堆栈信息的跟踪信息被收集并提供给剖析器1140。对于具有未在虚拟机1122-1126中执行的关联执行线程1108-1112的那些采样线程1116-1120,不收集这样的跟踪信息。而是,如果确定至少一个其他的采样线程1116-1120要收集跟踪信息,则未在感兴趣的虚拟机1122-1226中执行的采样线程可以被置于旋转或循环状态中,直到其他采样线程结束了收集它们的跟踪信息。
在任一情况下,或如果这些情况都未出现,则装置驱动器1114可以基于所确定的执行线程1108-1112的条件来更新统计计数器1150-1154。与统计计数器1150-1154相关联的特定条件可以具有各种类型。例如,一个统计计数器1150可以与无用信息收集条件相关联,在该无用信息收集条件中,如果采样线程1116-1120确定在无用信息收集操作中涉及其对应的执行线程 1108-1112,则递增统计计数器1150。又如,另一个统计计数器1152可以与下述条件相关联:其中,执行线程被简单地确定为在感兴趣的虚拟机之外执行处理,并且统计计数器1152可以响应于采样线程1116-1120确定它们的执行线程1108-1112正在感兴趣的虚拟机之外执行而被递增。又如,第三统计计数器1156可以与下述条件相关联:其中,执行线程在感兴趣的虚拟机内执行。因此,当采样线程1116-1120确定其对应的执行线程正在感兴趣的虚拟机1122-1126内执行时,计数器1156可以被装置驱动器1114递增。应当明白,除了计数器1152-1156外,或替代计数器1152-1156,还可以使用与执行线程1108-1112的其他类型的执行条件相关联的其他计数器。
剖析器1124在产生报告时可以访问这些计数器1152-1156,并且使用它们来提供报告中的执行统计。例如,计数器1152的计数值可以提供关于线程在执行无用信息收集操作上花费的相对时间量的信息。计数器1154的计数值可以提供关于线程在感兴趣的虚拟机之外执行处理所花费的相对时间量的信息。此外,计数器1156的计数值可以提供关于线程在感兴趣的虚拟机内执行处理所花费的相对时间量的信息。
因此,根据与采样线程1116-1120对应的执行线程1108-1112的执行状态,可以针对数据处理系统的感兴趣的一个或多个虚拟机1122-1126同时收集跟踪信息。结果,可以以比已知的剖析工具的串行方式更高效和及时的方式来收集更精确的跟踪信息。而且,可以针对在感兴趣的虚拟机内执行的每一个执行线程收集跟踪信息,而不论那个线程是否是产生原始中断的那个。可以使用统计计数器来产生关于执行线程的状态的信息,而不论所述执行线程是否是在原始中断中产生的那些。这些统计计数器可以提供执行线程在数据处理系统的执行环境的各个部分中花费的时间的信息。
剖析器可以基于此跟踪信息和统计计数器信息来产生报告。这些报告可以提供关于调用堆栈和关于在特定代码部分中花费的时间的统计度量等信息。跟踪报告可以根据说明性实施例的特定实施方式而采用许多不同的形式。这样的报告可以接受进一步的处理(例如通过后置处理器等),以产生用于识别代码的如下部分的其它报告:该部分可能是用于优化的候选者,可能具有其中需要或期望校正代码的区域,等等。
应当明白,在一个说明性实施例中,使用说明性实施例的机制收集的跟踪信息可以被存储在跟踪和/或报告数据文件中,该跟踪和/或报告数据文件可 以被存储来用于以后使用。可以执行计算机代码的独立运行和跟踪,以产生第二跟踪信息以及第二跟踪和/或报告数据文件。然后可以将计算机代码的这些独立运行和跟踪提供到后置处理器,该后置处理器比较该跟踪,以识别其中存在需要校正的问题或其中可以调整或优化计算机代码以获得更好的性能的计算机代码部分。可以由后置处理器基于下述规则来自动地执行这样的比较和分析,所述规则识别满足指示其中可能或应当执行调整的问题或区域的预定义标准的特定特性或条件。
图12是概述根据说明性实施例的采样线程的示例操作的流程图,其中,多个处理器和多个虚拟机的多个线程被剖析。图12被示出为对每个采样线程串行地执行,然而,应当明白,可以并行地而不是串行地执行执行线程的这种状态确定。
如图12中所示,该操作从装置驱动器向数据处理系统的每一个处理器的采样器线程中的每一个发送信号开始(步骤1210)。选择下一个采样器线程(步骤1220),并且,进行所选择的采样器线程的对应执行线程在采样时是否在感兴趣的虚拟机中执行的判定(步骤1230)。如果执行线程正在感兴趣的虚拟机中执行,则检索用于该虚拟机的调用堆栈信息,并且更新诸如在统计计数器中的装置驱动器统计(步骤1240)。然后,进行是否存在更多的采样线程要处理的判定(步骤1250)。如果存在,则操作返回到步骤1120,否则操作结束。
如果执行线程未在感兴趣的虚拟机中执行,则判定是否存在需要从虚拟机检索跟踪信息(例如,调用堆栈信息)的任何其他采样线程(步骤1260)。如果存在,则将当前的采样线程置于循环/旋转状态中,直到该调用堆栈被其他采样线程检索到为止。另外,更新装置驱动器统计(步骤1270)。如果至少一个其他采样线程不需要检索调用堆栈信息,则可以简单地更新装置驱动器统计(步骤1280)。
因此,说明性实施例提供了支持多个虚拟机的、用于基于时间的上下文采样的机制。如上所述,应当明白,说明性实施例可以采取完全硬件实施例、完全软件实施例或包含硬件和软件元件的实施例的形式。在一个示例实施例中,以软件或程序代码来实现说明性实施例的机制,该软件或程序代码包括但是不限于固件、常驻软件、微码等。
适合于存储和/或执行程序代码的数据处理系统将包括至少一个处理器, 该至少一个处理器通过系统总线间接地或直接地耦合到存储器元件。存储器元件可以包括:在程序代码的实际执行期间使用的本地存储器;大容量存储器;以及高速缓存,其提供至少一些程序代码的暂时存储,以便减少在执行期间必须从大容量存储器检索代码的次数。
输入/输出或I/O装置(包括但是不限于键盘、显示器、指示装置等)可以直接地或通过中间I/O控制器耦合到系统。网络适配器也可以耦合到系统,以使得数据处理系统能够变得通过中间的专用或公共网络耦接到其他数据处理系统或远程打印机或存储装置。调制解调器、电缆调制解调器和以太网卡仅是当前可获得的类型的网络适配器中的一些。已经为了描述和说明的目的而提供了所述说明,并且该说明不意在是穷尽性的或限于所公开的形式。许多修改和改变对于本领域的技术人员而言是显然的。选择和描述实施例,以便最佳地说明原理、实际应用,并且使得其他本领域的技术人员能够明白具有适合于所考虑的特定用途的各种修改的本发明的实施例。
Claims (12)
1.一种数据处理系统中的方法,用于执行基于时间的上下文采样,所述上下文采样将所述数据处理系统中的计算机代码的执行剖析,所述方法包括:
响应于事件的出现,唤醒与在所述数据处理系统的处理器上执行的多个执行线程相关联的多个采样线程;
由所述数据处理系统的处理器针对每一个采样线程确定对应执行线程关于一个或多个感兴趣的虚拟机的执行状态;
由所述处理器针对每一个采样线程,基于所述对应执行线程的所述执行状态,确定是否从与所述对应执行线程相关联的虚拟机检索跟踪信息;以及
对于每一个采样线程,响应于确定要从与所述对应执行线程相关联的虚拟机检索跟踪信息,从所述虚拟机检索所述跟踪信息,并且将所述跟踪信息存储在与所述数据处理系统相关联的存储装置中;
其中,针对每一个采样线程确定是否从与所述对应执行线程相关联的虚拟机检索跟踪信息包括:
确定是否有所述采样线程的任何一个要从与所述对应执行线程相关联的虚拟机检索跟踪信息;以及
响应于确定所述采样线程中的任一个都将不检索跟踪信息,基于所述对应执行线程的执行条件来更新与所述多个执行线程相关联的一个或多个装置驱动器采样统计计数器。
2.根据权利要求1所述的方法,还包括:
在所述数据处理系统的处理器上选择感兴趣的虚拟机,对于所述感兴趣的虚拟机而言,要从在所述感兴趣的虚拟机中执行的线程收集跟踪信息,其中:
针对每一个采样线程确定是否从与所述对应执行线程相关联的虚拟机检索跟踪信息包括:确定所述对应执行线程当前是否在所述感兴趣的虚拟机上执行,并且
响应于所述虚拟机是所述感兴趣的虚拟机,从与所述对应执行线程相关联的虚拟机检索跟踪信息。
3.根据权利要求2所述的方法,其中,如果与当前采样线程对应的执行线程当前不在感兴趣的虚拟机上执行,而是存在具有在感兴趣的虚拟机上执 行的对应执行线程的至少一个其他采样线程,则将当前的采样线程置于旋转状态中,直到跟踪信息被所述至少一个其他采样线程收集为止。
4.根据权利要求1所述的方法,还包括:
基于所述对应执行线程的执行的条件来更新与所述多个执行线程相关联的一个或多个采样统计计数器。
5.根据权利要求4所述的方法,其中,所述一个或多个采样统计计数器包括以下项中的至少一个:第一计数器,用于计数采样线程确定当唤醒所述采样线程时在无用信息收集操作中涉及所述采样线程的对应执行线程的次数;第二计数器,用于计数采样线程确定当唤醒所述采样线程时所述采样线程的对应执行线程正在感兴趣的虚拟机之外执行处理的次数;第三计数器,用于计数采样线程确定当唤醒所述采样线程时所述采样线程的对应执行线程正在感兴趣的虚拟机内执行的次数。
6.根据权利要求2所述的方法,其中,选择感兴趣的虚拟机包括:
将多个虚拟机向在所述数据处理系统中执行的剖析器工具注册;以及
接收向所述剖析器工具注册的所述多个虚拟机中的虚拟机的选择,作为感兴趣的虚拟机。
7.根据权利要求6所述的方法,其中,所述剖析器工具通过在向所述剖析器工具注册的所述多个虚拟机的子集中循环地选择下一个虚拟机来从所述多个虚拟机中选择感兴趣的虚拟机。
8.根据权利要求6所述的方法,其中,所选择的感兴趣的虚拟机是被选择来用于收集跟踪信息的、向所述剖析器工具注册的所述多个虚拟机的子集的一部分,并且其中,所述多个虚拟机的所述子集小于向所述剖析器工具注册的所述多个虚拟机的总数。
9.根据权利要求2所述的方法,其中,将所选择的感兴趣的虚拟机的标识符写入与所述采样线程对应的存储器的工作区域。
10.一种数据处理系统,用于执行基于时间的上下文采样,所述上下文采样将所述数据处理系统中的计算机代码的执行剖析,所述系统包括:
用于响应于事件的出现,唤醒与在所述数据处理系统的处理器上执行的多个执行线程相关联的多个采样线程的装置;
用于由所述数据处理系统的处理器针对每一个采样线程确定对应执行线程关于一个或多个感兴趣的虚拟机的执行状态的装置;
用于由所述处理器针对每一个采样线程,基于所述对应执行线程的执行状态,确定是否从与所述对应执行线程相关联的虚拟机检索跟踪信息的装置;以及
用于对于每一个采样线程,响应于确定要从与所述对应执行线程相关联的虚拟机检索跟踪信息,从所述虚拟机检索所述跟踪信息,并且将所述跟踪信息存储在与所述计算装置相关联的存储装置中的装置;
其中,所述用于由所述处理器针对每一个采样线程,基于所述对应执行线程的执行状态,确定是否从与所述对应执行线程相关联的虚拟机检索跟踪信息的装置包括:
用于确定是否有所述采样线程的任何一个要从与所述对应执行线程相关联的虚拟机检索跟踪信息的装置;以及
用于响应于确定所述采样线程中任一个都将不检索跟踪信息,基于所述对应执行线程的执行条件来更新与所述多个执行线程相关联的一个或多个装置驱动器采样统计计数器的装置。
11.根据权利要求10所述的数据处理系统,其中,还包括:
用于在所述数据处理系统的处理器上选择感兴趣的虚拟机的装置,以及
用于对于所述感兴趣的虚拟机而言,要从在所述感兴趣的虚拟机中执行的线程收集跟踪信息的装置,其中:
所述用于由所述处理器针对每一个采样线程确定是否从与所述对应执行线程相关联的虚拟机检索跟踪信息的装置包括:用于确定所述对应执行线程是否当前正在所述感兴趣的虚拟机上执行的装置;以及用于响应于所述虚拟机是所述感兴趣的虚拟机,从与所述对应执行线程相关联的虚拟机检索跟踪信息的装置。
12.根据权利要求11所述的数据处理系统,其中还包括:用于如果与当前的采样线程对应的执行线程当前不在感兴趣的虚拟机上执行,而是存在具有在感兴趣的虚拟机上执行的对应执行线程的至少一个其他采样线程,则将当前的采样线程置于旋转状态中,直到跟踪信息被所述至少一个其他采样线程收集为止的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/494,469 | 2009-06-30 | ||
US12/494,469 US20100333071A1 (en) | 2009-06-30 | 2009-06-30 | Time Based Context Sampling of Trace Data with Support for Multiple Virtual Machines |
PCT/EP2010/058486 WO2011000700A1 (en) | 2009-06-30 | 2010-06-16 | Time based context sampling of trace data with support for multiple virtual machines |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102341790A CN102341790A (zh) | 2012-02-01 |
CN102341790B true CN102341790B (zh) | 2014-12-10 |
Family
ID=42542773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080010002.9A Expired - Fee Related CN102341790B (zh) | 2009-06-30 | 2010-06-16 | 数据处理系统及其使用的方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20100333071A1 (zh) |
EP (1) | EP2386085A1 (zh) |
JP (1) | JP5520371B2 (zh) |
CN (1) | CN102341790B (zh) |
WO (1) | WO2011000700A1 (zh) |
Families Citing this family (21)
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 |
US20110144969A1 (en) * | 2009-12-11 | 2011-06-16 | International Business Machines Corporation | High-Frequency Entropy Extraction From Timing Jitter |
US8732671B2 (en) * | 2010-02-26 | 2014-05-20 | Red Hat, Inc. | Generating stack traces of call stacks that lack frame pointers |
US9176783B2 (en) | 2010-05-24 | 2015-11-03 | International Business Machines Corporation | Idle transitions sampling with execution context |
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 |
US8453123B2 (en) | 2010-07-16 | 2013-05-28 | International Business Machines Corporation | Time-based trace facility |
US8799904B2 (en) | 2011-01-21 | 2014-08-05 | International Business Machines Corporation | Scalable system call stack sampling |
CN102073580B (zh) * | 2011-02-01 | 2013-10-02 | 华为技术有限公司 | 性能剖析方法、剖析工具和计算机系统 |
US20130227531A1 (en) * | 2012-02-24 | 2013-08-29 | Zynga Inc. | Methods and Systems for Modifying A Compiler to Generate A Profile of A Source Code |
US9081629B2 (en) * | 2013-05-19 | 2015-07-14 | Frank Eliot Levine | Excluding counts on software threads in a state |
DE112014007090T5 (de) * | 2014-10-24 | 2017-07-13 | Google Inc. | Verfahren und systeme zum automatischen tagging anhand von software-ausführungs-traces |
US9658942B2 (en) | 2015-04-02 | 2017-05-23 | International Business Machines Corporation | Dynamic tracing framework for debugging in virtualized environments |
US9448833B1 (en) | 2015-04-14 | 2016-09-20 | International Business Machines Corporation | Profiling multiple virtual machines in a distributed system |
JP6544054B2 (ja) | 2015-06-02 | 2019-07-17 | 富士通株式会社 | 情報処理装置、実行情報記録プログラムおよび実行情報記録方法 |
US10091076B2 (en) | 2015-08-25 | 2018-10-02 | Google Llc | Systems and methods for configuring a resource for network traffic analysis |
US9965375B2 (en) * | 2016-06-28 | 2018-05-08 | Intel Corporation | Virtualizing precise event based sampling |
US10198341B2 (en) * | 2016-12-21 | 2019-02-05 | Microsoft Technology Licensing, Llc | Parallel replay of executable code |
US10657031B2 (en) * | 2018-03-30 | 2020-05-19 | Oracle International Corporation | Scalable execution tracing for large program codebases |
US11714676B2 (en) * | 2020-01-03 | 2023-08-01 | International Business Machines Corporation | Software-directed value profiling with hardware-based guarded storage facility |
US11809571B2 (en) * | 2021-06-14 | 2023-11-07 | Cisco Technology, Inc. | Vulnerability analysis using continuous application attestation |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1614555A (zh) * | 2003-11-06 | 2005-05-11 | 国际商业机器公司 | 用于自主硬件辅助的线程栈跟踪的装置与方法 |
US6954922B2 (en) * | 1998-04-29 | 2005-10-11 | Sun Microsystems, Inc. | Method apparatus and article of manufacture for time profiling multi-threaded programs |
Family Cites Families (91)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
JP2734269B2 (ja) * | 1991-12-26 | 1998-03-30 | 日本電気株式会社 | 半導体製造装置 |
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 |
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 |
EP0689141A3 (en) * | 1994-06-20 | 1997-10-15 | At & T Corp | Disruption-based hardware support for system performance profiling |
US6728959B1 (en) * | 1995-08-08 | 2004-04-27 | Novell, Inc. | Method and apparatus for strong affinity multiprocessor scheduling |
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 |
US5913213A (en) * | 1997-06-16 | 1999-06-15 | Telefonaktiebolaget L M Ericsson | Lingering locks for replicated data objects |
US6108654A (en) * | 1997-10-31 | 2000-08-22 | Oracle Corporation | Method and system for locking resources in a computer system |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
JP4420325B2 (ja) * | 2001-11-01 | 2010-02-24 | ベリサイン・インコーポレイテッド | トランザクションメモリ管理装置 |
US7263108B2 (en) * | 2002-08-06 | 2007-08-28 | Netxen, Inc. | Dual-mode network storage systems and methods |
US7103597B2 (en) * | 2002-10-03 | 2006-09-05 | Mcgoveran David O | Adaptive transaction manager for complex transactions and business process |
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 |
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 |
US7536673B2 (en) * | 2003-07-22 | 2009-05-19 | Sap Ag | Application business object processing |
JP4740851B2 (ja) * | 2003-08-28 | 2011-08-03 | ミップス テクノロジーズ インコーポレイテッド | 仮想プロセッサリソースの動的構成のための機構体 |
US7089250B2 (en) * | 2003-10-08 | 2006-08-08 | International Business Machines Corporation | Method and system for associating events |
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 |
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 |
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 |
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 |
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 |
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 |
US7689867B2 (en) * | 2005-06-09 | 2010-03-30 | Intel Corporation | Multiprocessor breakpoint |
US7788664B1 (en) * | 2005-11-08 | 2010-08-31 | Hewlett-Packard Development Company, L.P. | Method of virtualizing counter in computer system |
US7474991B2 (en) * | 2006-01-19 | 2009-01-06 | International Business Machines Corporation | Method and apparatus for analyzing idle states in a data processing system |
US8018845B2 (en) * | 2006-01-25 | 2011-09-13 | Cisco Technology, Inc | Sampling rate-limited traffic |
US7587364B2 (en) * | 2006-03-24 | 2009-09-08 | Sap Ag | Systems and methods for bank determination and payment handling |
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 |
US9514201B2 (en) * | 2006-10-13 | 2016-12-06 | International Business Machines Corporation | Method and system for non-intrusive event sequencing |
US9274857B2 (en) * | 2006-10-13 | 2016-03-01 | International Business Machines Corporation | Method and system for detecting work completion in loosely coupled components |
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 |
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 |
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 |
US8132170B2 (en) * | 2007-08-07 | 2012-03-06 | International Business Machines Corporation | Call stack sampling in a data processing system |
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 |
US8156495B2 (en) * | 2008-01-17 | 2012-04-10 | Oracle America, Inc. | Scheduling threads on processors |
US8434098B2 (en) * | 2008-02-07 | 2013-04-30 | Microsoft Corporation | Synchronizing split user-mode/kernel-mode device driver architecture |
GB2457341B (en) * | 2008-02-14 | 2010-07-21 | Transitive Ltd | Multiprocessor computing system with multi-mode memory consistency protection |
US8799904B2 (en) * | 2011-01-21 | 2014-08-05 | International Business Machines Corporation | Scalable system call stack sampling |
-
2009
- 2009-06-30 US US12/494,469 patent/US20100333071A1/en not_active Abandoned
-
2010
- 2010-06-16 EP EP10725686A patent/EP2386085A1/en not_active Withdrawn
- 2010-06-16 WO PCT/EP2010/058486 patent/WO2011000700A1/en active Application Filing
- 2010-06-16 CN CN201080010002.9A patent/CN102341790B/zh not_active Expired - Fee Related
- 2010-06-16 JP JP2012516649A patent/JP5520371B2/ja not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6954922B2 (en) * | 1998-04-29 | 2005-10-11 | Sun Microsystems, Inc. | Method apparatus and article of manufacture for time profiling multi-threaded programs |
CN1614555A (zh) * | 2003-11-06 | 2005-05-11 | 国际商业机器公司 | 用于自主硬件辅助的线程栈跟踪的装置与方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2011000700A1 (en) | 2011-01-06 |
EP2386085A1 (en) | 2011-11-16 |
CN102341790A (zh) | 2012-02-01 |
JP2012531642A (ja) | 2012-12-10 |
JP5520371B2 (ja) | 2014-06-11 |
US20100333071A1 (en) | 2010-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102341790B (zh) | 数据处理系统及其使用的方法 | |
US8132170B2 (en) | Call stack sampling in a data processing system | |
US8176475B2 (en) | Method and apparatus for identifying instructions associated with execution events in a data space profiler | |
US8136124B2 (en) | Method and apparatus for synthesizing hardware counters from performance sampling | |
US8166462B2 (en) | Method and apparatus for sorting and displaying costs in a data space profiler | |
Alam et al. | Syncperf: Categorizing, detecting, and diagnosing synchronization performance bugs | |
US8032875B2 (en) | Method and apparatus for computing user-specified cost metrics in a data space profiler | |
US8762951B1 (en) | Apparatus and method for profiling system events in a fine grain multi-threaded multi-core processor | |
US8813055B2 (en) | Method and apparatus for associating user-specified data with events in a data space profiler | |
US8627335B2 (en) | Method and apparatus for data space profiling of applications across a network | |
US8640114B2 (en) | Method and apparatus for specification and application of a user-specified filter in a data space profiler | |
US20100017583A1 (en) | Call Stack Sampling for a Multi-Processor System | |
US8286134B2 (en) | Call stack sampling for a multi-processor system | |
Rosà et al. | Failure analysis and prediction for big-data systems | |
CN104335175A (zh) | 基于系统性能度量在系统节点之间标识和迁移线程的方法和系统 | |
CN1252594C (zh) | 使能跟踪重复指令的方法和系统 | |
US8032869B2 (en) | Profiling method and computer product | |
US9329969B2 (en) | Method and system of associating a runtime event with a component | |
US20150033233A1 (en) | Job delay detection method and information processing apparatus | |
EP3835944B1 (en) | Apparatus and method for source code optimisation | |
CN104380264A (zh) | 运行时间检测报告 | |
CN104169886A (zh) | 通过地址的运行时间检测间接采样 | |
CN104169887A (zh) | 通过指令操作码的运行时间检测间接采样 | |
CN101013378B (zh) | 动态地迁移通道 | |
CN112052073A (zh) | 脚本性能分析方法及装置、可读存储介质及电子设备 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20141210 Termination date: 20200616 |