CN109716730B - 用于生产应用的自动化性能调试的方法和计算设备 - Google Patents

用于生产应用的自动化性能调试的方法和计算设备 Download PDF

Info

Publication number
CN109716730B
CN109716730B CN201680089139.5A CN201680089139A CN109716730B CN 109716730 B CN109716730 B CN 109716730B CN 201680089139 A CN201680089139 A CN 201680089139A CN 109716730 B CN109716730 B CN 109716730B
Authority
CN
China
Prior art keywords
threads
data
call
performance
thread
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.)
Active
Application number
CN201680089139.5A
Other languages
English (en)
Other versions
CN109716730A (zh
Inventor
王亚伟
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN109716730A publication Critical patent/CN109716730A/zh
Application granted granted Critical
Publication of CN109716730B publication Critical patent/CN109716730B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/022Capturing of monitoring data by sampling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0715Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a system implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3017Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
    • 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/3409Recording 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 for performance assessment
    • G06F11/3419Recording 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 for performance assessment by assessing time
    • 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/3409Recording 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 for performance assessment
    • G06F11/3428Benchmarking
    • 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
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/04Processing captured monitoring data, e.g. for logfile generation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0817Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0778Dumping, i.e. gathering error/state information after a fault for later diagnosis
    • 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/3447Performance evaluation by modeling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Environmental & Geological Engineering (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

生产应用中的性能异常可以被分析,以确定相同或不同计算机上的托管进程随时间的动态行为。有问题的调用位点(是性能瓶颈或正导致挂起的调用位点)可以被标识。替代依赖于静态代码分析和开发阶段负载测试来标识性能瓶颈或应用挂起,轻量级采样策略收集表示生产场景中的主要性能数据的谓词。性能谓词提供关于主题的信息(例如,性能问题是什么、什么导致了性能问题等)。数据可以被馈送到基于决策树的模型中以标识运行有问题的调用位点的关键线程。结果连同主要性能数据一起可以被用来构建用于分析调用堆栈模式的调用图前缀二叉树。数据收集、分析和结果的可视化可以被执行。

Description

用于生产应用的自动化性能调试的方法和计算设备
背景
云计算是一种基于互联网的按需(on-demand)计算类型,其中包括网络、服务器、存储、应用、服务等的可配置处理资源池在许多客户之间被共享。云计算和存储解决方案为用户和企业提供了在第三方数据中心中储存和处理数据的多种能力。
云计算由于各种原因而已变得非常流行,所述原因包括高端计算技术的可用性、低成本、良好性能、可扩展性等等。在云计算环境中进行调试可能具有挑战性。如果出现性能异常(例如,响应减速),通常根本不清楚什么正在导致该异常。
概述
客户源代码或非框架代码在生产环境中的自动化性能调试可以通过使用轻量级采样技术收集性能数据来被执行。性能数据是示出生产应用正如何执行的数据。例如,其可以引用但不限于引用关于性能调试上下文中的CPU利用率、线程及它们的调用堆栈追踪的信息。框架代码是用作操作系统的抽象层以提供通用功能性的可执行代码。通常,框架代码可以通过附加的用户编写的代码(不是框架代码且不是操作系统代码的代码)来被选择性地改变,从而提供因应用而异的功能性。框架代码通常具有库、工具集和应用编程接口(API)支持,以便于软件应用的开发。非框架代码(例如,用户编写的代码)是用户创建以满足特定功能和/或业务需求的可执行代码。非框架代码可以包括用户实现的对框架代码的扩展。
性能数据可以被收集。性能数据可以被序列化到存储中。数据可以被离线地分析。数据可被用来标识关键线程。数据可被馈送到基于决策树的模型中,以标识与处理减速相关联的关键线程。调用图前缀(call graph prefix)二叉树可以被构建来分析关键线程的调用堆栈模式以突出热点。热点上所流逝的墙钟时间的视图可以被提供。通过观察包括调用堆栈模式视图的分析结果,热点(致使性能减速的代码)可被标识。除了调试之外,该信息可被用于性能调节。性能调节可以改进应用性能。经标识的热点的调用帧可以包括模块名称和方法名称以及与减速相关联的代码的所流逝的时钟时间。因此,静态代码复查可以被容易地用作仅复查所指示的方法代码段的施展余地。因此,本文中所公开的主题可以被利用以调节生产应用性能。
提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的概念的选集。本概述并不旨在标识所要求保护的主题的关键特征或必要特征,亦非旨在用于限制所要求保护的主题的范围。
附图简述
在附图中:
图1a解说了系统100,其包括根据本文中所描述的主题的各方面的用于生产应用的自动化性能调试系统的示例;
图1b解说了系统101的另一视图,其包括根据本文中所描述的主题的各方面的用于生产应用的自动化性能调试系统的示例;
图1c解说了系统103,其包括根据本文中所描述的主题的各方面的用于生产应用的云自动化性能调试系统的示例;
图2a解说了根据本文中所描述的主题的各方面的用于生产应用的性能调试的方法200的示例;
图2b是根据本文中所描述的主题的各方面的生产应用的性能调试的框图;
图2c解说了根据本文中所描述的主题的各方面的程序的调用图;
图2d解说了根据本文中所描述的主题的各方面的CallSitei+ n∈{0…11}的调用堆栈的示例;
图2e解说了根据本文中所描述的主题的各方面的构建调用图前缀二叉树的示例;
图2f解说了根据本文中所描述的主题的各方面的生产应用的性能调试的分析结果的示例;以及
图3是根据本文中所描述的主题的各方面的计算环境的示例的框图。
详细描述
概览
通常,在云计算中,应用跨多个物理层和/或在多个网络边界之上运行。一些系统是本地(on-premises)和云系统的复杂混合体。许多应用支持数千或数百万的并发用户请求。它们通常与可以用可能来自不同供应商的不同技术构建的各种其他系统交互。例如,混合云系统可以开始于来自瘦或厚客户端的请求,所述请求通过云服务前端流向本地web服务,去往被构建在具有与数据库层交互的数据访问组件的各种技术上的第三方业务范围(line of business)应用。附加服务(诸如社交身份提供商、请求路由、认证、授权等等)有可能开始起作用。如果出现性能异常(例如,响应减速),根本不清楚哪个层正在导致该异常。
传统的调试活动通常涉及设置调试工具、在减速期间相继地捕捉若干轮挂起模式转储以及使用用户模式调试器对它们进行分析。挂起模式转储是完全用户模式转储,其包括进程的整个存储器空间、程序的可执行映像本身、句柄表、和将会对调试器有用的其他信息。用户模式调试器是被用来调试运行可执行代码的进程的调试器,所述运行可执行代码的进程通过OS(操作系统)与其他进程分开。调试器和被调试对象(正被调试的可执行文件)通常运行在相同的用户模式系统上。尽管使用存储器转储进行深入调试非常强大,但它也是冗长且耗时的,因为可能存在数百个进程,这些进程中的每一者可能具有在它们内运行的数百个线程。而且,因为存储器转储是进程的快照,所以存储器转储由于进程的完整简档无法被组装而通常不提供能够推断进程的运行时动态行为的足够信息。最后,为非常大的生产过程捕捉挂起模式转储可能需要几分钟,在此期间所有线程的执行被挂起(意味着用户的系统停止响应)。
当应用对任何请求变得无响应同时主控应用的进程正消耗很少或不消耗CPU(中央处理单元)时间时,应用被称为处于低CPU挂起状态。高CPU挂起是无响应性的类型,其中主控可执行文件的进程正消耗大量的(诸)系统处理器CPU时间(通常接近100%)并且进程正缓慢执行、冻结或甚至关闭。本文中所描述的主题涉及低和高CPU挂起两者。
根据本文中所描述的主题的各方面,生产应用的整体性能异常可被标识。相同或不同计算机上的托管进程随时间的动态行为可以被分析。可能是性能瓶颈或可能导致挂起的调用位点(call site)可被标识。替代依赖于静态代码分析和开发阶段负载测试来标识性能瓶颈或应用挂起,轻量级采样策略可以收集表示生产场景中的主要性能数据的谓词。性能谓词可以提供关于主题的信息(例如,性能问题是什么、什么导致了性能问题等)。数据可被馈送到模型(例如,诸如但不限于基于决策树的模型)中以标识运行有问题的调用位点的关键线程。结果连同主要性能数据一起可以被用来构建用于分析调用堆栈模式的调用图前缀二叉树。数据收集、分析和结果的可视化可以被执行。
根据本文中所描述的主题的各方面,自动化性能调试和调节可被应用于生产应用。以下特征中的一个或多个可以被包括:保证有限的运行时开销(如本文所使用的,有限的运行时开销是包括小于现实大规模应用(包括企业服务器应用)的总开销的5%的开销)。即时(on-the-fly)分析和离线报告可以被执行。仅具有基本应用和系统知识的人可以理解进程在监视周期期间正在做什么。根据本文中所描述的主题的各方面,自动化性能调试可以被同时应用于大规模分布式系统中的所有进程,以标识整体性能异常的原因。根据本文中所描述的主题的各方面,自动化性能调试可被应用于随黑盒运行的应用。黑盒是用户具有关于其的甚少知识的组件。
为了进一步阐述主要性能数据是关于什么的,假设进程P的随时间的(over-time)性能度量被定义为向量
Figure GDA0003100956840000041
并且
Figure GDA0003100956840000042
被定义为进程P中的线程i的随时间的性能度量。因此:
Figure GDA0003100956840000043
i∈{TID}其中TID是所有线程的ID的集合
令采样持续时间为x且采样周期为
Figure GDA0003100956840000044
因此:
Figure GDA0003100956840000045
Figure GDA0003100956840000046
是样本n中的线程i的性能度量。所以
Figure GDA0003100956840000047
其中CPUin是样本n中的线程i的用户时间;
CallSitein是样本n中的线程i的调用堆栈模式。
Figure GDA0003100956840000051
Figure GDA0003100956840000052
是主要性能数据。
如本文中所描述的轻量级采样策略可针对目标进程来被使用以生成主要性能数据。选择合适的采样策略在实现生产环境通常需要的低开销时至关重要。传统上,采样通过以下而发生:将调试器以入侵方式附连到进程并捕捉挂起模式转储或事先用仪器检测整个应用以发出运行时追踪。本文中所描述的轻量级采样策略可以将线程注入到目标进程中以收集谓词。首先,用于目标进程的远程进程句柄可以被创建。句柄可被提供给一个或多个进程以创建参数缓冲区(argument buffer)并调用合适的代码。当代码被调用时,新线程可被创建以收集谓词。采样持续时间和间隔(采样周期)可以被指定。所有正在运行的线程的快照可以被采集。
可以如下解说CallSitein n∈{0…N}。图2c解说了调用图及其对应的调用位点的示例250。例如,假设应用具有在线程T中运行的调用堆栈,其中该调用堆栈在进程MAIN()251处开始并且在RET()253处结束。假设调用位点N()252是花费5秒来返回的假设性的性能瓶颈,而从MAIN()251到RET()253的整个执行花费6秒。O1 254可以是不包括N()252的调用路径的集合。
假设采样在时间0处开始,并且影响N()252的第一采样发生在时间3处。带有1秒采样周期的10秒的采样持续时间将产生11个样本。调用图中的虚线(诸如虚线255和虚线256)表明在调用方和被调用方之间存在多个调用或环(hoop)。例如,虚线255指示Main()251调用F()259不止一次。实线(诸如实线257和实线258)指代直接调用方/被调用方关系。例如,线257指示调用方B()260调用被调用方N()252一次。每个矩形框(例如,框251a)指代一个调用位点,并且圆角矩形框254a指代图中不调用调用位点N()252的分支的集合。
图2d解说了调用堆栈270的示例(例如,CallSitein n∈{0…11}的调用堆栈)。假设采样在时间0 271处开始,如帧274中所示。在时间3 271a处(在第4个样本处,帧272),感兴趣的调用堆栈模式开始(例如,从A()262到B()260至N()252(统称276a)的调用)出现在调用堆栈上。调用堆栈列中的每个帧反映了在特定线程的特定采样中所捕捉的调用堆栈追踪。调用堆栈追踪可以包括多个帧。底部帧(帧273)是调用流中的第一调用位点,而顶部帧274是末尾。“系统和框架调用位点”275指代对框架代码的调用,并且省略号(诸如省略号276)指示在两个调用位点之间存在多个环。因此,在帧272a中,行277、278和279指示A()调用C()261并且C()261调用N()252。
根据本文中所描述的主题的各方面,可以从现有的一组训练范例创建决策树或分类树。决策树可被用来对新范例进行分类。各种决策树构造算法可以被使用,包括但不限于Quinlan的算法ID3和C4.5。尽管这两种算法都使用基于熵和信息增益的公式,但也可以构想其他公式。基于决策树的模型可被用来将线程分类为普通的(Normal)或关键的(Critical)。普通线程不太可能具有对调试或问题隔离有帮助的调用堆栈信息(即,系统空闲线程)。系统空闲线程是空闲(什么都不做)的线程。例如,空闲线程可以是其上无非框架可执行文件正在运行的线程。这样的线程被分类为普通的。关键线程可能具有有助于标识致使性能异常的线程的信息(例如,忙的GC(垃圾收集线程),忙的工作者线程,与相同系列的客户调用位点一致地忙的线程)。
忙线程的排序可以被计算。忙线程可以按CPU使用来被排序。关键线程由基于决策树的模型来分类。决策树模型可以基于忙线程排序、调用堆栈长度、非框架调用位点的存在以及相继样本中的非框架调用位点的存在来被构建。关键线程可能是忙的,因为该线程由于有问题的调用位点而具有沉重的工作负载。关键线程可以是一个不忙的线程,因为其正在等待资源。关键线程可以是不忙的线程,因为其正在阻塞资源。关键线程的调用堆栈通常以OS或框架开始和结束,并且在中间具有非框架区段,该非框架区段包括可能有问题的调用位点(例如,由参考标号276a、277、278和279引用的调用位点)。忙线程排序(Busy ThreadRanking)连同三个其他属性(调用堆栈的长度(“调用堆栈长度(Call Stack Length)”)、调用堆栈中的非框架调用位点的存在(“具有非框架调用位点(Has non-framework callsites)”以及相继样本中的非框架调用位点的存在(“在相继样本中具有非框架调用位点(Has non-framework call sites in consecutive samples)”一起可以被用在用于构建基于决策树的模型的训练集中。忙线程排序反映了任何(多个)时间间隔中的每个忙线程的CPU利用率。可以按如下计算任何(多个)时间间隔中的忙线程的CPU利用率:
Figure GDA0003100956840000061
其中a<b∧a,b∈{0…N}
调用图前缀二叉树可以被创建,其聚类随时间的调用堆栈以突出热点和热路径。调用图前缀二叉树可以提供在热点和/或热路径上所流逝的挂钟时间的粗略视图。当新节点被添加到调用图前缀二叉树时,其被添加为调用图前缀二叉树的最左侧分支的右子节点。图2e解说了为图2d的调用堆栈270构建调用图前缀二叉树291的示例。符号+X(Y)CallSite Z意味着CallSite(调用位点)在模式Z中已被命中X次,具有最大相继命中Y。也就是说,例如,对于节点291a,+3(5)N1意味着调用位点N已被采样3次并且曾出现在调用堆栈模式1中的5个相继样本中。在图2d中存在3个调用堆栈模式,模式1(ADCBN)291b、模式2(FN)291c和模式3(EN)291d。应当领会,虽然在生产环境的上下文中进行了描述,但是本文中所描述的主题同样适用于测试或其他非生产环境。
生产应用的自动化性能调试
图1a解说了系统100,其包括根据本文中所描述的主题的各方面的用于生产应用的自动化性能调试系统的示例。系统100的全部或各部分可以驻留在诸如下面参考图3所描述的计算机之类的一个或多个计算机或计算设备上。系统100或其各部分可以被提供为独立系统或者被提供为插件或附件。
系统100或其各部分可包括从某一服务(例如,云中)获得的信息或者可在云计算环境中操作。云计算环境可以是其中计算服务不被拥有但被按需提供的环境。例如,信息可驻留在联网云中的多个设备上,和/或数据可被储存在云内的多个设备上。系统100可以是场所内自动化性能调试系统。
系统100可包括一个或多个计算设备,诸如举例而言,计算设备102。所构想的计算设备包括但不限于台式计算机、平板计算机、膝上型计算机、笔记本计算机、个人数字助理、智能电话、蜂窝电话、移动电话、传感器、服务器计算机等。诸如计算设备102等计算设备可包括一个或多个处理器(诸如处理器142等)以及与该一个或多个处理器通信的存储器(诸如存储器144)。
系统100可以包括一个或多个程序模块,该一个或多个程序模块在被加载到存储器144中且由诸如处理器142等的一个或多个处理器访问时,致使处理器执行归因于该一个或多个程序模块的一个或多个动作。(诸)处理器可以被配置成执行归因于一个或多个程序模块的一个或多个动作。系统100可以包括以下各项的任何一者或以下各项的任何数量的任何组合:工作者线程池(诸如工作者线程池109,诸如工作者线程111的工作者线程可以从工作者线程池中被分配给诸如应用进程105的应用进程)、一个或多个轻量级采样程序模块(诸如轻量级采样模块107)、一个或多个数据收集程序模块(诸如数据收集模块113)、经注入的线程(诸如被注入到应用进程105中的经注入的线程115),存储设备(诸如存储设备或存储117),计算进程(诸如计算进程119)、数据分析程序模块(诸如数据分析模块121)和/或分析结果(诸如由数据分析进程122生成的分析结果123)。
来自工作者线程池109的工作者线程111可以被注入到执行数据收集模块113的代码的应用进程105中。轻量级采样模块107可以周期性地收集数据(例如,主要性能数据118),该数据可以被序列化并且被储存在存储117中。轻量级采样模块107可以发起线程注入到应用进程105中。计算进程119的数据分析进程122可以分析数据并且提供分析结果123。
图1b解说了系统101,其包括根据本文中所描述的主题的各方面的用于生产应用的自动化性能调试系统的另一示例。系统101的全部或各部分可以驻留在诸如下面参考图3所描述的计算机之类的一个或多个计算机或计算设备上。系统101或其各部分可以被提供为独立系统或者被提供为插件或附件。
系统101或其各部分可包括从某一服务(例如,云中)获得的信息或者可在云计算环境中操作。云计算环境可以是其中计算服务不被拥有但被按需提供的环境。例如,信息可驻留在联网云中的多个设备上,和/或数据可被储存在云内的多个设备上。
所构想的计算设备包括但不限于台式计算机、平板计算机、膝上型计算机、笔记本计算机、个人数字助理、智能电话、蜂窝电话、移动电话、传感器、服务器计算机等。诸如计算设备等计算设备可以包括一个或多个处理器以及与该一个或多个处理器通信的存储器。
系统101可以包括一个或多个计算设备,诸如举例而言,诸如一个或多个应用服务器125、一个或多个web服务器127、一个或多个数据库服务器129之类的计算设备。计算设备可以包括数据中心。可以经由诸如互联网139之类的网络从云133下载数据收集代理135。诸如主要性能数据137之类的关键性能数据可以被上传到云133,由数据分析组件138分析,并且分析结果143可以被呈现在客户端设备141上。替代地,数据收集代理135可以驻留在场所内计算机上。主要性能数据137可以由驻地数据分析组件来分析,并且分析结果143可以被生成在场所内设备上。构想了云和场所内组件的任何组合。
图1c解说了系统103,其包括根据本文中所描述的主题的各方面的用于生产应用的云自动化性能调试系统的示例。系统103的全部或各部分可以驻留在诸如下面参考图3所描述的计算机之类的一个或多个计算机或计算设备上。系统103或其各部分可以被提供为独立系统或者被提供为插件或附件。
系统103或其各部分可包括从某一服务(例如,云中)获得的信息或者可在云计算环境中操作。云计算环境可以是其中计算服务不被拥有但被按需提供的环境。例如,信息可驻留在联网云中的多个设备上,和/或数据可被储存在云内的多个设备上。
所构想的计算设备包括但不限于台式计算机、平板计算机、膝上型计算机、笔记本计算机、个人数字助理、智能电话、蜂窝电话、移动电话、传感器、服务器计算机等。诸如计算设备等计算设备可以包括一个或多个处理器以及与该一个或多个处理器通信的存储器。
系统103可以包括一个或多个云计算设备,诸如举例而言,数据中心160中的计算设备。云数据收集代理150可以从云158中的生产环境156收集数据,并且可以将该数据(例如,主要性能数据)序列化到云存储154。云自动诊断服务152可以向客户端162提供分析结果153。
图2a解说了根据本文中所公开的主题的各方面的用于生产应用的性能调试的方法200的示例。图2a中所描述的方法可以通过诸如但不限于关于图1a和/或图1b和/或图1c所描述的系统之类的系统来实施。尽管方法200描述了顺序执行的一系列操作,但应当理解,方法200不受所描绘顺序的次序的限制。例如,一些操作可以以与所描述的不同的次序发生。另外,一个操作可以与另一操作并发地发生。在一些实例中,并非所有所描述的操作都被执行。在一些实例中,并非所有所执行的操作都被解说。
在操作202处,数据可以被收集。数据可以是主要性能数据。数据可以由数据收集代理收集。数据可以通过被注入到应用进程中的线程来收集。可以使用以上更充分描述的轻量级采样技术来收集数据。在操作204处,数据可以被流式传输到存储。数据可以被流式传输到存储,使得对数据的分析可以被离线地执行。数据可以在其被储存之前被序列化。在操作206处,所储存的数据可以被分析。该分析可以被离线地执行。主要性能数据可以被分析以标识关键线程。关键线程可以使用基于决策树的模型来被标识。在操作208处,关键线程的调用堆栈模式可以使用调用图前缀二叉树来被分析。在操作208a处,分析结果可以被提供。分析结果可以是包括以下各项中的一者或多者的结果:CPU利用率视图、关键线程数据的列表、和/或调用堆栈模式视图。分析结果可以在视觉上被提供。
图2b是解说根据本文中所描述的主题的各方面的自动化性能调试系统的框图。系统210的全部或各部分可以驻留在诸如下面参考图3所描述的计算机之类的一个或多个计算机或计算设备上。系统210或其各部分可以被提供为独立系统或者被提供为插件或附件。
系统210或其各部分可包括从某一服务(例如,云中)获得的信息或者可在云计算环境中操作。云计算环境可以是其中计算服务不被拥有但被按需提供的环境。例如,信息可驻留在联网云中的多个设备上,和/或数据可被储存在云内的多个设备上。
系统210可包括一个或多个计算设备。所构想的计算设备包括但不限于台式计算机、平板计算机、膝上型计算机、笔记本计算机、个人数字助理、智能电话、蜂窝电话、移动电话、传感器、服务器计算机等。计算设备可以包括一个或多个处理器以及与该一个或多个处理器通信的存储器。
系统210可以包括一个或多个程序模块,该一个或多个程序模块在被加载到存储器中且由一个或多个处理器访问时,致使处理器执行归因于该一个或多个程序模块的一个或多个动作。(诸)处理器可以被配置成执行归因于一个或多个程序模块的一个或多个动作。系统210可以如下操作。诸如来自工作者线程池209的工作者线程211之类的一个或多个工作者线程可以被分配给应用进程205。诸如经注入的线程215之类的线程可以被注入到数据收集进程213中。数据收集代理可以从正在被调试或调节的应用进程205收集诸如主要性能数据214a之类的数据。诸如轻量级采样过程207之类的轻量级采样过程可被用来收集数据的样本。所收集的数据(例如,主要性能数据214a)可以被储存在诸如存储217之类的存储设备中。计算进程(诸如计算进程219)内的分析代理(诸如分析代理221)可以检索和/或分析存储217中的数据(诸如主要性能数据214b),以生成分析结果(诸如分析结果223)。
来自工作者线程池的工作者线程可以被注入到数据收集进程中。轻量级采样过程可以周期性地收集可被序列化且被储存在存储中的数据。数据分析进程可以分析数据并且在显示器或其他设备上提供分析结果。
图2f解说了根据本文中所描述的主题的各方面的可以被包括在性能调试的分析结果中的元素的示例。图表280是CPU视图的示例。CPU视图示出了计算设备的整体用户模式CPU利用率。y轴280a表示用户模式CPU利用率的百分比。x轴280b表示采样时间间隔。图表280中的每个垂直框指代从样本Tx-1到Tx的用户模式CPU利用率。CPU视图可以示出每个线程占的CPU利用率的量。例如,第一垂直框282中的“35”281指示在从样本0到样本1的时间间隔中的所有线程的总用户模式CPU利用率是35%。通过选择垂直框,用户模式CPU利用率的分解可以被显示。CPU利用率分解的图表288是示出哪个线程占了该采样间隔的多少用户模式CPU利用率的列表。例如,垂直框289具有76%的总用户模式CPU利用率,并且存在9个贡献者(线程),例如,线程标识符(TID)X1、线程X2、线程X3…到线程X9。每个线程与用户模式CPU利用率的百分比相关联。例如,线程X1具有Y1%的CPU利用率,线程X2占CPU用户模式利用率的Y2%等,分别到对于线程X9而言Y9%。Y1、Y2…到Y9的总和是总用户模式CPU利用率,即百分之76。CPU视图(图表280)可以在采样周期期间的每个时间间隔处描绘忙线程。忙线程排序可以被计算。忙线程排序连同其他三个属性“调用堆栈长度”、“具有非框架调用位点”和“在相继样本中具有非框架调用位点”一起可以被馈送到决策树模型中以创建关键线程视图图表220。
图表220是关键线程的视图的示例。关键线程视图(图表220)描绘了所标识的关键线程和关于关键线程的信息,包括线程ID(列283)、CPU利用率(列284)(例如,45%284a),其是否正阻塞(列285)、线程何时被采样(列286)(条目286a 1、7、9、12意味着线程X1从第一到第七个采样时间间隔以及从第9到第12个采样时间间隔曾被采样)。对条目286a而言总共的,存在6(1到7)加3(9到12)或者9个采样间隔。列287是总计经采样时间。在该示例中,每个间隔被假设是半秒,因此列287条目287a指示4.5秒的总采样时间(9个每个1/2秒的采样间隔等于4.5秒)。给定一秒的采样间隔和10秒的采样持续时间,11个样本将在时间0、时间1…到时间10处被采集。
图表230是用于来自关键线程列表(诸如关键线程列表,图表220)的所选择的关键线程的调用堆栈模式视图的一部分的示例。完整的调用堆栈模式视图描述了为关键线程构建的所有调用堆栈模式。每个关键线程具有对应的调用堆栈模式视图(Call StackPattern View),其包括多个调用堆栈模式。如以上所描述,根据本文中所描述的主题的各方面,忙线程排序和决策树分类可以导致关键线程列表。关键线程列表中的每个线程可以具有调用堆栈模式视图。来自CPU利用率分解图表(例如,图表280视图的CPU利用率分解图表288)的感兴趣的关键线程可以包括一个或多个经聚类的调用堆栈模式。可以从监视持续时间期间所捕捉的多个调用堆栈对每个调用堆栈模式进行聚类。可以使用Call GraphPrefix Binary Tree(调用图前缀二叉树)数据结构和算法对它们进行聚类。这使得用户能够聚焦在经突出的调用位点上,因为经突出的调用位点是性能异常的原因。
每个调用堆栈模式可以具有多个调用堆栈帧,该多个调用堆栈帧的每一者可以包括模块和方法名称以及其中它被找到的最大相继样本。例如,在局部调用堆栈模式视图(图表230)中,顶部调用堆栈帧401中的mscorlib 400是具有方法(method A 402)的模块。调用堆栈帧401中的“20”表示其中mscorlib!methodA被找到的最大相继样本。如果每次采样具有1秒的持续时间,则mscorlib!methodA将已执行达20秒。除了调用堆栈帧404和405之外,图表230中所表示的所有代码是框架或操作系统代码(从模块名称可辨别)。由调用堆栈帧404和405表示的代码是用户代码、可辨别的,因为模块名称是“UserModule(用户模块)”。调用堆栈帧405是具有方法X 405b和20个最大相继样本(MCS)405c的用户模块405a。该调用堆栈帧可以以某种方式(例如,文本的突出、着色等)来被区分,以引起对作为造成性能问题的可能候选者(例如是热点)的它的注意力。调用堆栈帧404也是相关的,因为其是用户代码并且具有相对大的MCS。因而,用户可以查看methodX(方法X)(以及潜在地,方法Y)的代码以确定大MCS的原因。
调用图二叉树和算法的实现可以包括记录其中调用堆栈帧出现的最大相继样本(例如,最大相继样本403)的字段。可以基于最大相继样本来进行每个调用堆栈帧的执行时间的粗略计算。调用图二叉树可以包括记录其中调用堆栈帧出现的最大相继样本的字段。在调用堆栈帧405中,可以看出在UserModule406中,methodX 407存在于20个相继样本中。从三种类型的视图中,与性能相关的问题的根本原因可以被标识。根据本文中所描述的主题的一些方面的分析流程如下:
CPU视图示出忙线程排序。
基于决策树的模型标识关键线程。
调用堆栈模式视图示出每个关键线程的热点和热路径。
因而,可以确定一个或多个线程(例如,线程a、b和c)具有一个或多个热点(例如,线程a具有热点a1和a2,线程b具有热点b1、b2、b3,而线程c具有热点c1热点)。因而,导致性能异常的热路径在时间历时Ta–Tb和Tb–Tc中。
多个时间历时是可能的,因为用户可以监视进程达长时间,在此期间具有不同原因的不同性能相关问题可能在不同时间段处发生。而且,相同的性能问题可能在不同时间段处在不同线程上被经历。本文中所描述的是一种包括处理器和被连接到该处理器的存储器的计算设备。处理器可以被配置成提供程序模块,该程序模块使用轻量级采样策略来收集用于在生产环境中执行的应用的主要性能数据。处理器可以分析主要性能数据以标识关键线程。其可以分析关键线程的调用堆栈模式。其可以提供包括在生产环境中执行的应用的调试信息的分析结果。主要性能数据可以包括来自应用的执行的数据。轻量级采样策略可以将数据收集代理注入到执行应用的进程中,采用对被注入到进程中的线程的使用。主要性能数据可以被馈送到决策树模型中以标识关键线程,这些关键线程运行调用位点,从而导致应用的性能减速。在采样持续时间内的任何两个时间点之间的忙线程可以通过对忙线程进行排序来被确定。本文中所描述的方法包括配置计算设备的处理器以接收用于生产应用的自动化调试的主要性能数据,分析主要性能数据以标识关键线程,该关键线程包括运行调用位点的线程,该调用位点导致生产应用的性能减速,使用调用图前缀二叉树分析关键线程的调用堆栈模式;以及提供分析结果。在采样持续时间内的任何两个时间点之间的忙线程可以通过对忙线程进行排序来被标识。关键线程可以使用基于决策树的模型来被标识。关键线程的调用堆栈模式可以使用调用图前缀二叉树来被标识。主要性能数据可以使用轻量级采样来被收集包括:创建到其中生产应用执行的进程的句柄,将线程注入到进程中,将数据收集代理注入到进程中以收集主要性能数据。描述了一种计算设备,包括处理器;存储器;该存储器被连接到该处理器;该处理器被配置成接收用于生产应用的自动化调试的主要性能数据,分析该主要性能数据以标识关键线程;使用调用图二叉树分析关键线程的调用堆栈模式;以及提供标识与性能减速相关联的调用位点的分析结果。处理器可以被进一步配置成使用基于决策树的模型来标识关键线程,该关键线程包括运行调用位点的线程,该调用位点导致生产应用的性能减速。显示忙线程排序的CPU利用率视图可以被提供。标识热点的调用堆栈模式视图可以被提供。处理器可以被进一步配置成提供关键线程数据。
合适的计算环境的示例
为了提供有关本文所公开主题的各方面的上下文,图3以及以下讨论旨在提供其中可以实现本文所公开主题的各实施例的合适计算环境510的简要概括描述。尽管本文所公开的主题是在诸如程序模块等由一个或多个计算机或其他计算设备执行的计算机可执行指令的通用上下文中描述的,但本领域技术人员将认识到,本文所公开的主题的各部分还能够结合其他程序模块和/或硬件和软件的组合来实现。通常,程序模块包括执行特定任务或实现特定数据类型的例程、程序、对象、物理人工产物、数据结构等。通常,程序模块的功能性可在各个实施例中按需进行组合或分布。计算环境510只是合适的操作环境的一个示例,并且不旨在对此处所公开的主题的使用范围或功能性提出任何限制。
参考图3,描述了计算机512形式的计算设备。计算机512可包括至少一个处理单元514、系统存储器516和系统总线518。至少一个处理单元514可执行被储存在诸如但不限于系统存储器516之类的存储器中的指令。处理单元514可以是各种可用处理器中的任何一种。例如,处理单元514可以是图形处理单元(GPU)。这些指令可以是用于实现由上面讨论的一个或多个组件或模块执行的功能性的指令或用于实现上面讨论的一个或多个方法的指令。也可以使用双微处理器及其他多处理器体系结构作为处理单元514。计算机512可被用于支持在显示屏上呈现图形的系统中。在另一示例中,计算设备的至少一部分可以用在包括图形处理单元的系统中。系统存储器516可包括易失性存储器520和非易失性存储器522。非易失性存储器522可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)或闪存。易失性存储器520可包括可充当外高速缓冲存储器的随机存取存储器(RAM)。系统总线518将包括系统存储器516的系统物理人工产物耦合到处理单元514。系统总线518可以是几种类型的总线结构中的任何一种,包括存储器总线、存储控制器、外围总线、外总线或局部总线,并且可以使用各种可用总线体系结构中的任一种。计算机512可包括处理单元514可通过系统总线518访问的数据存储。数据存储可包括用于图形呈现的可执行指令、3D模型、素材、材质等。
计算机512通常包括各种计算机可读介质,诸如易失性和非易失性介质、可移动和不可移动介质。计算机可读介质可以通过用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术来实现。计算机可读介质包括计算机可读存储介质(也称为计算机存储介质)以及通信介质。计算机存储介质包括物理(有形)介质,诸如但不限于可储存所希望的数据以及可由计算机512访问的RAM、ROM、EEPROM、闪存或其他存储器技术、CDROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储设备。通信介质包括诸如但不限于通信信号、调制载波或可被用于传递所希望的信息以及可由计算机512访问的任何其他无形介质之类的介质。
应当领会,图3描述了可充当用户与计算机资源之间的媒介的软件。该软件可以包括操作系统528,其可以被储存在盘存储524上,并且其可以分配计算机512的资源。盘存储524可以是通过诸如接口526等不可移动存储器接口连接到系统总线518的硬盘驱动器。系统应用530利用操作系统528通过被储存在系统存储器516中或者盘存储524上的程序模块532和程序数据534对资源所作的管理。应当领会,计算机可用各种操作系统或操作系统的组合来实现。
用户可通过(诸)输入设备536向计算机512输入命令或信息。输入设备536包括但不限于定点设备,诸如鼠标、轨迹球、触控笔、触摸垫、键盘、话筒、语音识别和姿势识别系统等。这些及其他输入设备经由(诸)接口端口538通过系统总线518连接到处理单元514。(诸)接口端口538可表示串行端口、并行端口、通用串行总线(USB)等。(诸)输出设备540可以与输入设备使用相同类型的端口。提供输出适配器542以解说存在如监视器、扬声器、以及打印机那样需要特定适配器的一些输出设备540。输出适配器542包括但不限于,在输出设备540和系统总线518之间提供连接的视频卡和声卡。其他设备和/或系统和/或设备,诸如(诸)远程计算机544,可提供输入和输出两种能力。
计算机512可以使用到诸如(诸)远程计算机544等一个或多个远程计算机的逻辑连接来在联网环境中操作。远程计算机544可以是个人计算机、服务器、路由器、网络PC、对等设备或其他常见的网络节点,并且通常包括许多或所有以上关于计算机512所描述的元件,但在图3中仅解说了存储器存储设备546。(诸)远程计算机544可经由(诸)通信连接550来被逻辑地连接。网络接口548涵盖诸如局域网(LAN)和广域网(WAN)这样的通信网络,但也可包括其他网络。(诸)通信连接550指代被用来将网络接口548连接到总线518的硬件/软件。(诸)通信连接550可以在计算机512的内部或外部并且包括诸如调制解调器(电话、电缆、DSL和无线)和ISDN适配器、以太网卡等内部和外部技术。
应当领会,所示网络连接仅是示例,并且可以使用在计算机之间建立通信链路的其他手段。本领域的普通技术人员可以领会,计算机512或其他客户端设备可作为计算机网络的一部分来部署。在这一点上,本文所公开的主题涉及具有任意数量的存储器或存储单元以及跨任意数量的存储单元或卷发生的任意数量的应用和进程的任何计算机系统。本文所公开的主题的各方面可应用于具有部署在网络环境中的具有远程或本地存储的服务器计算机和客户计算机的环境。本文所公开的主题的各方面也可应用于具有编程语言功能性、解释和执行能力的独立计算设备。
本文所述的各种技术可结合硬件或软件,或在适当时以其组合来实现。由此,本文所公开的方法和装置或其特定方面或部分可采取包含在诸如软盘、CD-ROM、硬盘驱动器或任何其他机器可读存储介质等有形介质中的程序代码(即,指令)的形式,其中当程序代码被加载到诸如计算机等机器内并由其执行时,该机器成为用于实现本文所公开的主题的各方面的装置。如此出所用的,术语“机器可读存储介质”应被用来排除提供(即储存和/或传输)任何形式的传播信号的任何机制。在程序代码在可编程计算机上执行的情况下,计算设备通常将包括处理器、该处理器可读的存储介质(包括易失性和非易失性的存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备。可例如通过使用数据处理API等来利用域专用编程模型各方面的创建和/或实现的一个或多个程序可用高级过程语言或面向对象的编程语言来实现以与计算机系统通信。然而,如果需要,该程序可以用汇编语言或机器语言来实现。在任何情形中,语言可以是编译语言或解释语言,且与硬件实现相结合。
尽管用结构特征和/或方法动作专用的语言描述了本发明主题,但应当理解,所附权利要求书中定义的主题不必限于以上所描述的具体特征或动作。更确切而言,以上所描述的具体特征和动作是作为实现权利要求的示例形式公开的。

Claims (15)

1.一种计算设备,包括:
处理器;
被连接到所述处理器的存储器,所述处理器被配置成:
提供程序模块,所述程序模块使用轻量级采样策略来收集用于在生产环境中执行的应用的主要性能数据,所述主要性能数据包括来自所述应用的执行的数据;
分析所述主要性能数据以标识关键线程,所述关键线程包括运行调用位点的线程,所述调用位点导致所述应用的性能减速;
使用调用图二叉树来分析所述关键线程的调用堆栈模式;以及
提供包括在所述生产环境中执行的所述应用的调试信息的分析结果。
2.根据权利要求1所述的计算设备,其特征在于,所述轻量级采样策略包括将数据收集代理注入到执行所述应用的进程中,数据收集模块采用对被注入到所述进程中的线程的使用。
3.根据权利要求1所述的计算设备,其特征在于,进一步包括:
将所述主要性能数据馈送到决策树模型中以标识关键线程。
4.根据权利要求1所述的计算设备,其特征在于,进一步包括:
通过对忙线程进行排序来标识在采样持续时间内的任何两个时间点之间的忙线程。
5.一种方法,包括将计算设备的处理器配置成:
接收用于生产应用的自动化调试的主要性能数据,所述主要性能数据包括来自所述生产应用的执行的数据,
分析所述主要性能数据以标识关键线程,所述关键线程包括运行调用位点的线程,所述调用位点导致所述生产应用的性能减速;
使用调用图前缀二叉树分析所述关键线程的调用堆栈模式;以及
提供分析结果。
6.根据权利要求5所述的方法,其特征在于,进一步包括:
通过对忙线程进行排序来标识在采样持续时间内的任何两个时间点之间的忙线程。
7.根据权利要求5所述的方法,其特征在于,进一步包括:
使用基于决策树的模型来标识所述关键线程。
8.根据权利要求5所述的方法,其特征在于,进一步包括:
使用轻量级采样收集所述主要性能数据包括:
创建到所述生产应用在其中执行的进程的句柄,
将线程注入到所述进程中,
将数据收集代理注入到所述进程中以收集所述主要性能数据。
9.一种计算设备,包括:
处理器;
存储器;
所述存储器被连接到所述处理器;所述处理器被配置成:
接收用于生产应用的自动化调试的主要性能数据,所述主要性能数据包括来自所述生产应用的执行的数据,
分析所述主要性能数据以标识关键线程,所述关键线程包括运行调用位点的线程,所述调用位点导致所述生产应用的性能减速;
使用调用图二叉树来分析所述关键线程的调用堆栈模式;以及
提供标识与性能减速相关联的调用位点的分析结果。
10.根据权利要求9所述的计算设备,其特征在于,所述处理器被进一步配置成:
使用基于决策树的模型来标识所述关键线程。
11.根据权利要求9所述的计算设备,其特征在于,所述处理器被进一步配置成:
提供显示忙线程排序的CPU利用率视图。
12.根据权利要求9所述的计算设备,其特征在于,所述处理器被进一步配置成:
提供标识热点的调用堆栈模式视图。
13.根据权利要求9所述的计算设备,其特征在于,所述处理器被进一步配置成:
提供关键线程数据。
14.一种具有指令的计算机可读存储介质,当所述指令被执行时使得机器执行如权利要求5-8中任一权利要求所述的方法。
15.一种计算机系统,包括用于执行如权利要求5-8中任一权利要求所述的方法的装置。
CN201680089139.5A 2016-09-09 2016-09-09 用于生产应用的自动化性能调试的方法和计算设备 Active CN109716730B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2016/098516 WO2018045545A1 (en) 2016-09-09 2016-09-09 Automated performance debugging of production applications

Publications (2)

Publication Number Publication Date
CN109716730A CN109716730A (zh) 2019-05-03
CN109716730B true CN109716730B (zh) 2021-10-22

Family

ID=61562537

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680089139.5A Active CN109716730B (zh) 2016-09-09 2016-09-09 用于生产应用的自动化性能调试的方法和计算设备

Country Status (4)

Country Link
US (1) US10915425B2 (zh)
EP (1) EP3510747B1 (zh)
CN (1) CN109716730B (zh)
WO (1) WO2018045545A1 (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10514890B2 (en) * 2017-11-15 2019-12-24 Accenture Global Solutions Limited Test case and data selection using a sampling methodology
US11709939B2 (en) * 2018-05-04 2023-07-25 New York University Anomaly detection in real-time multi-threaded processes on embedded systems and devices using hardware performance counters and/or stack traces
CN110609759B (zh) * 2018-06-15 2021-09-14 华为技术有限公司 一种故障根因分析的方法及装置
US10965663B2 (en) * 2018-07-26 2021-03-30 Microsoft Technology Licensing, Llc Troubleshooting single sign on failure
US10970055B2 (en) * 2018-08-21 2021-04-06 International Business Machines Corporation Identifying software and hardware bottlenecks
CN109176601B (zh) * 2018-09-21 2022-04-29 北京云迹科技股份有限公司 用于机器人的开门测试方法及装置
CN109697456B (zh) * 2018-11-21 2021-02-09 华为技术有限公司 业务分析方法、装置、设备及存储介质
CN110806931B (zh) * 2019-10-31 2022-11-22 上海依图网络科技有限公司 分布式服务的调用链路跟踪实现方法、装置及电子设备
CN113297052B (zh) * 2020-02-21 2024-04-26 腾讯科技(深圳)有限公司 应用程序的卡顿事件定位方法、装置、存储介质和设备
CN113810341B (zh) * 2020-06-12 2023-08-22 武汉斗鱼鱼乐网络科技有限公司 一种识别目标网络团体的方法及系统、存储介质、设备
US11599342B2 (en) * 2020-09-28 2023-03-07 Red Hat, Inc. Pathname independent probing of binaries
JP7011696B1 (ja) 2020-10-08 2022-01-27 レノボ・シンガポール・プライベート・リミテッド 電子機器、制御方法、及び学習済みモデル
US11928518B2 (en) 2021-08-10 2024-03-12 Kyndryl, Inc. Noisy-neighbor detection and remediation
CN113934475B (zh) * 2021-08-10 2022-09-06 荣耀终端有限公司 应用调用的分析方法及电子设备
US12093389B2 (en) 2022-03-14 2024-09-17 Microsoft Technology Licensing, Llc Data traffic characterization prioritization
CN114880159B (zh) * 2022-07-13 2022-09-13 腾讯科技(深圳)有限公司 数据处理方法、装置、设备及存储介质
CN118227431A (zh) * 2022-12-19 2024-06-21 华为技术有限公司 性能分析方法、可读存储介质、程序产品及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008058953A2 (en) * 2006-11-16 2008-05-22 International Business Machines Corporation A method for controlling thread work production
CN101364098A (zh) * 2008-09-12 2009-02-11 南京航空航天大学 一种将梯形图转换为指令表程序及解释执行的方法与系统
CN101630285A (zh) * 2009-08-07 2010-01-20 华南理工大学 一种应用于嵌入式系统的软件性能测试方法
US8086910B1 (en) * 2010-06-29 2011-12-27 Alcatel Lucent Monitoring software thread execution
CN102411534A (zh) * 2011-07-25 2012-04-11 中国科学院声学研究所 一种断点调试方法和调试器

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2001249451A1 (en) 2000-03-27 2001-12-11 Accenture Llp System, method, and article of manufacture for an automated scripting solution for enterprise testing
US8473922B2 (en) 2001-09-19 2013-06-25 Hewlett-Packard Development Company, L.P. Runtime monitoring in component-based systems
US7827535B2 (en) 2003-12-10 2010-11-02 Oracle International Corporation Application performance tuning server-side component
US7526759B2 (en) 2005-04-19 2009-04-28 International Business Machines Corporation Debugging prototyped system solutions in solution builder wizard environment
US8336033B2 (en) * 2007-03-30 2012-12-18 Sap Ag Method and system for generating a hierarchical tree representing stack traces
US8286134B2 (en) * 2008-07-15 2012-10-09 International Business Machines Corporation Call stack sampling for a multi-processor system
US8307246B2 (en) * 2008-10-29 2012-11-06 Aternity Information Systems Ltd. Real time monitoring of computer for determining speed of various processes
US9632909B2 (en) * 2008-12-16 2017-04-25 Microsoft Technology Licensing, Llc Transforming user script code for debugging
US7996722B2 (en) * 2009-01-02 2011-08-09 International Business Machines Corporation Method for debugging a hang condition in a process without affecting the process state
US8694519B2 (en) 2009-03-03 2014-04-08 Empire Technology Development, Llc Real estate analysis system
CN101615136B (zh) * 2009-06-26 2012-07-18 中兴通讯股份有限公司 linux环境下快速转换调用堆栈地址的系统及方法
US8099631B2 (en) 2009-07-17 2012-01-17 Sap Ag Call-stacks representation for easier analysis of thread dump
US8938533B1 (en) * 2009-09-10 2015-01-20 AppDynamics Inc. Automatic capture of diagnostic data based on transaction behavior learning
US8584098B2 (en) * 2009-12-04 2013-11-12 Sap Ag Component statistics for application profiling
US8756586B2 (en) 2009-12-10 2014-06-17 Tata Consultancy Services Limited System and method for automated performance testing in a dynamic production environment
US8627317B2 (en) * 2010-03-25 2014-01-07 International Business Machines Corporation Automatic identification of bottlenecks using rule-based expert knowledge
US8839209B2 (en) 2010-05-12 2014-09-16 Salesforce.Com, Inc. Software performance profiling in a multi-tenant environment
US9274919B2 (en) 2011-04-29 2016-03-01 Dynatrace Software Gmbh Transaction tracing mechanism of distributed heterogenous transactions having instrumented byte code with constant memory consumption and independent of instrumented method call depth
CN102685180B (zh) * 2011-10-18 2015-07-08 国网电力科学研究院 一种面向云计算的网络安全预警方法
CN102789702B (zh) 2011-12-08 2015-03-25 南京奥派信息技术有限责任公司 基于云计算的网络实践教学平台
CN102624879A (zh) 2012-02-28 2012-08-01 浪潮电子信息产业股份有限公司 一种云计算数据应用终端
CN102857560B (zh) 2012-08-15 2016-04-20 华数传媒网络有限公司 一种面向多业务应用的云存储数据分布方法
US9330119B2 (en) * 2013-04-11 2016-05-03 Oracle International Corporation Knowledge intensive data management system for business process and case management
US9569260B2 (en) * 2013-05-31 2017-02-14 Microsoft Technology Licensing, Llc Efficient priority-aware thread scheduling
US10289411B2 (en) * 2013-11-18 2019-05-14 Microsoft Technology Licensing, Llc Diagnosing production applications
CN105242962B (zh) * 2015-11-24 2018-07-03 无锡江南计算技术研究所 基于异构众核的轻量级线程快速触发方法
CN106936793B (zh) * 2015-12-30 2020-03-17 腾讯科技(深圳)有限公司 一种信息拦截处理方法及终端

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008058953A2 (en) * 2006-11-16 2008-05-22 International Business Machines Corporation A method for controlling thread work production
CN101364098A (zh) * 2008-09-12 2009-02-11 南京航空航天大学 一种将梯形图转换为指令表程序及解释执行的方法与系统
CN101630285A (zh) * 2009-08-07 2010-01-20 华南理工大学 一种应用于嵌入式系统的软件性能测试方法
US8086910B1 (en) * 2010-06-29 2011-12-27 Alcatel Lucent Monitoring software thread execution
CN102411534A (zh) * 2011-07-25 2012-04-11 中国科学院声学研究所 一种断点调试方法和调试器

Also Published As

Publication number Publication date
US10915425B2 (en) 2021-02-09
CN109716730A (zh) 2019-05-03
US20190196937A1 (en) 2019-06-27
EP3510747A1 (en) 2019-07-17
WO2018045545A1 (en) 2018-03-15
EP3510747B1 (en) 2021-09-08
EP3510747A4 (en) 2020-04-01

Similar Documents

Publication Publication Date Title
CN109716730B (zh) 用于生产应用的自动化性能调试的方法和计算设备
US11240126B2 (en) Distributed tracing for application performance monitoring
US11308092B2 (en) Stream processing diagnostics
US9590880B2 (en) Dynamic collection analysis and reporting of telemetry data
US8726240B2 (en) Capturing replayable information at software defect locations in a multi-tenant environment
US8627317B2 (en) Automatic identification of bottlenecks using rule-based expert knowledge
US20200379892A1 (en) Automated determination of operating parameter configurations for applications
US8839209B2 (en) Software performance profiling in a multi-tenant environment
CN104794047B (zh) 性能指标的相关性分析的方法和系统
US10346283B2 (en) Dynamically identifying performance anti-patterns
US10756959B1 (en) Integration of application performance monitoring with logs and infrastructure
TW201610703A (zh) 雲端中之分散式串流處理
US11036608B2 (en) Identifying differences in resource usage across different versions of a software application
US11526413B2 (en) Distributed tracing of huge spans for application and dependent application performance monitoring
US8954311B2 (en) Arrangements for extending configuration management in large IT environments to track changes proactively
US10528456B2 (en) Determining idle testing periods
CN113836237A (zh) 对数据库的数据操作进行审计的方法及装置
Merenstein et al. {CNSBench}: A cloud native storage benchmark
US20200327037A1 (en) Software application performance analyzer
US12061539B2 (en) System and method for anomaly detection and root cause automation using shrunk dynamic call graphs
US11755453B1 (en) Performing iterative entity discovery and instrumentation
US11700192B2 (en) Apparatuses, methods, and computer program products for improved structured event-based data observability
Maplesden et al. Performance analysis using subsuming methods: An industrial case study
US12072783B1 (en) Performing iterative entity discovery and instrumentation
US11734116B1 (en) Infrastructure for automating rollout of database changes

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant