CN104572309A - 用于代码同步点的识别的方法和系统 - Google Patents

用于代码同步点的识别的方法和系统 Download PDF

Info

Publication number
CN104572309A
CN104572309A CN201410571317.0A CN201410571317A CN104572309A CN 104572309 A CN104572309 A CN 104572309A CN 201410571317 A CN201410571317 A CN 201410571317A CN 104572309 A CN104572309 A CN 104572309A
Authority
CN
China
Prior art keywords
lock
group
routing information
catch
processor
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
Application number
CN201410571317.0A
Other languages
English (en)
Other versions
CN104572309B (zh
Inventor
M·H·道森
T·A·格瑞-唐纳德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN104572309A publication Critical patent/CN104572309A/zh
Application granted granted Critical
Publication of CN104572309B publication Critical patent/CN104572309B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Debugging And Monitoring (AREA)
  • Telephonic Communication Services (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

提供一种用于代码同步点的识别的方法和系统。用于代码同步点的识别的计算机实现的方法的说明性实施例在与处理器关联的管理运行时环境中收集一组锁的锁定数据以形成一组竞争度量,并且使用一组预定事件触发器分析所述一组竞争度量。该方法还确定是否满足所述一组预定事件触发器中的一组预定阈值中的阈值,并且识别与被识别为满足所述预定阈值的所述预定事件触发器关联的锁的调用路径捕捉的特定形式。使用调用路径捕捉的所述特定形式捕捉锁的调用路径信息。

Description

用于代码同步点的识别的方法和系统
技术领域
本公开内容一般地涉及数据处理系统中的代码同步,更具体地讲,涉及数据处理系统的管理运行时环境中的代码同步点的高效识别。
背景技术
虚拟机(JVM)上运行的应用使用具有对象锁或java.util.Concurrent锁的形式的锁定机制来管理线程之间的同步。然而,同步会引起性能问题并且妨碍应用在移动到更大的多核处理系统或在更大的多核处理系统上运行时进行调整。存在用于帮助开发者识别哪些锁竞争激烈(被称为“热门”)的技术,然而这些技术通常具有缺点。
缺点通常包括缺少关于特定锁被布置在应用代码中的什么位置的信息。另外,捕捉调用路径信息的开销在不可接受的程度上影响应用的行为。在搜集信息时,这些技术对与所有锁相关的呼叫路径进行采样,而不管锁是否被视为热门,并且因此通常捕捉较少的关于锁的信息,这成为问题。另外,针对所有线程/呼叫路径执行采样,因为这些技术不知道哪些线程/呼叫路径可能包括锁定。
例如,使对象与唯一的类而非java.lang.Object同步可帮助改善通过这些已有技术收集的数据。然而,这种形式的同步需要以特定方式设计应用并且将不提供关于哪些代码路径正激烈竞争特定锁的信息。例如,可存在可布置锁的10个位置,但这些位置中的仅2个位置被频繁地调用。
发明内容
根据一个实施例,一种用于代码同步点的识别的计算机实现的方法包括:由处理器在与处理器关联的管理运行时环境中收集一组锁的锁定数据以形成一组竞争度量;以及由处理器使用一组预定事件触发器分析所述一组竞争度量。该方法还由处理器确定是否满足所述一组预定事件触发器中的一组预定阈值中的阈值,并且由处理器识别与被识别为满足所述预定阈值的所述预定事件触发器关联的锁的调用路径捕捉的特定形式。该方法还使用调用路径捕捉的所述特定形式捕捉锁的调用路径信息。
根据另一实施例,一种用于代码同步点的识别的计算机程序产品包括一种计算机可记录类型装置,所述计算机可记录类型装置包含存储在它上面的计算机可执行程序代码。所述计算机可执行程序代码包括:用于由处理器在与处理器关联的管理运行时环境中收集一组锁的锁定数据以形成一组竞争度量的计算机可执行程序代码;用于由处理器使用一组预定事件触发器分析所述一组竞争度量的计算机可执行程序代码;用于由处理器确定是否满足所述一组预定事件触发器中的一组预定阈值中的阈值的计算机可执行程序代码;用于由处理器识别与被识别为满足所述预定阈值的所述预定事件触发器关联的锁的调用路径捕捉的特定形式的计算机可执行程序代码;和用于使用调用路径捕捉的所述特定形式捕捉锁的调用路径信息的计算机可执行程序代码。
根据另一实施例,一种用于代码同步点的识别的设备包括:通信结构;存储器,连接到通信结构,其中所述存储器包含计算机可执行程序代码;通信单元,连接到通信结构;输入/输出单元,连接到通信结构;显示器,连接到通信结构;和处理器单元,连接到通信结构。处理器单元执行计算机可执行程序代码以指示所述设备:在与处理器关联的管理运行时环境中收集一组锁的锁定数据以形成一组竞争度量;使用一组预定事件触发器分析所述一组竞争度量;确定是否满足所述一组预定事件触发器中的一组预定阈值中的阈值;识别与被识别为满足所述预定阈值的所述预定事件触发器关联的锁的调用路径捕捉的特定形式;以及使用调用路径捕捉的所述特定形式捕捉锁的调用路径信息。
附图说明
为了更完整地理解本公开内容,现在参照下面结合附图和具体实施方式进行的简要描述,其中相同的参考标号代表相同的部分。
图1是用于本公开内容的各种实施例的示例性网络数据处理系统的方框图;
图2是用于本公开内容的各种实施例的示例性数据处理系统的方框图;
图3是用于本公开内容的各种实施例的同步点识别系统的方框图;
图4是用于本公开内容的各种实施例的图3的同步点识别系统的方框图;
图5是用于本公开内容的各种实施例的图3的同步点识别系统中的阈值配置的示意图;
图6是用于本公开内容的各种实施例的图5的同步点识别系统中的阈值配置的示意图;
图7是用于本公开内容的各种实施例的使用图3的同步点识别系统的处理的流程图;和
图8是用于本公开内容的各种实施例的使用图3的同步点识别系统的处理的流程图。
具体实施方式
虽然以下提供一个或多个实施例的说明性实现方式,但可使用任何数量的技术来实现所公开的系统和/或方法。本公开内容绝不应该局限于以下示出的说明性实现方式、附图和技术(包括这里示出和描述的示例性设计和实现方式),而是可在所附权利要求的范围及其等同物的全部范围内被修改。
术领域技术人员将会理解,本公开内容的各方面可被实现为系统、方法或计算机程序产品。因此,本公开内容的各方面可采用通常全部可在这里被称为“电路”、“模块”或“系统”的完全硬件实施例、完全软件实施例(包括固件、常驻软件、微码等)、或组合软件方面和硬件方面的实施例的形式。另外,本发明的各方面可采用实现于包含计算机可读程序代码的一个或多个计算机可读介质的计算机程序产品的形式。
可使用一个或多个计算机可读数据存储装置的任何组合。计算机可读数据存储装置可以是例如但不限于电子、磁、光学或半导体系统、设备或装置或者前述各项的任何合适的组合,但不包括传播介质。计算机可读数据存储装置的更具体的例子(非穷举列表)将会包括下述各项:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、便携式紧凑盘只读存储器(CDROM)、光学存储装置或磁存储装置或前述各项的任何合适的组合,但不包括传播介质。在这个文档的上下文中,计算机可读数据存储装置可以是能够存储由指令执行系统、设备或装置使用或结合指令执行系统、设备或装置使用的程序的任何有形装置。
可按照一种或多种编程语言的任何组合编写用于执行本公开内容的各方面的操作的计算机程序代码,所述编程语言包括:面向对象的编程语言,诸如Smalltalk、C++等;和常规过程化编程语言,诸如“C”编程语言或类似编程语言。Java和所有的基于Java的商标和标识是Oracle公司和/或它的分公司在美国、其它国家或二者的商标。程序代码可完全在用户的计算机上执行、部分在用户的计算机上执行、作为独立软件包执行、部分在用户的计算机上并且部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后面的情况中,远程计算机可通过包括局域网(LAN)或广域网(WAN)的任何类型的网络连接到用户的计算机,或者可(例如,使用因特网服务提供商(ISP)通过因特网)连接到外部计算机。
以下参照根据本发明的实施例的方法、设备、(系统)和计算机程序产品的流程图和/或方框图描述本公开内容的各方面。将会理解,流程图和/或方框图的每个方框以及流程图和/或方框图中的方框的组合可以由计算机程序指令来实现。
这些计算机程序指令可被提供给通用计算机、专用计算机或其它可编程数据处理设备的处理器,以产生一台机器,从而经由计算机或其它可编程数据处理设备的处理器执行的指令创建用于实现流程图和/或方框图的一个或多个方框中规定的功能/动作的装置。
这些计算机程序指令也可被存储在计算机可读数据存储装置中,该计算机可读数据存储装置可指示计算机或其它可编程数据处理设备按照特定方式工作,从而存储在计算机可读数据存储装置中的指令产生一种制造产品,所述制造产品包括实现流程图和/或方框图的一个或多个方框中规定的功能/动作的指令。
计算机程序指令也可被加载到计算机或其它可编程数据处理设备上,以使得在计算机或其它可编程设备上执行一系列的操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现流程图和/或方框图的一个或多个方框中规定的功能/动作的处理。
现在参照附图,特别地,参照图1-2,提供可实现说明性实施例的数据处理环境的示例性示图。应该理解,图1-2仅是示例性的,而非意图断言或暗示关于可实现不同实施例的环境的任何限制。可做出对所描述的环境的许多修改。
图1描述可实现说明性实施例的数据处理系统的网络的图形表示。网络数据处理系统100是可实现说明性实施例的计算机的网络。网络数据处理系统100包含网络102,网络102是用于提供在网络数据处理系统100内连接在一起的各种装置和计算机之间的通信链路的介质。网络102可包括连接,诸如有线、无线通信链路或光纤线缆。
在描述的例子中,服务器104和服务器106以及存储单元108连接到网络102。另外,客户机110、112和114连接到网络102。客户机110、112和114可以是例如个人计算机或网络计算机。在描述的例子中,服务器104将数据(诸如,引导文件、操作系统镜像、同步点识别系统116和应用)提供给客户机110、112和114。在这个例子中,客户机110、112和114是服务器104的客户机。网络数据处理系统100可包括未示出的另外的服务器、客户机和其它装置。同步点识别系统116是使用许多技术选择性地捕捉与热门锁的代码同步点关联的调用路径信息的方法的实施例。
在描述的例子中,网络数据处理系统100是具有网络102的因特网,因特网代表使用传输控制协议/因特网协议(TCP/IP)的协议组彼此通信的全世界的网络和网关的集合。在因特网的中心是主节点或主机计算机之间的高速数据通信线路的骨干网,所述主节点或主机计算机包括对数据和消息进行路由的成千上万的商业、政府、教育和其它计算机系统。当然,网络数据处理系统100也可被实现为许多不同类型的网络,诸如例如内联网、局域网(LAN)或广域网(WAN)。图1旨在用作例子,而非用作对不同说明性实施例的架构限制。
参照图2,提供用于本公开内容的各种实施例的示例性数据处理系统的方框图。在这个说明性例子中,数据处理系统200包括通信结构202,通信结构202提供处理器单元204、存储器206、永久贮存器208、通信单元210、输入/输出(I/O)单元212和显示器214之间的通信。
处理器单元204用于执行可被加载到存储器206中的软件的指令。根据特定实现方式,处理器单元204可以是一个或多个处理器的集合,或者可以是多处理器核。另外,可使用一个或多个不同处理器系统实现处理器单元204,其中主要处理器与辅助处理器存在于单个芯片上。作为另一个说明性例子,处理器单元204可以是包含相同类型的多个处理器的对称多处理器系统。
存储器206和永久贮存器208是存储装置216的例子。存储装置是能够暂时地和/或永久地存储信息(诸如,例如非限制性地,数据、具有函数形式的程序代码和/或其它合适的信息)的任何硬件。在这些例子中,存储器206可以是例如随机存取存储器或任何其它合适的易失性或非易失性存储装置。根据特定实现方式,永久贮存器208可采用各种形式。例如,永久贮存器208可包含一个或多个部件或装置。例如,永久贮存器208可以是硬盘驱动器、闪存、可重写光盘、可重写磁带或以上各项的某个组合。由永久贮存器208使用的介质也可以是可移动的。例如,可移动硬盘驱动器可被用于永久贮存器208。
在这些例子中,通信单元210提供与其它数据处理系统或装置的通信。在这些例子中,通信单元210是网络接口卡。通信单元210可通过使用物理通信链路或无线通信链路或二者提供通信。
输入/输出单元212允许利用可连接到数据处理系统200的其它装置输入和输出数据。例如,输入/输出单元212可通过键盘、鼠标和/或某个其它合适的输入装置提供用于用户输入的连接。另外,输入/输出单元212可将输出发送给打印机。显示器214提供用于将信息显示给用户的机构。
用于操作系统、图1的同步点识别系统116、应用和/或程序的指令可位于存储装置216中,存储装置216通过通信结构202与处理器单元204通信。在这些说明性例子中,指令以函数形式位于永久贮存器208上。这些指令可被加载到存储器206中以由处理器单元204执行。不同实施例的处理可由处理器单元204使用计算机实现的指令执行,所述计算机实现的指令可位于存储器(诸如,存储器206)中。
这些指令被称为可由处理器单元204中的处理器读取并且执行的程序代码、计算机可用程序代码或计算机可读程序代码。不同实施例中的程序代码可被实现在不同的物理或有形计算机可读存储介质(诸如,存储器206或永久贮存器208)上。
程序代码218以函数形式位于计算机可读介质220上,在一种形式下,计算机可读介质220选择性地是可移动的并且可被加载到或传送给数据处理系统200以由处理器单元204执行。在这些例子中,程序代码218和计算机可读介质220形成计算机程序产品222。在一个例子中,计算机可读介质220可具有有形形式,诸如例如光盘或磁盘,所述光盘或磁盘被插入或被放置在作为永久贮存器208的一部分的驱动器或其它装置中以传送到存储装置(诸如,作为永久贮存器208的一部分的硬盘驱动器)上。在有形形式下,计算机可读介质220也可采用连接到数据处理系统200的永久贮存器的形式(诸如,硬盘驱动器、拇指驱动器或闪存)。计算机可读介质220的有形形式也被称为计算机可记录存储介质或计算机可读数据存储装置224。在一些实例中,计算机可读介质220可以不是可移动的。
替代地,在这个例子中,可通过与通信单元210的通信链路和/或通过与输入/输出单元212的连接将包含图1的同步点识别系统116的表示的程序代码218从计算机可读介质220传送给数据处理系统200。在说明性例子中,通信链路和/或连接可以是物理的或无线的。
在一些说明性实施例中,可经网络将程序代码218从另一装置或数据处理系统下载到永久贮存器208以在数据处理系统200内使用。例如,可经网络将存储在服务器数据处理系统中的计算机可读数据存储装置中的程序代码从服务器下载到数据处理系统200。计算机可读介质220的传播形式被称为计算机可读信号介质226。提供程序代码218的数据处理系统可以是服务器计算机、客户机计算机或能够存储和发送程序代码218的某个其它装置。
使用图2的数据处理系统200作为例子,提供用于代码同步点的识别的计算机实现的处理。处理器单元204在与处理器关联的管理运行时环境中收集一组锁的锁定数据以形成一组竞争度量,并且由处理器使用一组预定事件触发器分析所述一组竞争度量。处理器单元204确定是否满足所述一组预定事件触发器中的一组预定阈值中的阈值,并且识别与被识别为满足所述预定阈值的预定事件触发器关联的锁的调用路径捕捉的特定形式。处理器单元204使用调用路径捕捉的所述特定形式捕捉锁的调用路径信息。
存在用于每次获取锁时容易地捕捉Java堆栈轨迹并且因此捕捉应用代码中的相应位置的工具。虽然数据的捕捉可以提供为识别热门锁的代码同步点所需的信息,但产生和捕捉堆栈轨迹的开销通常将会严重地影响关联的应用的性能。该影响将可能会达到这种程度:应用的行为在很大程度上失真,从而数据将不再代表有用的运行。因此,该开销将会在应用在生产或应用的性能不能降低超过5-10%的任何情况下运行的同时妨碍数据的捕捉。
类似地,在采样基础上捕捉JVM内的所有调用线程/调用路径将能够实现最频繁的调用线程/调用路径的识别,并且能够映射到由JVM报告的最热门的锁。尽管这将提供为识别热门锁的代码同步点所需的信息,但即使在采样基础上,产生和捕捉调用线程/调用路径的开销也已知为可能在如下程度上严重地影响应用的性能:应用的行为在很大程度上失真,从而数据将不再代表有用的运行。该开销也将会在应用在生产或应用的性能不能降低超过5-10%的任何情况下运行的同时妨碍数据的捕捉。
例如,JPROF(可从http://perfinsp.sourceforge.net/jprof.html获得)是与JVM工具接口(JVMTI)或JVM性能分析器(profiler)接口(JVMPI)的事件一起使用的Java性能分析(profiling)代理。JPROF捕捉一些调用路径信息。该工具的文档清楚地强调该工具可以对应用性能产生的负面影响,包括应用的意外改变。例如,因为该构造引起路径长度增加,所以可能发生高速缓存行为的变化,等待时间可能增加,并且后台任务的行为可能改变。
所公开的方法的实施例使用许多技术选择性地捕捉与热门锁的代码同步点关联的调用路径信息。如实施例中所述的技术通常能够将用于数据捕捉的开销减少至更加可接受的水平,并且当需要时能够放弃一些数据以便进一步减少开销。另外,所公开的方法的实施例将捕捉的数据限制于热门锁的数据,由此使必须收集的数据相对于性能保持在可接受的水平。使用该方法的实施例,收集的信息识别对热门锁做出贡献的特定调用路径,并且将收集的数据限制于热门锁,由此使收集的数据保持在可管理的量。所公开的方法的实施例还去除应用中的最重要的路径的数据捕捉的开销。
在一个实施例中,用于虚拟机内的热门锁的代码同步点的识别的计算机实现的处理包括下述步骤:增强虚拟机以在获取/释放锁时收集数据,从而识别哪个锁或哪些锁热门。收集的数据包括这样的数据,该数据包括:因为锁被另一线程占用而尝试和等待获取该锁的线程的数量;锁被占用的总时间的百分比,其中收集的数据被称为竞争线程度量并且是针对对象监视器、在虚拟机内使用的锁和java.util.concurrent锁定构造中的一个或多个而被收集的,并且其中虚拟机是Java虚拟机。
该计算机实现的处理还包括:构造事件触发器以使用竞争线程度量来设置阈值,从而当达到阈值时,启动特定锁的调用路径信息的收集。收集的启动能够在合适的时间捕捉调用路径信息以报告观测到的唯一调用路径以及唯一调用路径的相对频率,其中捕捉调用路径信息包括仅在锁已被释放时捕捉调用路径,由此调用路径信息的捕捉不耽搁其它线程获取该锁,以及在采样基础上收集调用路径信息并且每次在竞争线程度量中达到新的阈值时收集调用路径信息。
参照图3,提供用于本公开内容的各种实施例的同步点识别系统的方框图。同步点识别系统300包括许多部件,所述许多部件能够共同实现用于应用中的同步点的识别的调用路径信息的选择性收集。这些部件利用基础数据处理系统(诸如,图1的网络数据处理100的服务器104或图2的数据处理系统200)的支持。
同步点识别系统300的部件包括许多部件,所述许多部件包括增强管理运行时302,在当前例子中,增强管理运行时302是Java虚拟机。然而,所公开的方法的实施例不必局限于该例子的实现方式,并且也可被容易地用在其它环境中。当前例子中的增强管理运行时302是具有在获取/释放锁时收集数据的能力的增强虚拟机。因此,所公开的同步点识别系统300的实施例提供用于识别虚拟机内的特别地热门锁的代码同步点的能力。
锁定数据收集器304提供增强虚拟机在锁被获取/释放时收集用于识别哪些锁“热门”的数据的能力,该数据包括:因为锁被另一线程占用而尝试和等待获取该锁的线程的数量;和锁被占用的总时间的百分比。收集的数据被称为竞争线程度量,并且被保存在锁定数据收集数据结构306中。针对对象监视器、在虚拟机内使用的锁和java.util.concurrent(特别地,当使用JVM时)锁定构造中的一个或多个收集数据。
锁定数据收集器304结合增强管理运行时302的其它部件提供用于收集竞争信息(在当前例子中,针对Java锁收集竞争信息)的高效改进。所公开的方法基于用于锁性能监测的已有技术,并且提供具有用于减少性能监测对应用性能的影响的机构的形式的增强。
锁定数据收集器304包括用于高效地收集锁定信息从而可以例如在JVM中默认地实现收集的以前技术。例如,增加使用监视器收集的数据,包括被表示为100*SLOW/gets(缓慢/获取)的%miss(失败百分比)、代表非递归锁条目的gets(获取)的数量、代表前往操作系统等待的gets(获取)的数量的slow(缓慢)、代表线程前往操作系统等待的时间的百分比的%slow(缓慢百分比)、代表锁被占用的平均时间的hold-time(占用时间)、和被表示为100*Hold-time/Total-time(占用时间/总时间)的%utilization(利用百分比)。锁定数据收集器304收集数据,从而仅计算竞争的情况(例如,报告的get(获取)总是被竞争)并且使用采样以使得仅在采样基础上捕捉数据。
当根据所公开的方法进行构造时,事件触发器308提供使用竞争线程度量设置阈值的能力,从而当达到阈值时,启动特定锁的调用路径信息的收集。因此,事件触发器的构造提供针对执行线程调用路径和关联的锁何时收集以及收集什么的选择性的动态的控制。事件触发器308能够使用锁定数据收集数据结构306中的数据的竞争线程度量来设置阈值,从而当达到特定阈值或阈值的组合时,启动调用路径数据收集器310以选择性地收集该特定锁的调用路径信息。
事件触发器308引入触发器,从而当达到预定阈值时,启动针对锁的调用路径信息的收集。所公开的方法能够在阈值的达到触发了调用路径信息的收集时根据需要针对所识别的度量gets(获取)、slow(缓慢)、%slow(缓慢百分比)和其它度量来设置预定阈值。通过使用定义的触发器,仅收集根据某个量度较为热门的锁的数据。收集的选择性启动和数据的选择性收集限制了捕捉调用路径数据的开销以及收集的数据的量。
调用路径数据收集器310提供这样的能力:响应于事件触发器308的控制在合适的时间捕捉调用路径信息,以报告观测到的唯一调用路径以及唯一调用路径的相对频率。捕捉调用路径信息包括:仅在锁已被释放时捕捉调用路径,以使得调用路径信息的捕捉不耽搁其它线程获取该锁,在采样基础上收集调用路径信息,并且每次在竞争线程度量中达到新的阈值时收集调用路径信息。
调用路径数据收集器310提供高效地捕捉调用路径数据的能力。调用路径数据收集数据结构312存储由调用路径数据收集器310捕捉的调用路径信息。在合适的时间捕捉调用路径信息能够报告观测到的唯一调用路径以及这种调用路径的相对频率。调用路径数据收集器310包括用于减少捕捉调用路径信息的开销的技术,该技术包括:仅在锁已被释放时捕捉调用路径,以使得调用路径信息的捕捉不耽搁其它线程获取该锁,使用采样技术收集调用路径信息,并且每次在竞争线程度量中达到新的阈值时收集调用路径信息。
参照图4,提供用于本公开内容的各种实施例的图3的同步点识别系统的方框图。关系400是图3的同步点识别系统300内的部件关系和数据流的例子。
关系400提供图3的同步点识别系统300的说明性实施例的部件之间的交互关系的视图。锁定数据收集402执行收集操作以搜集与特定应用或一组应用的锁和锁定活动关联的预定信息。收集的信息的子集形成竞争度量404。在锁被获取/释放时收集的用于识别哪些锁“热门”的数据(该数据包括:因为锁被另一线程占用而尝试和等待获取该锁的线程的数量;和锁被占用的总时间的百分比)包括感兴趣的并且被称为竞争度量的信息,因为针对其获取信息的锁处于竞争中。
考虑事件触发器阈值406的竞争度量404的分析确定是否启动一个或多个锁的调用路径数据收集408。响应于确定启动调用路径数据收集,执行线程标记410和锁标记412之一的技术。线程标记410和锁标记412中的每一个产生具有调用路径数据捕捉414的形式的调用路径数据,该调用路径数据被存储以用于随后的分析和使用。
参照图5,提供用于本公开内容的各种实施例的图3的同步点识别系统中的阈值配置的示意图。阈值配置500提供用于指定用于控制调用路径信息数据收集的激活的度量准则的机制。
在配置500的例子中,三个可能的准则是gets(获取)的数量502、slows(缓慢)的数量504和slow(缓慢)百分比506。除了提供的例子之外,可使用与锁度量关联的其它准则。gets(获取)的数量502代表非递归锁条目,slows(缓慢)的数量504代表前往操作系统等待的gets(获取)的数量,而slow(缓慢)百分比506代表线程前往操作系统等待的时间的百分比。
与相应标度关联的垂直箭头指示阈值。阈值508代表从0到N的范围中的gets(获取)的数量的特定值。当使用图形界面表示给用户时,阈值508可被以滑动方式操纵以增加或减小阈值的值。阈值510代表从0到N的范围中的slows(缓慢)的数量的特定值,并且被以与阈值508的方式类似的方式操纵。阈值512代表从0到100%的范围中的slow(缓慢)百分比的特定值。
根据实现方式的需要,更少或更多的准则和关联的阈值可被用于控制锁的数据收集的激活。
参照图6,提供用于本公开内容的各种实施例的图5的同步点识别系统中的阈值配置的示意图。阈值配置600提供使用多个具有特定度量准则的锁来控制调用路径信息数据收集的激活的例子。
在当前例子中,定义应用内的活动锁的阈值,其中最左边的线是gets(获取)的数量,中间的线是slows(缓慢)的数量,而最右边的线是slow(缓慢)百分比。因此,锁L1至L4中的每一个具有三个关联的垂直线以指示各阈值中的每一个。
顶部水平条代表slow%(缓慢百分比)阈值602。中间水平条代表gets(获取)阈值604。slows(缓慢)阈值606由底部水平条代表。
第一锁L1 608具有一组关联的三个垂直条或线。最左边的垂直线指示超过gets(获取)阈值。中间垂直线指示超过slows(缓慢)阈值。最右边的垂直线指示未超过slow%(缓慢百分比)阈值。
第二锁L2 610也具有一组关联的三个垂直条或线。这组的所有三个垂直线指示未超过测量的阈值。
第三锁L3 612也具有一组关联的三个垂直条或线。最左边的垂直线指示未超过gets(获取)阈值。中间垂直线指示未超过slows(缓慢)阈值。这组中的最右边的垂直线指示超过slow%(缓慢百分比)阈值。
第四锁L4 614也具有一组关联的三个垂直条或线。所有三个垂直线低于相应的阈值,并且指示未超过测量的阈值。
因此,能够基于超过锁L1 608的Gets(获取)阈值和Slows(缓慢)阈值实现针对锁L1 608的调用路径信息的对应捕捉,并且基于超过Slow%(缓慢百分比)阈值实现针对锁L3 612的调用路径信息的对应捕捉。
这些例子仅用于说明。建立和使用阈值可应用于收集的任何锁数据。例如,感兴趣的特定阈值可以是miss%(失败百分比)阈值,因为这个度量通常是激烈竞争的锁的指示器。
参照图7,提供用于本公开内容的各种实施例的使用图3的同步点识别系统的处理的流程图。处理700提供使用图3的同步点识别系统300的处理的实施例的例子。
处理700开始(步骤702),并且在管理运行时环境中收集一组锁的锁定数据以形成一组竞争度量(步骤704)。数据处理系统的一个或多个处理器执行指定的收集、分析、确定、识别和捕捉的动作。收集的锁定数据形成一组被称为竞争度量的数据,因为该信息通常与来自多个线程的处于竞争中的锁关联。
处理700使用一组预定事件触发器分析所述一组竞争度量(步骤706)。所述一组事件触发器包括与相应锁的活动数据关联的一个或多个预定属性。例如,如前面所定义的,锁定数据包括使用监视器收集的信息,包括被表示为100*SLOW/gets(缓慢/获取)的%miss(失败百分比)、代表非递归锁条目的gets(获取)的数量、代表前往操作系统等待的gets(获取)的数量的slow(缓慢)、代表线程前往操作系统等待的时间的百分比的%slow(缓慢百分比)、代表锁被占用的平均时间的hold-time(占用时间)、和被表示为100*Hold-time/Total-time(占用时间/总时间)的%utilization(利用百分比)。
处理700确定是否满足所述一组预定事件触发器中的一组预定阈值中的阈值(步骤708)。该确定基于对一组锁中的一个或多个锁的所述一组竞争度量执行的分析。响应于确定不满足所述一组预定事件触发器中的一组预定阈值中的阈值,处理700循环回去以如以前一样执行步骤704。
响应于确定满足所述一组预定事件触发器中的一组预定阈值中的阈值,处理700识别与被识别为满足所述预定阈值的所述预定事件触发器关联的锁的调用路径捕捉的特定形式(步骤710)。处理700使用调用路径捕捉的所述特定形式捕捉所述一个或多个锁的调用路径信息(步骤712),其后结束(步骤714)。
参照图8,提供用于本公开内容的各种实施例的使用图3的同步点识别系统的处理的流程图。处理800提供使用图3的同步点识别系统300的处理的实施例的另一个例子。
处理800开始并且从一组技术中选择锁定数据收集技术,所述一组技术包括对象监视器、管理运行时内的锁和java.util.concurrent锁定构造(在JVM环境中)(步骤804)。可在数据处理系统中或在许多系统之间使用超过一种收集锁定数据的方法。假如该信息以有用的形式存在,则使用的方法并不重要。
处理800在管理运行时环境中收集一组锁的锁定数据以形成一组竞争度量(步骤806)。竞争度量是代表感兴趣的锁定活动的数据。选择的收集机制的输出包括被称为竞争度量的一组数据,因为该信息通常与由访问一个或多个资源的一个或多个线程引起的锁竞争活动关联,定义可将访问描述为同时发生或针对特定时间间隔顺序地发生的模式。
处理800定义代表环境的一组事件触发器以选择性地控制调用路径信息捕捉(步骤808)。事件触发器特定于预定度量并且具有关联的阈值。在满足阈值时,发生预定动作。在本公开内容中,满足特定竞争度量的阈值的预定条件引起调用路径信息的捕捉。
处理800使用一组预定定义的事件触发器分析一组竞争度量(步骤810)。分析包括特定锁的一组特定竞争度量的值的合并。可随后在竞争度量和关联的阈值的各种组合中处理数据的收集以控制随后的处理。
处理800确定是否满足所述一组预定事件触发器中的一组预定阈值中的阈值(步骤812)。该确定基于对一组锁中的一个或多个锁的所述一组竞争度量执行的分析。响应于确定不满足所述一组预定事件触发器中的一组预定阈值中的阈值,处理800循环回去以如以前一样执行步骤806。
响应于确定满足所述一组预定事件触发器中的一组预定阈值中的阈值,处理800识别与被识别为满足所述预定阈值的所述预定事件触发器关联的锁的调用路径捕捉的特定形式(步骤814)。
响应于确定按照事件触发器捕捉调用路径信息,另外的要求是高效地捕捉为识别唯一调用路径和各相对频率所需的调用路径信息。对于请求获取锁的线程以及在请求时占用该锁的线程,调用路径信息都是令人感兴趣的。因此,在第一情况中,针对尝试获取锁的线程捕捉调用路径信息,因为线程可频繁地获取锁,但仅短时间占用锁。当尝试获取锁时也在第二情况中针对占用锁的线程捕捉调用路径信息,因为虽然可较少地获取锁,但可长时间占用锁。在第三情况中,针对第一情况和第二情况二者收集调用路径信息。
在第一情况中,当需要在线程尝试获取锁时基于描述的优化使用触发器事件阈值和其它检查来捕捉数据时,线程标记自己。在第二情况中,线程标记锁,从而释放锁的线程被引导以捕捉调用堆栈作为释放锁的一部分。
虽然简单易懂,但关于线程的全调用路径信息的捕捉很昂贵。一旦已能够执行调用路径捕捉,在每个实例中捕捉全调用路径通常带来太多开销,并且不利地影响应用性能特性,可能使收集的数据变为无效。因此,下面的技术中的一个或多个技术被用于减少数据收集开销并且能够使捕捉需要的调用路径变得可行。
处理800执行下述操作之一:当锁被释放时捕捉锁的调用路径信息(步骤816);使用采样技术捕捉锁的调用路径信息(步骤818);以及每次达到新的锁阈值时捕捉锁的调用路径信息(步骤820)。如步骤816中一样当锁被释放时捕捉锁的调用路径信息是推迟捕捉的形式,其延迟调用路径信息的捕捉直至针对其启动捕捉的线程不再占用锁之后。这种延迟或推迟确保等待同一个锁的其它线程不受调用路径信息的捕捉的影响。
如步骤818中一样使用采样技术捕捉锁的调用路径信息使用采样在预定基础上捕捉调用路径信息。采样减少需要的工作以及收集的实例。例如,使用采样按照获取锁的1/N次收集或捕捉堆栈,而非每次收集或捕捉堆栈。因为锁的获取/释放可以经常定期发生,所以选择固定采样频率可能歪曲相对频率,因此既支持固定类型的采样又支持不规则类型的采样。不规则采样可基于伪随机数或序列(比如,斐波纳契)的子集。考虑到对热门锁的特定兴趣,随着时间过去,采样应该捕捉调用路径,并且特别地将首先捕捉最感兴趣的调用路径(意味着最频繁地发生的调用路径)。
除了用于实现调用路径捕捉的阈值,还支持关于针对锁收集的信息的被称为迭代阈值的额外阈值的设置。例如,仅在获取锁之后以及在每个预定数量的N个slows(缓慢)或N个gets(获取)之后,执行调用路径信息的捕捉。在另一例子中,采样可更加基于时间而非基于计数器,因此当事件在给定时间段中发生超过一次时,针对采样计数,事件仅计数1次,然后在N个发生事件的时间段之后,动作被触发。与前面描述的采样技术一样,既支持规则增量又支持不规则增量,以避免歪曲基于锁使用中的规则模式的结果。
如步骤818中一样使用采样技术捕捉锁的调用路径信息使用已经替代数据捕捉的能够利用优化的迭代阈值,因为仅当收集新的锁定数据时需要进行检查。考虑到对热门锁的兴趣,随着时间过去,将首先发生调用路径的捕捉,特别是最感兴趣的调用路径的捕捉,最感兴趣的调用路径是基于特定阈值最频繁地发生的调用路径。
处理800使用调用路径收集的所述特定形式捕捉锁的调用路径信息(步骤822),处理800在其后结束。每次仅一个特定捕捉方法被用于捕捉特定锁的调用路径信息。然而,不同方法可被同时用于同一个锁的不同度量。
因此,在说明性实施例中,提供一种用于代码同步点的识别的计算机实现的方法。所述计算机实现的方法包括:由处理器在与处理器关联的管理运行时环境中收集一组锁的锁定数据以形成一组竞争度量;由处理器使用一组预定事件触发器分析所述一组竞争度量;由处理器确定是否满足所述一组预定事件触发器中的一组预定阈值中的阈值;由处理器识别与被识别为满足所述预定阈值的所述预定事件触发器关联的锁的调用路径捕捉的特定形式;以及使用调用路径捕捉的所述特定形式捕捉锁的调用路径信息。
附图中的流程图和方框图表示根据本发明的各种实施例的系统、方法和计算机程序产品的可能的实现方式的架构、功能和操作。在这个方面,流程图或方框图中的每个方框可代表包括用于实现规定的逻辑功能的一个或多个可执行指令的代码的模块、段或一部分。还应该注意的是,在一些替代实现方式中,方框中标注的功能可能不按附图中标注的次序执行。例如,连续地示出的两个方框实际上可以基本并行地执行,或者这些块有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以下权利要求中的所有装置或步骤以及功能元件的相应结构、材料、动作和等同物意在包括用于结合具体要求保护的其它要求保护的元件执行功能的任何结构、材料或动作。本发明的描述用于说明和描述的目的,而非意在是穷尽的或者局限于所公开的形式的本发明。在不脱离本发明的范围和精神的情况下,对于本领域普通技术人员而言,许多修改和变化将会是清楚的。选择并描述实施例以便最好地解释本发明的原理和实际应用,并且使本领域的其他普通技术人员能够理解本发明的具有适合设想的特定用途的各种修改的各种实施例。
本发明能够采用完全硬件实施例、完全软件实施例、或者既包含硬件元件又包含软件元件的实施例的形式。在优选实施例中,本发明以软件来实现,所述软件包括但不限于固件、常驻软件、微码和可由本领域技术人员识别的其它软件介质。
很重要地,需要注意的是,尽管已在全功能数据处理系统的情况下描述了本发明,但本领域普通技术人员将会理解,本发明的处理能够以计算机可读数据存储装置的形式分布,所述计算机可读数据存储装置具有以各种形式存储在它上面的计算机可执行指令。计算机可读数据存储装置的例子包括可记录类型介质,诸如软盘、硬盘驱动器、RAM、CD-ROM、DVD-ROM。计算机可执行指令可采用编码格式的形式,所述编码格式被解码以实际用在特定数据处理系统中。
适合存储和/或执行包括程序代码的计算机可执行指令的数据处理系统将包括直接或通过系统总线间接耦合到存储元件的一个或多个处理器。存储元件可以包括:在程序代码的实际执行期间采用的本地存储器;大容量贮存器;和高速缓存,提供至少某个程序代码的临时存储以便减少在执行期间必须从大容量贮存器检索代码的次数。
输入/输出或I/O装置(包括,但不限于,键盘、显示器、指点装置等)可以直接地或通过中间I/O控制器耦合到该系统。
网络适配器也可耦合到该系统,以便使数据处理系统能够通过中间私有网络或公共网络耦合到其它数据处理系统或远程打印机或存储装置。调制解调器、线缆调制解调器和以太网卡仅是一些当前可用的类型的网络适配器。

Claims (14)

1.一种用于代码同步点的识别的计算机实现的方法,所述计算机实现的方法包括:
由处理器在与处理器关联的管理运行时环境中收集一组锁的锁定数据以形成一组竞争度量;
由处理器使用一组预定事件触发器分析所述一组竞争度量;
由处理器确定是否满足所述一组预定事件触发器中的一组预定阈值中的阈值;
由处理器识别与被识别为满足所述预定阈值的所述预定事件触发器关联的锁的调用路径捕捉的特定形式;以及
使用调用路径捕捉的所述特定形式捕捉锁的调用路径信息。
2.如权利要求1所述的计算机实现的方法,其中由处理器在与处理器关联的管理运行时环境中收集一组锁的锁定数据以形成一组竞争度量还包括:
从包括对象监视器、管理运行时内的锁和java.util.concurrent锁定构造的一组技术中选择锁定数据收集技术,其中使用Java环境。
3.如权利要求1所述的计算机实现的方法,其中由处理器使用一组预定事件触发器分析所述一组竞争度量还包括:
定义代表环境的一组事件触发器以选择性地控制调用路径信息捕捉。
4.如权利要求1所述的计算机实现的方法,其中由处理器识别与被识别为满足所述预定阈值的所述预定事件触发器关联的锁的调用路径捕捉的特定形式还包括:
从包括下述各项的组中选择调用路径捕捉的所述特定形式:当锁被释放时捕捉锁的调用路径信息,使用采样技术捕捉锁的调用路径信息,以及每次达到新的锁阈值时捕捉锁的调用路径信息。
5.如权利要求1所述的计算机实现的方法,其中使用调用路径捕捉的所述特定形式捕捉锁的调用路径信息还包括:
使用采样技术捕捉锁的调用路径信息以在预定基础上捕捉调用路径信息,其中采样间隔是固定采样频率和不规则类型的采样之一,其中不规则类型的采样基于伪随机数和包括斐波纳契序列的序列的子集之一。
6.如权利要求1所述的计算机实现的方法,其中由处理器使用一组预定事件触发器分析所述一组竞争度量还包括:
设置关于针对锁收集的信息的被称为迭代阈值的额外阈值。
7.如权利要求1所述的计算机实现的方法,其中使用调用路径捕捉的所述特定形式捕捉锁的调用路径信息还包括:
在第一情况中,针对尝试获取锁的线程捕捉调用路径信息,其中在第一情况中,当需要在该线程尝试获取锁时使用触发器事件阈值捕捉数据时,该线程标记自己;
在第二情况中,当尝试获取锁时,针对占用锁的线程捕捉调用路径信息,其中该线程标记锁,使得释放锁的线程被引导以捕捉调用堆栈作为释放锁的一部分;以及
在第三情况中,针对第一情况和第二情况二者捕捉调用路径信息。
8.一种用于代码同步点的识别的设备,所述设备包括:
通信结构;
存储器,连接到通信结构,其中所述存储器包含计算机可执行程序代码;
通信单元,连接到通信结构;
输入/输出单元,连接到通信结构;
显示器,连接到通信结构;和
处理器单元,连接到通信结构,其中处理器单元执行计算机可执行程序代码以指示所述设备:
在与处理器关联的管理运行时环境中收集一组锁的锁定数据以形成一组竞争度量;
使用一组预定事件触发器分析所述一组竞争度量;
确定是否满足所述一组预定事件触发器中的一组预定阈值中的阈值;
识别与被识别为满足所述预定阈值的所述预定事件触发器关联的锁的调用路径捕捉的特定形式;以及
使用调用路径捕捉的所述特定形式捕捉锁的调用路径信息。
9.如权利要求8所述的设备,其中所述处理器单元执行计算机可执行程序代码以在与处理器关联的管理运行时环境中收集一组锁的锁定数据以形成一组竞争度量,还指示所述设备:
从包括对象监视器、管理运行时内的锁和java.util.concurrent锁定构造的一组技术中选择锁定数据收集技术,其中使用Java环境。
10.如权利要求8所述的设备,其中所述处理器单元执行计算机可执行程序代码以使用一组预定事件触发器分析所述一组竞争度量,还指示所述设备:
定义代表环境的一组事件触发器以选择性地控制调用路径信息捕捉。
11.如权利要求8所述的设备,其中所述处理器单元执行计算机可执行程序代码以识别与被识别为满足所述预定阈值的所述预定事件触发器关联的锁的调用路径捕捉的特定形式,还指示所述设备:
从包括下述各项的组中选择调用路径捕捉的所述特定形式:当锁被释放时捕捉锁的调用路径信息,使用采样技术捕捉锁的调用路径信息,以及每次达到新的锁阈值时捕捉锁的调用路径信息。
12.如权利要求8所述的设备,其中所述处理器单元执行计算机可执行程序代码以使用调用路径捕捉的所述特定形式捕捉锁的调用路径信息,还指示所述设备:
使用采样技术捕捉锁的调用路径信息以在预定基础上捕捉调用路径信息,其中采样间隔是固定采样频率和不规则类型的采样之一,其中不规则类型的采样基于伪随机数和包括斐波纳契序列的序列的子集之一。
13.如权利要求8所述的设备,其中所述处理器单元执行计算机可执行程序代码以使用调用路径捕捉的所述特定形式捕捉锁的调用路径信息,还指示所述设备:
在第一情况中,针对尝试获取锁的线程捕捉调用路径信息,其中在第一情况中,当需要在该线程尝试获取锁时使用触发器事件阈值捕捉数据时,该线程标记自己;
在第二情况中,当尝试获取锁时,针对占用锁的线程捕捉调用路径信息,其中该线程标记锁,使得释放锁的线程被引导以捕捉调用堆栈作为释放锁的一部分;以及
在第三情况中,针对第一情况和第二情况二者捕捉调用路径信息。
14.如权利要求8所述的设备,其中所述处理器单元执行计算机可执行程序代码以使用一组预定事件触发器分析所述一组竞争度量,还指示所述设备:
设置关于针对锁收集的信息的被称为迭代阈值的额外阈值。
CN201410571317.0A 2013-10-24 2014-10-23 用于代码同步点的识别的方法和系统 Expired - Fee Related CN104572309B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CA2831134A CA2831134A1 (en) 2013-10-24 2013-10-24 Identification of code synchronization points
CA2831134 2013-10-24

Publications (2)

Publication Number Publication Date
CN104572309A true CN104572309A (zh) 2015-04-29
CN104572309B CN104572309B (zh) 2018-01-23

Family

ID=52996985

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410571317.0A Expired - Fee Related CN104572309B (zh) 2013-10-24 2014-10-23 用于代码同步点的识别的方法和系统

Country Status (3)

Country Link
US (1) US9317262B2 (zh)
CN (1) CN104572309B (zh)
CA (1) CA2831134A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2831134A1 (en) * 2013-10-24 2015-04-24 Ibm Canada Limited - Ibm Canada Limitee Identification of code synchronization points
US11080264B1 (en) * 2020-10-02 2021-08-03 ActionIQ, Inc. Mutable data ingestion and storage

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100229160A1 (en) * 2009-03-05 2010-09-09 International Business Machines Corporation Converting program code of a multi-threaded program into program code causing less lock contentions
US20110202907A1 (en) * 2010-02-18 2011-08-18 Oracle International Corporation Method and system for optimizing code for a multi-threaded application
CN102292709A (zh) * 2009-04-28 2011-12-21 国际商业机器公司 用于将在多线程上工作的程序的程序代码变换为锁冲突少的程序代码的方法及其计算机程序和计算机系统
US20120311307A1 (en) * 2011-05-31 2012-12-06 Chynoweth Michael W Method And Apparatus For Obtaining A Call Stack To An Event Of Interest And Analyzing The Same
CN103339606A (zh) * 2011-01-10 2013-10-02 国际商业机器公司 用于并发软件环境的活动记录系统

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6185601B1 (en) * 1996-08-02 2001-02-06 Hewlett-Packard Company Dynamic load balancing of a network of client and server computers
US6151688A (en) * 1997-02-21 2000-11-21 Novell, Inc. Resource management in a clustered computer system
CA2222389A1 (en) * 1997-11-27 1999-05-27 Ibm Canada Limited-Ibm Canada Limitee A mechanism for managing the locking and unlocking of objects in java
US7159220B2 (en) * 2001-09-28 2007-01-02 Intel Corporation Flexible acceleration of java thread synchronization on multiprocessor computers
US7093230B2 (en) * 2002-07-24 2006-08-15 Sun Microsystems, Inc. Lock management thread pools for distributed data systems
US7512950B1 (en) * 2003-08-14 2009-03-31 Sun Microsystems, Inc. Barrier synchronization object for multi-threaded applications
US7610585B2 (en) * 2004-06-03 2009-10-27 Intel Corporation Thread synchronization methods and apparatus for managed run-time environments
US7797585B1 (en) * 2005-05-09 2010-09-14 Emc Corporation System and method for handling trace data for analysis
US20070271450A1 (en) * 2006-05-17 2007-11-22 Doshi Kshitij A Method and system for enhanced thread synchronization and coordination
US8069445B2 (en) * 2006-06-30 2011-11-29 Intel Corporation Method and apparatus for detecting lock acquisition hierarchy violations and unsafe lock releases
US8230409B2 (en) * 2007-09-28 2012-07-24 International Business Machines Corporation Code optimization when using multiple reader locks and a non-reader lock
US8499287B2 (en) * 2008-06-23 2013-07-30 Microsoft Corporation Analysis of thread synchronization events
GB2466976B (en) * 2009-01-16 2011-04-27 Springsource Ltd Controlling access to a shared resourse in a computer system
CN101937365B (zh) * 2009-06-30 2013-05-15 国际商业机器公司 并行程序的死锁检测方法和系统
US9052967B2 (en) * 2010-07-30 2015-06-09 Vmware, Inc. Detecting resource deadlocks in multi-threaded programs by controlling scheduling in replay
US8538897B2 (en) * 2010-12-03 2013-09-17 Microsoft Corporation Cross-trace scalable issue detection and clustering
US8869127B2 (en) * 2011-01-03 2014-10-21 International Business Machines Corporation Refactoring programs for flexible locking
US8677331B2 (en) * 2011-09-30 2014-03-18 Oracle International Corporation Lock-clustering compilation for software transactional memory
CA2831134A1 (en) * 2013-10-24 2015-04-24 Ibm Canada Limited - Ibm Canada Limitee Identification of code synchronization points

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100229160A1 (en) * 2009-03-05 2010-09-09 International Business Machines Corporation Converting program code of a multi-threaded program into program code causing less lock contentions
CN102292709A (zh) * 2009-04-28 2011-12-21 国际商业机器公司 用于将在多线程上工作的程序的程序代码变换为锁冲突少的程序代码的方法及其计算机程序和计算机系统
US20110202907A1 (en) * 2010-02-18 2011-08-18 Oracle International Corporation Method and system for optimizing code for a multi-threaded application
CN103339606A (zh) * 2011-01-10 2013-10-02 国际商业机器公司 用于并发软件环境的活动记录系统
US20120311307A1 (en) * 2011-05-31 2012-12-06 Chynoweth Michael W Method And Apparatus For Obtaining A Call Stack To An Event Of Interest And Analyzing The Same

Also Published As

Publication number Publication date
US20150121352A1 (en) 2015-04-30
CN104572309B (zh) 2018-01-23
US9317262B2 (en) 2016-04-19
CA2831134A1 (en) 2015-04-24

Similar Documents

Publication Publication Date Title
US11614990B2 (en) Automatic correlation of dynamic system events within computing devices
CN110245078B (zh) 一种软件的压力测试方法、装置、存储介质和服务器
Kaldor et al. Canopy: An end-to-end performance tracing and analysis system
US10291463B2 (en) Large-scale distributed correlation
CN107943668B (zh) 计算机服务器集群日志监控方法及监控平台
Lu et al. Log-based abnormal task detection and root cause analysis for spark
US8464221B2 (en) Visualization tool for system tracing infrastructure events
KR101797185B1 (ko) 분산 환경에서 효율적으로 트랜젝션-분리 메트릭들을 수집하는 방법
US20100223446A1 (en) Contextual tracing
CN106021079A (zh) 一种基于用户频繁访问序列模型的Web应用性能测试方法
US20160077828A1 (en) Logical grouping of profile data
Sambasivan et al. So, you want to trace your distributed system? Key design insights from years of practical experience
US8275581B2 (en) Managing statistical profile data
Schulz Extracting critical path graphs from MPI applications
CN104410671B (zh) 一种快照抓取方法和数据监控装置
CN108875091A (zh) 一种统一管理的分布式网络爬虫系统
US8875158B2 (en) Method for request profiling in service systems with kernel events
CN112052078A (zh) 一种耗时的确定方法和装置
KR101266930B1 (ko) 포렌식 감사 데이터 시각화 시스템
Ostrowski et al. Diagnosing latency in multi-tier black-box services
CN104572309A (zh) 用于代码同步点的识别的方法和系统
US20180219752A1 (en) Graph search in structured query language style query
CN108924002B (zh) 一种性能数据文件的解析方法、装置、设备及存储介质
Feng et al. A memory capacity model for high performing data-filtering applications in samza framework
Maplesden et al. Performance analysis using subsuming methods: An industrial case study

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180123

CF01 Termination of patent right due to non-payment of annual fee