对调用堆栈和上下文数据的自动相关和分析的制作方法

文档序号:9422716阅读:218来源:国知局
对调用堆栈和上下文数据的自动相关和分析的制作方法
【专利说明】对调用堆栈和上下文数据的自动相关和分析
[0001]
[0002]在当前的集成开发环境(IDE)中,调查性能问题是一种要求跟踪操作的“轨迹”或获得操作的“简况”,然后审查包容性的和独占性的CPU样本来确定性能受影响之处的人工过程。这种人工分析是耗时的,对于当前性能工具而言存在大学习曲线。
[0003]概沭
[0004]提供本概述以便以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
[0005]各实施例允许用户定义被用来分析调用堆栈和上下文数据的事件场景。被延迟的场景通过在延迟期间每Ims采集的CPU样本的聚集调用堆栈来标记并报告给用户。这允许用户标识哪些方法使用了某一延迟的大部分时间。事件分析工具允许通过在延迟发生时将延迟可视化而不要求事后分析来快速探究响应性问题。
[0006]各实施例自动地将一个轨迹内的事件开始和停止时间关联到设置文件中定义的场景。当接收开始和结束时间所经过的时间超过场景限制时,检测到延迟。为用户列出受到该延迟影响的方法或线程。
[0007]延迟的图形表示被实时提供,并允许在处理之后用户立即从延迟列表快速地导航到关于某一线程的受影响活动/场景的调用堆栈。调用堆栈是从延迟开始到结束每Ims采集的CPU样本的聚集视图。
[0008]通过突出显示某一方法中或从该方法调用的任何方法中花费比整个延迟时间的20 %更多的时间的所有框架来确定该场景中的最热路径。例如,花费比总延迟时间的20 %更多的时间的全部方法被突出显示。20%包括在某一方法所调用的其他方法中花费的任何时间。然而,如果被调用的方法花费少于总延迟时间的20%,则该被调用的方法不被标记。诸如模块加载、盘文件读取等其他资产信息以及延迟开始和结束之间发生的其他事件也对用户可用。可使用用户选择的过滤准则来按模块过滤这些结果,以确切地标识哪些延迟与调用堆栈中所选代码相关联。
[0009]附图简沐
[0010]为了进一步阐明本发明的各实施例的以上和其他优点和特征,将参考附图来呈现本发明的各实施例的更具体的描述。可以理解,这些附图只描绘本发明的典型实施例,因此将不被认为是对其范围的限制。本发明将通过使用附图用附加特征和细节来描述和解释,附图中:
[0011]图1例示出与事件分析工具相关联的各种组件的职责范围以及各组件所交换的
?目息O
[0012]图2是例示出根据一个实施例的用于分析事件的方法或过程的流程图。
[0013]图3是用于记录并显示某一进程中的延迟的事件分析工具的示例显示画面。
[0014]图4是示出关于所选延迟的调用堆栈的事件分析工具的示例显示画面。
[0015]图5是示出关于所选延迟的上下文信息的事件分析工具的示例显示画面。
[0016]图6例示出允许用户从事件分析工具中编辑已有场景601的界面。
[0017]图7例示出用于事件分析工具、延迟跟踪器工具或IDE的一种合适的计算和联网环境的示例。
[0018]详细描沐
[0019]各种实施例涉及一种自动关联一个轨迹内的事件开始和停止时间并向用户提供受影响的活动和场景的列表的事件分析工具。事件开始和停止时间对应于可在设置文件中定义的或可由用户提供的各种场景。事件分析工具可使用延迟跟踪器,例如一种用于跟踪在对要求即时响应的用户输入进行响应时的延迟的机制。在一个实施例中,即时延迟跟踪器(即IDT)库被用来跟踪用户动作的响应时间的延迟,使得延迟源可被标识以及补救。即时延迟跟踪器工具的一示例被描述于题为“Immediate Delay Tracker Tool”(即时延迟跟踪器工具)的2011年9月23日提交的待决美国专利申请号13/241229中。在其他实施例中,可与本文所述的事件分析工具一起使用其他延跟踪器系统。这一延迟跟踪器系统的一个不例被描述于题为“User Interface Responsiveness Monitor”(用户界面响应性监视器)的2011年9月23日提交的待决美国专利申请号13/241249中。
[0020]IDT标识并记录某一应用执行期间发生的延迟。IDT寻找某一 IDE应用引起的一系列事件来标识设置文件或数据结构中定义的场景。当某一场景一一即接收特定顺序的事件所经过的时间长度一一超过其可允许的阈值时,“延迟”被标识出。延迟通常以CPU滴答(CPU tick)计数来度量,然后在被呈现给用户时或在与设置文件中的限制进行比较时被转换成毫秒。设置文件或数据结构包含关于定义某一场景的一系列事件的信息,并包括该场景被认为是延迟的毫秒阈值。本文所述的事件分析工具(在一个实施例中称为“赛道”(RaceTrack))从用户接收延迟信息,例如场景定义,并将该延迟信息提供给IDT库。该事件分析工具使用IDT来监听由受到观察的应用生成的事件。通过以图形和/或列表表示来呈现延迟信息,该事件分析工具在延迟被发现时进行报告。
[0021]除了跟踪延迟之外,IDT库还可提供一组件来记录内核、运行时(如CLR运行时提供者)以及运行终了(rundown)轨迹(如CLR运行终了),然后将该信息合并到单个ETL (提取、变换和加载)日志文件中。当一延迟被检测到时以及当IDT库结束记录时,IDT库生成事件。该事件分析工具订阅这些事件来生成示出哪些延迟被发现了的时间线或列表。该事件分析工具允许用户开始记录内核ETL轨迹文件,该文件包含CPU样本、上下文切换、盘10、模块加载等。CPU样本可以是例如每Ims从应用采集的调用堆栈。用户能够看到实况发生的延迟,并可在延迟发生时的任何时间停止记录。一旦用户停止记录,轨迹就被处理和分析。内核、运行时以及运行终了轨迹被合并在一起,符号被下载和解析。
[0022]事件分析工具实时提供了延迟的图形表示,并允许在处理之后用户立即从延迟列表快速地导航到关于某一线程的受影响活动/场景的调用堆栈。该堆栈是在延迟期间每Ims采集的CPU样本的聚集视图。
[0023]以图形表示以及简单列表向用户呈现所选场景期间遇到的延迟的列表。该图形表示绘制应用的执行的时间线,并例如通过柱形条长度或其他指示来例示出每个操作的持续时间,使得用户能够快速地看到哪个操作花费最长时间来执行。
[0024]事件分析工具允许通过从时间线或延迟列表进行单次点击而快速探究应用以及导航到对每个延迟负责的调用堆栈。在某一轨迹已被处理之后,用户可从图表或列表中点击某一延迟并看到落在关于该延迟的事件序列的开始和结束时间戳之间的所有CPU样本和上下文切换的聚集。在某些实施例中,当某些样本引起了用户所看到的延迟时,事件分析工具从IDE的主线程过滤出这些样本。
[0025]聚集树可被呈现来示出该延迟执行期间调用堆栈中作出的所有不同分叉,以及指示出每个框架中相对于总延迟时间花费了多少时间。聚集调用堆栈示出了在延迟期间大部分时间花费在何处。
[0026]在其他实施例中,事件分析工具通过突出显示某一方法中或从该方法调用的任何方法中花费比整个延迟时间的20%更多的时间的所有框架来突出显示场景中的“最热”路径。花费比全部延迟时间的20%更多的时间的全部方法被突出显示。20%的时间包括在该方法所调用的其他方法中花费的任何时间。然而,如果被调用的方法的时间少于总延迟时间的20%,则该被调用的方法不被标记。
[0027]事件分析工具示出诸如加载的组件、哪个键被键击、模块加载之类的资产信息,以及延迟的开始和结束之间发生的其他事件。当事件分析工具接收到诸如模块加载和程序包加载之类的某一事件时,它提取信息来确定哪个模块或组件被加载。类似地,当某一键按压事件被接收到时,该工具解析出关于什么键被按压的信息。
[0028]用户可选择某一延迟或其他准则来过滤由事件分析工具显示的事件的列表,使得仅那些在延迟的跨度期间发生的事件被示出。这向用户示出诸如加载的组件或被键击的键之类的所有资产,以及涉及所选延迟的事件。
[0029]为了进一步为用户简化延迟分析,事件分析工具允许按某一操作期间开始执行的模块来过滤延迟。延迟可按模块来过滤以确切地标识出哪个延迟在其堆栈中具有所选代码。这在用户关注于特定模块或代码时帮助缩小调查范围。仅那些包含所关心的模块的延迟将被显示给用户,从而减少了必须筛选若干无关延迟的开销。
[0030]图1例示出与事件分析工具101相关联的各种组件的职责范围以及各组件所交换的信息。IDE 102向诸如IDT 104之类的延迟跟踪器提供事件103。事件103可包括例如代码标记或测量块。鉴于设置文件或用户配置文件中定义的场景,IDT 104监听事件103。IDT 104标记任何场景中观察到的延迟并记录ETL文件。
[0031]在某一
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1