具有可配置原点定义的应用执行路径跟踪的方法、系统和介质转让专利

申请号 : CN201480062439.5

文献号 : CN105765528B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : A·G·古纳雷斯B·B·巴里尔C·D·加勒特

申请人 : 微软技术许可有限责任公司

摘要 :

跟踪系统可定义用于整合和比较被跟踪应用内的踪迹路径的原点。跟踪器可定义可被传递遍历跟踪路径的标识符,且该标识符可被定义为捕捉踪迹的具体实例或实例组。踪迹可被整合为程序流的图形表示。标识符可跨各种边界传递,包括函数边界、库边界、应用边界、设备边界。分析系统可整合或聚集具有相同标识符的踪迹结果,并可用图形呈现这种数据或使用所标识的数据集提供统计数据。

权利要求 :

1.一种在至少一个计算机处理器上执行的用于应用执行路径跟踪的方法,所述方法包括:评估定义用于跟踪的条件的规则;

在到第一函数的第一执行路径中执行应用,所述第一函数为所述应用的一部分;

基于所述规则,将所述第一执行路径标识为满足所述条件并为所述第一执行路径指派第一标识符;

在执行所述第一函数的同时收集第一踪迹数据并将所述第一标识符与所述第一踪迹数据相关联;

执行所述应用至第二函数的第一实例并确定所述第二函数的所述第一实例是所述第一执行路径的一部分并在执行所述第二函数的所述第一实例的同时收集第二踪迹数据并将所述第一标识符与所述第二踪迹数据相关联;以及传送所述第一踪迹数据和所述第二踪迹数据。

2.如权利要求1所述的方法,其特征在于,还包括:执行所述应用至所述第二函数的第二实例并确定所述第二函数的所述第二实例不是所述第一执行路径的一部分且在执行所述第二函数的所述第二实例的同时不收集踪迹数据。

3.如权利要求2所述的方法,其特征在于,还包括:用被包装的跟踪器函数包装所述第一函数并将所述第一标识符存储在所述被包装的跟踪器函数中。

4.如权利要求3所述的方法,其特征在于,还包括:通过所述被包装的跟踪器函数的存在来确定所述第二函数的所述第一实例是所述第一执行路径的一部分。

5.如权利要求1所述的方法,其特征在于,所述规则包含对到所述第一函数的输入值的至少一个引用。

6.如权利要求5所述的方法,其特征在于,所述第一标识符包括所述输入值的至少一部分。

7.如权利要求1所述的方法,其特征在于,还包括:接收所述第一踪迹数据和所述第二踪迹数据;

确定所述第一踪迹数据和所述第二踪迹数据包括所述第一标识符并从所述第一踪迹数据和所述第二踪迹数据生成至少一个统计数据。

8.一种用于应用执行路径跟踪的系统,包括:至少一个处理器;

在所述至少一个处理器上执行的执行环境,所述执行环境执行第一应用;

跟踪器,所述跟踪器在所述第一应用执行的同时收集观察,所述跟踪器进一步:评估定义用于跟踪的条件的规则;

确定所述执行已进行到第一函数;

基于所述规则,将第一执行路径标识为满足所述条件并为所述第一执行路径指派第一标识符;

在执行所述第一函数的同时收集第一踪迹数据并将所述第一标识符与所述第一踪迹数据相关联;

执行所述应用至第二函数的第一实例并确定所述第二函数的所述第一实例是所述第一执行路径的一部分并在执行所述第二函数的所述第一实例的同时收集第二踪迹数据并将所述第一标识符与所述第二踪迹数据相关联;以及传送所述第一踪迹数据和所述第二踪迹数据。

9.如权利要求8所述的系统,其特征在于,所述规则包括对到所述第一函数的输入值的至少一个引用。

10.如权利要求9所述的系统,其特征在于,所述规则包括标识所述第一执行路径的第一条件以及标识第二执行路径的第二条件。

11.如权利要求10所述的系统,其特征在于,所述第二执行路径在所述规则内用第二标识符来标识。

12.如权利要求11所述的系统,其特征在于,所述跟踪器进一步:当执行所述第一函数时标识所述第二执行路径并在执行所述第一函数的同时收集第三踪迹数据并将所述第二标识符与所述第三踪迹数据相关联。

13.如权利要求12所述的系统,其特征在于,进一步包括:分析引擎,所述分析引擎:

接收所述第一踪迹数据和所述第二踪迹数据;

确定所述第一踪迹数据和所述第二踪迹数据包括第一标识符并从所述第一踪迹数据和所述第二踪迹数据生成至少一个统计数据。

14.如权利要求13所述的系统,其特征在于,进一步包括:可视化引擎,所述可视化引擎:

接收所述第一踪迹数据和所述第二踪迹数据;

生成示出所述至少一个统计数据的可视化。

15.一种在至少一个处理器上执行的用于应用执行路径跟踪的方法,所述方法包括:显示应用的拓扑图,所述应用包括多个组件,所述拓扑图是从通过监视所述应用以及标识踪迹数据内的所述多个组件而采集的踪迹数据生成的并包括所述多个组件的表示;

接收来自用户输入设备的第一选择,所述第一选择包括在所述拓扑图内的第一组件;

接收第二选择,所述第二选择包括用于跟踪穿过所述第一组件的执行路径的第一条件;以及将针对所述第一组件的所述第一条件作为与所述第一组件相关联的跟踪器规则来存储;

其中所述跟踪器规则可指定针对给定执行路径所期望的采样。

16.如权利要求15所述的方法,其特征在于,还包括:显示所述应用的第二拓扑图,所述第二拓扑图包括至少部分根据所述跟踪器规则组织的踪迹数据。

17.如权利要求16所述的方法,其特征在于,所述跟踪器规则被跟踪器消费来对所述应用的至少一个执行路径分类。

18.如权利要求17所述的方法,其特征在于,所述跟踪器规则被跟踪器消费来将执行路径分类为多个分类。

19.如权利要求15所述的方法,其特征在于,还包括:呈现包括多个分类建议的用户选择界面,所述第二选择是从所述多个分类建议中选择的。

20.如权利要求19所述的方法,其特征在于,还包括:分析所述应用的跟踪器数据以确定所述第一组件的多个输入值;以及将所述多个输入值的至少一子集作为所述多个分类建议来呈现。

21.如权利要求19所述的方法,其特征在于,还包括:分析所述应用的跟踪器数据来确定根据使用频率组织的多个执行路径;以及将所述多个执行路径的至少一子集作为所述多个分类建议来呈现。

22.如权利要求19所述的方法,其特征在于,还包括:分析所述应用的跟踪器数据来确定根据检测到的错误组织的多个执行路径;以及将所述多个执行路径的至少一子集作为所述多个分类建议来呈现。

23.如权利要求19所述的方法,其特征在于,还包括:分析所述应用的跟踪器数据来确定根据性能度量组织的多个执行路径;以及将所述多个执行路径的至少一子集作为所述多个分类建议来呈现。

24.一种用于应用执行路径跟踪的系统,包括:至少一个处理器;

包括从跟踪应用采集的踪迹数据的踪迹数据库;

在包括所述至少一个处理器的设备上呈现的交互式用户界面,所述交互式用户界面:显示应用的拓扑图,所述应用包括多个组件,所述拓扑图是通过分析所述踪迹数据构建的并包括所述多个组件的表示;

接收来自用户输入设备的第一选择,所述第一选择包括在所述拓扑图内的第一组件;

接收第二选择,所述第二选择包括用于跟踪穿过所述第一组件的执行路径的第一条件;以及将针对所述第一组件的所述第一条件作为与所述第一组件相关联的跟踪器规则来存储;

其中所述跟踪器规则可指定针对给定执行路径所期望的采样。

25.如权利要求24所述的系统,其特征在于,所述交互式用户界面进一步:呈现包括多个分类建议的用户选择界面,所述第二选择是从所述多个分类建议中选择的。

26.如权利要求25所述的系统,其特征在于,进一步包括:分析引擎,所述分析引擎分析所述应用的跟踪器数据以确定所述第一组件的多个输入值;

所述交互式用户界面进一步:

将所述多个输入值的至少一子集作为所述多个分类建议来呈现。

27.如权利要求26所述的系统,其特征在于,所述分析引擎从根据使用频率分类的多个执行路径确定所述多个输入值。

28.如权利要求26所述的系统,其特征在于,所述分析引擎从根据检测到的错误分类的多个执行路径确定所述多个输入值。

29.如权利要求26所述的系统,其特征在于,所述分析引擎从根据性能度量分类的多个执行路径确定所述多个输入值。

30.一种在至少一个计算机处理器上执行的用于应用执行路径跟踪的方法,所述方法包括:跟踪应用;

接收针对穿过第一函数的执行路径的第一分类的第一规则,所述第一规则定义第一跟踪采样频率;

当执行所述应用时:

在执行多个所述执行路径的同时检测所述第一函数;

通过根据所述第一跟踪采样频率选择所述执行路径的第一子集来跟踪所述多个执行路径,并且引起所述执行路径的所述第一子集中的每个执行路径将被跟踪;

其中所述跟踪包括针对所述执行路径的所述第一子集中的每个执行路径创建标识符,所述执行路径的标识符与踪迹数据相关联,并且所述标识符被传递到所述执行路径中的每个执行路径中的后续函数。

31.如权利要求30所述的方法,其特征在于,所述标识符唯一标识所述执行路径的每个实例。

32.如权利要求30所述的方法,其特征在于,所述标识符用公共标识符标识所述执行路径中的每个执行路径。

33.如权利要求30所述的方法,其特征在于,还包括:对照所述第一分类来评估所述执行路径中的每个执行路径以创建执行路径的所述第一子集,执行路径的所述第一子集匹配所述第一分类。

34.如权利要求33所述的方法,其特征在于,所述第一分类由传递到所述第一函数的至少一个输入定义。

35.如权利要求33所述的方法,其特征在于,还包括:接收针对穿过所述第一函数的执行路径的第二分类的第二规则,所述第二规则定义第二跟踪采样频率;

在执行所述应用时,对照所述第二分类来评估所述执行路径中的每个执行路径来创建执行路径的第二子集,执行路径的所述第二子集匹配所述第一分类;以及引起所述执行路径的所述第二子集被根据所述第二跟踪采样频率跟踪。

36.如权利要求35所述的方法,其特征在于,执行路径的所述第一子集不与执行路径的所述第二子集重叠。

37.如权利要求35所述的方法,其特征在于,执行路径的所述第一子集具有与执行路径的所述第二子集公共的至少第一执行路径。

38.一种用于应用执行路径跟踪的系统,包括:至少一个处理器;

在所述至少一个处理器上执行的执行环境,所述执行环境执行应用;

跟踪器,所述跟踪器:

接收针对穿过第一函数的执行路径的第一分类的第一规则,所述第一规则定义第一跟踪采样频率;

在执行多个所述执行路径的同时检测所述第一函数;

通过根据所述第一跟踪采样频率选择所述执行路径的第一子集来跟踪所述多个执行路径,并且引起所述执行路径的所述第一子集中的每个执行路径被跟踪;

其中所述跟踪器进一步:针对所述执行路径的所述第一子集中的每个执行路径创建标识符,所述执行路径的标识符与踪迹数据相关联,并且所述标识符被传递到所述执行路径中的每个执行路径中的后续函数。

39.如权利要求38所述的系统,其特征在于,所述标识符唯一标识所述执行路径的每个实例。

40.如权利要求38所述的系统,其特征在于,所述标识符用公共标识符标识所述执行路径中的每个执行路径。

41.如权利要求38所述的系统,其特征在于,所述跟踪器进一步:对照所述第一分类来评估所述执行路径中的每个执行路径以创建执行路径的所述第一子集,执行路径的所述第一子集匹配所述第一分类。

42.如权利要求41所述的系统,其特征在于,所述第一分类由传递到所述第一函数的至少一个输入定义。

43.如权利要求41所述的系统,其特征在于,所述跟踪器进一步:接收针对穿过所述第一函数的执行路径的第二分类的第二规则,所述第二规则定义第二跟踪采样频率;

在执行所述应用时,对照所述第二分类来评估所述执行路径中的每个执行路径来创建执行路径的第二子集,执行路径的所述第二子集匹配所述第一分类;以及引起所述执行路径的所述第二子集被根据所述第二跟踪采样频率跟踪。

44.如权利要求43所述的系统,其特征在于,执行路径的所述第一子集不与执行路径的所述第二子集重叠。

45.如权利要求43所述的系统,其特征在于,执行路径的所述第一子集具有与执行路径的所述第二子集公共的至少第一执行路径。

46.一种具有指令的计算机可读存储介质,当所述指令被执行时使得机器执行如权利要求1-7、15-23、30-37中任一权利要求所述的方法。

47.一种计算机系统,包括用于执行如权利要求1-7、15-23、30-37中任一权利要求所述的方法的装置。

说明书 :

具有可配置原点定义的应用执行路径跟踪的方法、系统和

介质

[0001] 相关申请的交叉引用
[0002] 本申请要求于2013年11月13日提交的题为“Application Execution Path Tracing with Configurable Origin Definition(具有可配置原点定义的应用执行路径跟踪)”的美国专利申请序列号61/903,775、于2013年11月13日提交的题为“User Interface for Selecting Tracing Origins for Aggregating Classes of Trace Data(用于选择用于聚集跟踪数据类的跟踪原点的用户界面)”的美国专利申请序列号61/903,781、和于2013年11月13日提交的题为“Tracing Origin Rules for Minimizing Trace Data Collection by Sampling(用于通过采样来最小化跟踪数据收集的跟踪原点规则)”的美国专利申请序列号61/903,786的优先权和权益,藉此通过援引将其全部公开和教导纳入于此。
[0003] 背景
[0004] 跟踪是用于监视应用执行时该应用的操作(且有时候还监视性能)的机制。当应用在生产或人工加载下执行时,应用可执行穿过可执行代码的许多不同序列或路径,并可生成大量的跟踪器数据。
[0005] 概述
[0006] 跟踪系统可定义用于整合和比较被跟踪应用内的踪迹路径的原点。跟踪器可定义可被传递遍历跟踪路径的标识符,且该标识符可被定义为捕捉踪迹的具体实例或实例组。踪迹可被整合为程序流的图形表示。标识符可跨各种边界传递,包括函数边界、库边界、应用边界、设备边界。分析系统可整合或聚集具有相同标识符的踪迹结果,并可用图形呈现这种数据或使用所标识的数据集提供统计数据。
[0007] 用户界面可选择应用的结构的图形表示内的一位置以标识跟踪操作的原点。原点可定义标识符可被插入到被跟踪应用内的位置,且标识符可与在特定条件下收集的跟踪器数据相关联。规则集可定义用于跟踪应用的特定条件,且某些规则可包含用于指派标识符的逻辑。用户界面可以是应用的流的图形表示,且用户可从预定义选项集合中进行选择来定义可如何实现跟踪。
[0008] 跟踪系统可向跟踪路径添加标识符以标识哪些操作要收集数据,以使得其中存在标识符的那些跟踪操作可收集数据而不具有标识符的那些操作可收集受限的数据或不收集数据。标识符可使用逻辑来添加,该逻辑可引起跟踪系统采样应用的操作,而不是跟踪所有操作。采样算法可以是通用采样算法,其中特定百分比的操作可被跟踪,或可被定向为以比其它执行路径更高的速率来跟踪某些执行路径。在一些情况下,采样算法可通过分析先前的跟踪器数据来定义以标识对于更高等级跟踪而言感兴趣的那些执行路径以及可适用较低采样速率的其它执行路径。
[0009] 提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
[0010] 附图简述
[0011] 在附图中,
[0012] 图1是示出其中执行路径跟踪被使能和未被使能的拓扑图的实施例的图示。
[0013] 图2是示出具有可使用执行路径跟踪来跟踪的设备的网络环境的实施例的图示。
[0014] 图3是示出用于创建针对执行路径跟踪的规则的示例用户界面的实施例的图示。
[0015] 图4是示出用于用规则进行跟踪的方法的实施例的流程图示。
[0016] 图5是示出用于从拓扑图可视化创建规则的方法的实施例的流程图例示。
[0017] 图6是示出用于采样执行路径踪迹的方法的实施例的流程图示。
[0018] 详细描述
[0019] 具有可配置原点定义的应用执行路径跟踪
[0020] 一种计算机软件跟踪系统可被配置成跟踪个体执行路径。原点可定义应用内的一位置,在该位置处可定义用于跟踪执行路径的标识符集合。在原点处,跟踪器可创建标识符,该标识符可被跟踪器传递贯穿执行路径。跟踪器可创建具有公共标识符的跟踪器数据集,根据该跟踪器数据集可进行对跟踪器数据的统计、可视化和其它分析。
[0021] 标识符可由可在应用内的一点处评估的规则集合来定义。在一些实施例中,规则集合可针对不同的函数、库、模块、可重用软件组件、接口、事件或其它情形来定义。在被评估时,标识符可用唯一标识符或针对可表示跟踪路径的类或组的标识符来对跟踪路径分类。
[0022] 在一个用例中,标识符可被添加到跟踪数据以输入到web服务。在该示例用例中,web服务器可跨网络接口对针对网页或其它数据的请求做出响应。跟踪器可被实现以采集每个函数在web服务器应用内执行时的性能和操作数据。规则集合可在传入的web请求处被评估以标识带有针对特定用户的会话标识符的每个传入请求。当跟踪器操作时,会话标识符可与每个数据项相关联。后续踪迹数据分析器可聚集带有每个会话标识符的踪迹数据以独立地显示每个会话的统计数据。
[0023] 在示例用例中,规则集合可被修改来创建针对特定输入类的标识符,诸如创建针对特定网页请求的标识符。该网页请求的每个实例可具有相同标识符,以使得后续踪迹数据分析器可聚集针对每个特定网页的所有请求的踪迹数据。针对web服务器对各网页做出响应的方式,可生成统计、可视化或其它输出。
[0024] 用于选择用于聚集踪迹数据的类的跟踪原点的用户界面
[0025] 用户界面可显示可从中选择跟踪原点的应用结构的图形拓扑。拓扑可显示用户可从中选择的应用的函数、库、模块、或其它组件。在选择一组件后,用户可以能够定义用于聚集可从所选组件流动的踪迹数据的逻辑。
[0026] 用户界面可根据通过观察应用的操作所采集的踪迹数据来图解应用的拓扑。该图解可将应用组件显示为图形中的节点,而图形的边则图解组件间的连接。在一些情况下,这种图解可包括性能数据的表示。
[0027] 用户可从图中选择组件,随后能够定义踪迹数据可如何被聚集以用于下游操作。在原点处,跟踪器可创建标识符,该标识符可被沿着执行路径传递。后续分析可将具有共同标记的踪迹数据聚集为统计数据、图形表示或其它分析。
[0028] 用户可以能够从函数作为选项接收的输入值集合中进行选择以用于聚集踪迹数据。输入值集合可由跟踪器随时间观察,随后排序并列出给用户作为用于跟踪的可能选项。在一些情况下,用户可以能够选择个体输入值、输入值组、或其它,每个输入值用于跟踪。后续跟踪数据可根据所选的选项被聚集并呈现给用户。
[0029] 可向用户呈现用于对下游踪迹数据进行分类和聚集的其它选项。这些选项可通过分析先前采集的踪迹数据来生成,以对应用的下游行为分类。分类可标识其中例如额外的错误发生或其中其它状况可能存在的那些执行路径或条件。这些选项可允许用户配置跟踪器来收集感兴趣的踪迹数据,同时可能不跟踪可产生很少或不产生感兴趣的数据的条件。
[0030] 用于通过采样来最小化踪迹数据收集的跟踪原点规则
[0031] 跟踪系统可具有用于标记或标识踪迹数据集的规则,且这些规则可定义用于跟踪的采样机制。通过对应用的操作进行采样,跟踪器的开销影响可在生产应用中被最小化。基于在针对原点的规则集中定义的条件集,采样可在不同级别应用。规则可定义用于低频采样的条件,诸如10、100或1000中采样一次,或用于较高采样频率的其它条件。
[0032] 采样可选择性地标识要跟踪的执行序列以及跟随那些执行序列来完成。与独立采样来自应用内的个体函数的踪迹数据相比,这样的采样可更准确地反映应用中的操作。
[0033] 采样踪迹数据可在其中应用的许多操作可能是重复性的生产情形中有用。被采样的踪迹数据对于标识应用的操作中的趋势可能是有用的。在被采样的数据的情况下这些趋势可与完整数据集的情况下以近乎相同的统计准确度被标识,然而,被采样的数据消耗更少的跟踪器开销、踪迹数据存储以及分析。
[0034] 在一些实施例中,随着踪迹数据变得更加稳定,采样速率可随时间调整。对于运转良好的函数,采样频率可被降低,而对具有不良可靠性的函数可被增加。在一些实施例中,采样频率可在可检测到错误或其它异常时被增加。这种增加的采样频率可提供更准确的数据来标识其中错误或异常发生的条件。
[0035] 贯穿本说明书和权利要求书,术语“组件”被用于定义可被合并到应用中的一组可重用代码。组件可被知晓为“模块”、“库”、“子例程”或某种其它概念。出于本说明书和权利要求书的目的,这些术语被认为是同义词。
[0036] “组件”可以是按照多个应用可访问代码的方式布置的代码,即便这些应用彼此之间可能没有连接。“组件”可以是按照多个应用可访问代码的方式布置的代码,即便这些应用彼此之间可能没有连接。在一些情况下,组件可在大应用的范围内重用,而在其它情况下,组件可被共享至可在不相干且不连接的应用中使用该组件的其它应用开发者。
[0037] 许多编程语言和范例具有“组件”或库的概念,其中组件可有被定义的接口,通过该接口应用可调用并使用该组件。一些范例可允许程序员按静态方式合并组件,以使得组件代码在该应用被编写并部署之后不进一步改变。一些范例可允许动态库,其可在运行时或者甚至在执行开始之后被加载和调用。动态库可在该应用可被分发之后被更新和改变,而调用库或组件的方式可保持不变。
[0038] 组件可以源代码、中间代码、可执行代码或以某种其它形式分发。在一些情况下,组件可以是可通过应用编程接口调用的服务。
[0039] 贯穿本说明书和权利要求书,术语“组件”可被应用于单一可重用函数。这种函数可作为库、模块、或其它代码集的一部分被分发,并可反映可被分发的可重用代码的最小元素。在本说明书和权利要求书中所指的单一“组件”可以是个体应用编程接口调用或可调用子例程或函数,以及模块、库、或多个可调用函数、应用编程接口调用、或其它较小元素的其它聚集。
[0040] 在本说明书和权利要求书中,术语“剖析器”、“跟踪器”和“探测工具”可以互换地使用。这些术语指代可在应用被执行时采集数据的任何机制。在经典定义中,“探测工具”可指代可被插入可执行代码并从而改变该可执行代码的生成方法存根(stub)、挂钩(hook)或其他数据采集机制,而“剖析器”或“跟踪器”可经典地指代不可改变可执行代码的数据采集机制。对这些术语及其派生词中的任一者的使用都可蕴含或暗示彼此。例如,使用“跟踪器”的数据收集可使用“跟踪器”的经典意义中的非接触式数据收集以及用其中可执行代码可被改变的“探测工具”的经典意义的数据收集来执行。类似地,通过“探测工具”收集的数据可包括使用非接触式数据收集机制的数据收集。
[0041] 此外,通过“剖析”、“跟踪”和“探测工具”收集的数据可包括可被收集的任何类型的数据,包括诸如处理时间、吞吐量、性能计数器等等之类的与性能有关的数据。收集到的数据可包括函数名、传递的参数、存储器对象名和内容、传递的消息、消息内容、寄存器设置、寄存器内容、差错标志、中断、或与正被跟踪的应用有关的任何其他参数或其他可收集的数据。被收集的数据还可包括高速缓存未命中、垃圾收集操作、存储器分配调用、页面未命中和其它参数。
[0042] 贯穿本说明书和权利要求书,术语“执行环境”可被用于指代用于执行应用的任何类型的支持软件。执行环境的一示例是操作系统。在一些举例说明中,“执行环境”可被示为与操作系统分开。这可能是为了例示出为应用提供各支持功能的虚拟机,诸如进程虚拟机。在其他实施例中,虚拟机可以是可包括其自己的内部操作系统并可模拟整个计算机系统的系统虚拟机。贯穿本说明书和权利要求书,术语“执行环境”包括操作系统和可具有或可不具有可容易标识的“虚拟机”或其他支持软件的其他系统。
[0043] 贯穿本说明书和权利要求书,术语应用摂被用来指代可执行期望功能的软件和硬件产品的任何组合。在一些情况下,应用可以是用硬件平台操作的单一软件程序。一些应用可使用多个软件组件,每个软件组件可以是用不同语言编写的或可在不同硬件或软件执行环境内执行。在一些情况下,这些应用可跨多个设备分散并且可使用可由网络或其它通信系统连接的软件和硬件组件。
[0044] 贯穿本说明书,贯穿对附图的描述,相同的附图标记表示相同的元素。
[0045] 在本说明书和权利要求书中,对“处理器”的引用包括多个处理器。在某些情况中,可由“一处理器”执行的过程可实际上由同一设备上或不同设备上的多个处理器执行。出于本说明书和权利要求书的目的,对“处理器”的任何引用应包括可能位于同一设备上或不同设备上的多个处理器,除非另外明确指定。
[0046] 当元素被称为被“相连接”或“相耦合”时,这些元素可被直接连接或耦合在一起,或者也可存在一个或多个中间元素。相反,当元素被称为被“直接连接”或“直接耦合”时,不存在中间元素。
[0047] 本主题可被体现为设备、系统、方法、和/或计算机程序产品。因此,本主题的部分或全部可以用硬件和/或软件(包括固件、常驻软件、微码、状态机、门阵列等)来具体化。此外,本主题可以采用计算机可使用或计算机可读存储介质上的计算机程序产品的形式,介质中收录了供指令执行系统使用或结合指令执行系统一起使用的计算机可使用或计算机可读的程序代码。在本文档的上下文中,计算机可使用或计算机可读介质可以是可包含、储存、通信、传播、或传输程序以供指令执行系统、装置或设备使用或结合指令执行系统、装置或设备一起使用的任何介质。
[0048] 计算机可使用或计算机可读介质可以是,例如但不限于,电、磁、光、电磁、红外、或半导体系统、装置、设备或传播介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。
[0049] 计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁性存储设备、或能用于存储所需信息且可以由指令执行系统访问的任何其他介质。注意,计算机可使用或计算机可读介质可以是其上打印有程序的纸张或另一合适的介质,因为程序可以经由例如对纸张或其他介质的光学扫描而电子地捕获,随后如有必要被编译、翻译,或以其他合适的方式处理,并随后存储在计算机存储器中。
[0050] 当本主题在计算机可执行指令的一般上下文中具体化时,该实施例可包括由一个或多个系统、计算机、或其他设备执行的程序模块。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,程序模块的功能可在各个实施例中按需进行组合或分布。
[0051] 图1是显示在对执行路径分类之前和之后的拓扑图的实施例100的图示。通用拓扑图102可显示应用的组件和其连接,其中每个连接可以是从跟踪器数据观察到的连接。拓扑图104可显示在应用执行路径跟踪之后的连接。
[0052] 执行路径跟踪可在应用内的原点位置处开始,并可为执行路径创建标识符。标识符可沿着执行路径被传递,以使得跟踪器数据可用执行路径来标识。带有相同执行路径标识符的跟踪数据可被编组并被显示在拓扑图上。
[0053] 执行路径标识符可以是针对执行路径的每个实例的唯一标识符。在这种实施例中,穿过应用代码的每个穿越可具有不同的标识符,并且从而每个路径可被独立地存储、分析和可视化。
[0054] 执行路径标识符可具有针对执行路径的具体类的标识符。在这样的实施例中,来自给定执行路径的踪迹数据可作为组被整合和分析。
[0055] 执行路径跟踪可允许应用的某些部分被观察。在应用内的原点位置处,跟踪器可创建针对执行路径的标识符,随后将标识符沿执行路径传递,以便沿路收集跟踪器数据。跟踪器数据可用标识符来标记,随后具有相同标识符的数据可作为组被分析。
[0056] 在一个用例中,特定执行路径可被标识为在特定函数处开始。当跟踪该函数时,跟踪器规则集合可被评估以确定当前执行路径是否满足感兴趣的执行路径的定义。跟踪器可创建针对该执行路径的标识符,随后开始跟踪该函数。随着执行继续,标识符可被传递至执行路径中的后续函数。在每个下游函数处,跟踪器可检测标识符的存在,随后跟踪下游函数并标记数据。所得到的数据可反映仅感兴趣的执行路径的踪迹,而没有其它踪迹数据。这样的所得到的数据可被分析、可视化或另行处理以给出开发者对该特定执行路径的详细查看。
[0057] 在另一使用场景中,应用可在若干不同模式中工作,但是可使用重叠的函数集来递送这些模式中的每个模式。可通过标识模式可源起其中的函数来跟踪该应用,随后针对每个执行路径创建标识符。跟踪器可在原点函数处做出评估来确定执行路径,随后标记每个执行路径。
[0058] 在这种场景的一个示例中,网站服务器应用可对针对各个网页的请求做出响应。每个网页可具有不同的功能性,但是可一般地使用相同下游函数中的许多下游函数。原点函数可以是从其接收网页请求的函数,且跟踪器可用被请求的网页的标记来标记每个执行路径。在用这种配置执行跟踪器之后,每个网页的跟踪器数据可被容易地标识和研究。
[0059] 实施例100解说了当执行路径标记被使用时的拓扑中的一个这种改变。图102可解说应用的完整拓扑图,其中每个节点可表示一函数或可执行代码块,且每个边可表示函数间的连接或程序流。
[0060] 节点106连接至节点108,节点108分叉到节点110和112。节点110可在自身上循环,且可分叉到节点113和118。节点113可分叉到节点114和116,且节点114可返回至节点113。节点112可流至节点118,节点118可在自身上循环,随后分叉到节点120和122。节点122可继续到节点116。
[0061] 图102的拓扑可反映应用的完整拓扑。然而,应用可具有三个主要的函数,其可在节点108处源起。当执行路径跟踪被部署在节点108处时,节点108的每个模式可开始新的执行路径,该执行路径可使用针对相应执行路径的标识符来跟踪。
[0062] 在图104中,拓扑图可被显示为具有执行路径。该图可开始于节点106。因为节点108是原点节点且可在三种不同模式中操作,所以针对这三种模式的执行路径可被标记并被显示。执行路径124、126和128可解说这些模式。
[0063] 执行路径124在第一条件中包含节点108,随后是节点110、113和114。执行路径126在第二条件中包含节点108,随后是节点110、118和122。最后,执行路径128在第三条件中包含节点108,随后是节点112、118和120。
[0064] 图104可用比图102更易理解的方式解说应用的拓扑。图102可解说各软件元素之间的所有连接,而图104解说应用在其操作模式中的执行流。这种图解对于可视化应用的实际操作可能更有用。
[0065] 图2是示出在应用执行时可通过使用跟踪器规则来收集数据的组件的实施例200的图示,该跟踪器规则可改变跟踪器行为,包括添加执行路径标识符。
[0066] 图2的示图例示出了系统的功能组件。在一些情况下,组件可以是硬件组件、软件组件、或者硬件和软件的组合。一些组件可以是应用级软件,而其他组件可以是执行环境级组件。在一些情况下,一个组件到另一组件的连接可以是紧密连接,其中两个或更多个组件在单个硬件平台上操作。在其他情况下,连接可通过跨长距离的网络连接来进行。每个实施例都可使用不同的硬件、软件、以及互连架构来实现所描述的功能。
[0067] 实施例200例示出可具有硬件平台204和各种软件组件的设备202。所例示出的设备202表示常规计算设备,但是其它实施例可具有不同配置、架构、或组件。
[0068] 在许多实施例中,设备202可以是服务器计算机。在一些实施例中,设备202仍然还可以是台式计算机、膝上型计算机、上网本计算机、图形输入板或平板计算机、无线手机、蜂窝电话、游戏控制台或任何其他类型的计算设备。在一些实施例中,设备202可在计算设备群集上实现,计算设备群集可以是一组物理或虚拟机器。
[0069] 硬件平台204可以包括处理器208、随机存取存储器210、以及非易失性存储212。硬件平台204还可包括用户接口214和网络接口216。
[0070] 随机存取存储器210可以是包含可由处理器208快速存取的数据对象和可执行代码的存储。在许多实施例中,随机存取存储器210可具有将存储器210连接到处理器208的高速总线。
[0071] 非易失性存储212可以是在关闭设备202之后持久保持的存储。非易失性存储212可以是任何类型的存储设备,包括硬盘、固态存储器设备、磁带盒、光学存储、或其他类型的存储。非易失性存储212可以是只读的或能够读/写。在一些实施例中,非易失性存储212可以是基于云的、网络存储、或可通过网络连接访问的其他存储。
[0072] 用户接口214可以是能够显示输出以及接收来自用户的输入的任何类型的硬件。在许多情况下,输出显示器可以是图形显示监视器,但是输出设备可包括光和其他视觉输出、音频输出、动力致动器输出、以及其他输出设备。常规输入设备可包括键盘和定点设备,诸如鼠标、指示笔、跟踪球、或其他定点设备。其他输入设备可包括各种传感器,包括生物测定输入设备、音频和视频输入设备、以及其他传感器。
[0073] 网络接口216可以是到另一计算机的任何类型的连接。在许多实施例中,网络接口216可以是有线以太网连接。其他实施例可包括基于各种通信协议的有线或无线连接。
[0074] 软件组件206可包括操作系统218,各种软件组件和服务可在该操作系统218上操作。一些实施例可直接在操作系统218上执行应用,而其它实施例可使用执行环境224,其可以是虚拟机或其它抽象。当应用在操作系统218上执行时,跟踪器220可具有一些操作系统连接。跟踪器220可用规则集合222执行,该规则集合可控制跟踪器行为。
[0075] 当应用在执行环境224中执行时,应用226可与跟踪器228一起操作,该跟踪器可具有可控制跟踪器行为的规则集合230。
[0076] 规则222或230可定义跟踪器的设置或选项,且可标识用于改变跟踪器设置的条件。在一些情况下,规则可增加或减少被收集的数据的量。一些这样的规则可标识要收集的数据的具体类型、要捕捉的变量值、可被收集的性能或操作数据、或其它行为改变。
[0077] 规则还可标识用于跟踪的执行路径。执行路径可以是可在顺序上彼此相关的应用操作序列。一些执行路径可以是顺序的,而其它执行路径可分叉到多个进程、线程、或可并行执行的其它执行序列。
[0078] 执行路径可通过创建执行路径的标识符、随后将该标识符传递穿过该执行路径到下游函数来跟踪。用于传送这种标识符的一种机制可以是将原始函数包装在跟踪器函数中,且包装器可将该标识符作为包装器内的状态来传递。许多其它实现机制可被用来跟踪执行路径并向踪迹数据应用标识符。
[0079] 网络234可连接实施例200的示例中的各种设备。在其它实施例中,所有各种函数可被实现在单一硬件平台上,而在又一些其它示例中,各种函数中的一些函数可被分布在多个硬件平台上。
[0080] 踪迹数据库系统236可收集踪迹数据,执行对踪迹数据的分析,生成跟踪规则,以及提供踪迹数据的可视化。踪迹数据库系统236可在可与硬件平台204的描述类似的硬件平台238上执行。
[0081] 踪迹数据库240可收集在设备202上创建的踪迹数据。踪迹数据库240可接收、存储以及处理踪迹数据以用于分析。
[0082] 分析引擎242可执行对踪迹数据的统计和其它分析,包括生成踪迹数据的可视化246,诸如拓扑图形和其它可视化。
[0083] 分析引擎242可帮助创建针对跟踪器的规则244。分析引擎242可标识统计数据、操作模式、或可被人类用来选择根据其可跟踪执行路径的规则的其它信息。在一些情况下,分析引擎242可包括试探法或其它机制的集合以确定用于对执行路径上执行的踪迹进行采样的条件。
[0084] 规则222和230可通过采样执行路径来标识可被跟踪的执行路径。采样可不跟踪执行路径的每个实例,而是可以仅跟踪实例子集。采样对于减少跟踪器消耗的开销可以是有用的,但是仍旧可产生统计上显著的结果。
[0085] 采样可基于执行路径用不同频率来应用。例如,非常稳定的执行路径可具有低采样水平,而具有宽性能可变性的执行路径可以高频率来采样。此类系统可针对可能运转不良的执行路径捕捉较大数据集而针对可能运转良好的那些执行路径捕捉较少的数据。
[0086] 分析引擎242可检查踪迹数据库240来确定哪些执行路径可能运转良好而哪些执行路径可能运转不良。基于各执行路径的性能,分析引擎242可创建规则244,该规则可增加或减少对执行路径的跟踪采样。
[0087] 客户端设备248可以是用户可从其查看各种可视化246并与分析引擎242、踪迹数据库240交互,以及创建规则244等的设备。客户端设备248可在可与针对硬件平台204所描述的类似的硬件平台250上操作。
[0088] 客户端设备248可以是浏览器252,用户界面254可在该浏览器中显示。用户界面254可被从可访问踪迹数据库240、分析引擎242、规则244、可视化246和其它信息的web服务器提供。
[0089] 图3是示出应用拓扑图302和用于选择用于执行路径跟踪的规则的机制的示例实施例300的图示。实施例300仅是用于请求来自可从其生成跟踪器规则的用户的输入的交互式机制的一个示例。
[0090] 用户界面可具有应用拓扑图302,该应用拓扑图可解说应用的元素以及那些元素之间的流。每个节点可表示一应用或其它可执行组件、事件、接口、元素或其它项。
[0091] 用户可以能够选择特定节点,诸如所选节点304。当节点304被选择时,用户界面306可被呈现给用户。用户界面306可向用户呈现可帮助创建用于跟踪执行路径的规则的某种信息。
[0092] 用户界面306可显示函数的名称308,以及针对可能的执行路径的某些被分析的数据。在实施例300的示例中,三个不同输入值可在列310中被解说为“foo”、“bar”和“baz”。各种统计数据可为用户针对每个输入值来示出,诸如列312中的使用频率、列314中的错误、以及性能316。
[0093] 针对执行路径的所建议的分类可通过分析针对给定节点先前收集的跟踪数据来确定。这种分析可尝试确定哪些变量可以是可区分不同执行路径的行为的主导因素。
[0094] 用户可具有输入机制318、320和322,所述输入机制可捕捉用户的输入,用户的输入可被处理以生成跟踪器规则。在实施例300的示例中,用户可具有在低、中间和高级别跟踪之间进行选择的选项。每个实施例可以针对这种指定符具有不同的定义。在一些情况下,这些项可指代采样频率。在一些情况下,这些项可反映在可被跟踪的每个事件处收集的数据的量。
[0095] 图4是示出用于利用规则来跟踪的方法的实施例400的流程图。实施例400可解说其中在跟踪可能发生的每个函数处可应用规则的系统。规则可通过添加或移除用于捕捉的参数、执行跟踪事件处的分析以及其它项来改变跟踪器行为。在一些情况下,规则可包括在跟踪期间可被评估的可执行代码。
[0096] 其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各种操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式例示出一些操作原理而被选出的。
[0097] 实施例400可解说用于使用跟踪器规则来部署执行路径跟踪的一种机制。跟踪器规则可包含执行路径跟踪可在其下发生的一个或多个条件,以及用于标识执行路径的机制。当给定函数处的执行路径匹配用于执行路径跟踪的条件时,执行路径可被标识。标识符可被向下游传递到其它函数,所述其它函数可用同一标识符标识跟踪器数据,由此将轨迹数据链接到相同的执行路径。
[0098] 应用的执行可在框402中开始且跟踪可在框404中开始。可以在框406中接收跟踪器规则。
[0099] 要跟踪的函数可在框408中被标识。要被跟踪的函数可在应用执行已进行到该函数且该函数被跟踪器标识时被标识。
[0100] 如果在框410中没有针对该函数定义规则,则在框412中跟踪器可被设置成默认规则。如果在框410中针对该函数定义了规则,则在框414中跟踪器可根据所述规则来被配置。
[0101] 如果在框416中规则没有定义执行路径跟踪,则该函数可在框426中用如被配置的跟踪器来跟踪。
[0102] 当在框416中规则定义了执行路径跟踪时,函数状态可在框418中被评估以将该执行路径分类。基于该分类,在框420中可检索标识符。在框422该函数可被包装在跟踪器函数中且在框424该标识符可被包括在被包装的跟踪器中。该过程可继续至框426,以跟踪该函数并采集踪迹数据。
[0103] 如果在框428中针对踪迹数据定义了标识符,则在框426中通过跟踪所采集的踪迹数据可在框430中被与标识符相关联并在框432中被存储。该过程可返回至框408以继续执行,直到另一函数可被标识以用于跟踪为止。
[0104] 关于可具有或可不具有被定义的跟踪器规则的下游函数,跟踪器可在框426中继续采集踪迹数据并将标识符与踪迹数据相关联。
[0105] 图5是示出用于从拓扑图表示创建规则的方法的实施例500的流程图例示。实施例500可解说可由分析引擎和用户界面执行以生成可帮助用户选择用于跟踪的执行路径的有用数据的方法。
[0106] 其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各种操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式例示出一些操作原理而被选出的。
[0107] 在框502,可接收踪迹数据。
[0108] 被跟踪的组件的图可在框504中从踪迹数据生成,且拓扑可视化可在框506中从该图生成。
[0109] 在框508中,拓扑可视化可被显示。在框510,可接收对一应用组件的选择。该选择可由查看该拓扑可视化的用户做出。
[0110] 当在框512中用户希望创建新规则或更新与所选组件有关的现有规则时,具有分类选项的用户界面可在框514被呈现。
[0111] 具有分类选项的用户界面可包括可由分析引擎从跟踪器数据得到的操作模式。在许多实施例中,试探法集合可被应用以建议公共因素,执行路径可根据所述公共因素被分类。这种用户界面的示例可以是实施例300的用户界面306。
[0112] 在框506中用户还可以能够指定针对给定执行路径所期望的采样。
[0113] 分类选项的集合可在框516中从该用户接收且规则集合可在框518中被创建。如果可在框520中选择另一组件,则该过程可返回至框508。当在框520中没有选择其它组件时,该过程可在框522中结束。
[0114] 图6是示出用于利用包括采样的规则来跟踪的方法的实施例600的流程图。实施例600可解说可对特定执行路径采样的跟踪器的操作。每个被采样的执行路径可被指派一标识符。当该标识符可对于下游函数存在时,跟踪可被执行,而当该标识符不存在时,跟踪可被最小化或完全不被执行。
[0115] 其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各种操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式例示出一些操作原理而被选出的。
[0116] 实施例600可在执行路径可被选择以用于采样时向执行路径指派标识符。这种系统可使用标识符作为可对下游函数执行跟踪的指示。通过仅向一执行路径子集指派标识符,跟踪可对执行路径的样本或子集执行。采样可以是用于最小化开销对应用性能的影响同时仍旧收集某些跟踪数据的一种机制。
[0117] 跟踪可在框602中开始。可在框604中接收针对跟踪的规则。函数可在框606中被标识以用于跟踪。
[0118] 如果在框608中该函数可以是用于执行路径跟踪的原点,则该执行路径可在框610中被分类。该执行路径的采样频率可在框612中被确定,且在框614中可关于当前执行路径是否要被跟踪来做出确定。
[0119] 采样频率可定义要跟踪的执行路径的百分比或其它分数。例如,10%的采样频率可跟踪十分之一的执行路径,而剩下十分之九的执行路径不进行跟踪。
[0120] 如果当前执行路径在框616中没有被选择以用于采样,则该过程可进行至框620。如果当前执行路径在框616中被选择以用于跟踪,则针对该执行路径的标识符可在框618中被确定,且跟踪器可被配置成跟踪该执行路径。该过程可继续至框620。
[0121] 如果执行路径在框620中不具有标识符,则该函数在框622中可不被跟踪,且该过程可继续至框606。
[0122] 当该执行路径在框620中具有标识符时,该函数可被跟踪且在框624中踪迹数据可被采集。执行路径标识符可在框626中与踪迹数据相关联且该数据可在框628中被存储。该过程可继续至框606。
[0123] 对本发明的上述描述是出于图示和描述的目的而呈现的。它不旨在穷举本主题或将本主题限于所公开的精确形式,并且鉴于上述教导其他修改和变型都是可能的。选择并描述实施例来最好地解释本发明的原理及其实践应用,由此使本领域的其他技术人员能够在各种实施例和各种适于所构想的特定用途的修改中最好地利用本发明。所附权利要求书旨在被解释为包括除受现有技术所限的范围以外的其他替换实施例。