剖析模型。这些模型可随后被部署到可对照附加数据来测试剖析模型的监视器。当剖析模型成功跟踪附加数据时,监视可被暂停或被降低到较低频率。当剖析模型无法成功跟踪附加数据时,用于创建原始数据的跟踪目标可被重构并重新部署以使得新的或经更新的模型可被生成。
[0069]监视系统可用与跟踪器相比更低的成本来操作。在许多情况下,跟踪器可消耗可不利地影响应用性能并可不利地影响执行应用的财务成本的开销进程、存储和网络话务。监视系统可具有与跟踪器相比少的多的开销,并可被配置成仅收集特定数据项并使用剖析模型来测试这些数据项。
[0070]在一些系统中,具有跟踪器系统的仪表化执行环境可被部署在设备子集上,而监视系统可被部署在所有设备或较大的设备子集上。通过使用用于测试或验证剖析模型的监视系统,复杂且昂贵的数据收集操作可在设备子集上执行,而较不昂贵的监视操作可在不同的设备子集上执行。
[0071 ] 贯穿本说明书和权利要求书,术语“跟踪目标”或“跟踪器目标”用于指代配置设置、参数或可由跟踪器消耗以在应用执行的同时收集数据的其他信息的集合。跟踪目标可用任何方式来具体化,诸如配置文件或可被传送至跟踪器并由跟踪器消耗的其他定义。在一些情况下,跟踪目标可包括可由跟踪器执行以便收集数据的可执行代码。跟踪器对象可通常包含可允许到可收集数据以供存储和分析的远程设备的网络连接的连接定义。
[0072]贯穿本说明书和权利要求书,术语“剖析器”、“跟踪器”和“检测机制(instrumentat1n) ”被可互换地使用。这些术语指代可在应用被执行时收集数据的任何机制。在经典定义中,“检测机制”可指代可向其插入可执行代码并藉此改变该可执行代码的存根(stub)、挂钩(hook)或其他数据收集机制,而“剖析器”或“跟踪器”可经典地指代不可改变可执行代码的数据收集机制。使用这些术语及其派生词中的任一者都可蕴含或暗示彼此。例如使用“跟踪器”的数据收集可使用“跟踪器”的经典意义中的非接触式数据收集以及用其中可执行代码可被改变的“检测机制”的经典意义的数据收集来执行。相似地,通过“检测机制”收集的数据可包括使用非接触式数据收集机制的数据收集。
[0073]此外,通过“剖析”、“跟踪”和“检测机$1」”收集的数据可包括可收集的任何类型的数据,包括诸如处理时间、吞吐量、性能计数器之类的与性能相关的数据等等。收集到的数据可包括函数名称、所传递的参数、存储器对象名称和内容、所传递的消息、消息内容、注册表设置、注册表内容、差错标志、中断或与正被跟踪的应用有关的任何其他参数或其他可收集的数据。
[0074]贯穿本说明书和权利要求书,术语“执行环境”可用于指代用于执行应用的任何类型的支持软件。执行环境的一个示例是操作系统。在一些图示中,“执行环境”可被示为与操作系统分开。这可能是为了示出为应用提供各支持函数的虚拟机,诸如过程虚拟机。在其他实施例中,虚拟机可以是可包括其自己的内部操作系统并可模拟整个计算机系统的系统虚拟机。贯穿本说明书和权利要求书,术语“执行环境”包括操作系统和可具有或可不具有可容易标识的“虚拟机”或其他支持软件的其他系统。
[0075]贯穿本说明书,在对附图的整个描述中,相同的附图标记表示相同的元素。
[0076]当元素被称为被“相连接”或“相耦合”时,这些元素可被直接连接或耦合在一起,或者也可存在一个或多个中间元素。相反,当元素被称为被“直接连接”或“直接耦合”时,不存在中间元素。本主题可被体现为设备、系统、方法、和/或计算机程序产品。因此,本主题的部分或全部可以用硬件和/或软件(包括固件、常驻软件、微码、状态机、门阵列等)来具体化。此外,本主题可以采用计算机可使用或计算机可读存储介质上的计算机程序产品的形式,介质中收录了供指令执行系统使用或结合指令执行系统一起使用的计算机可使用或计算机可读的程序代码。在本文档的上下文中,计算机可使用或计算机可读介质可以是可包含、储存、通信、传播、或传输程序以供指令执行系统、装置或设备使用或结合指令执行系统、装置或设备一起使用的任何介质。
[0077]计算机可使用或计算机可读介质可以是,例如,但不限于,电、磁、光、电磁、红外、或半导体系统、装置、设备或传播介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。
[0078]计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPR0M、闪存或其他存储器技术、CD-R0M、数字多功能盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁性存储设备、或能用于存储所需信息且可以由指令执行系统访问的任何其他介质。注意,计算机可使用或计算机可读介质可以是其上打印有程序的纸张或另一合适的介质,因为程序可以经由例如对纸张或其他介质的光学扫描而电子地捕获,随后如有必要被编译、解释,或以其他合适的方式处理,并随后存储在计算机存储器中。
[0079]当本主题在计算机可执行指令的一般上下文中具体化时,该实施例可包括由一个或多个系统、计算机、或其他设备执行的程序模块。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,程序模块的功能可在各个实施例中按需进行组合或分布。
[0080]图1是示出用于跟踪应用的系统的实施例100的图示。实施例100是用于创建跟踪目标、部署目标并分析结果的序列的简化示例。
[0081 ] 实施例100示出了可完全自动化地或至少很大程度上自动化地收集关于应用的数据的跟踪系统的示例。得到的数据可是该应用的表征,包括该应用作为整体的或至少针对该应用的一些子集的剖析模型。这些结果可用于分析并调试该应用、设计监视度量或其他使用。
[0082]实施例100示出了取得应用102并进行某个初步分析104以创建要跟踪的事件、函数、存储器对象和其他潜在有意思的对象的列表106的一般化操作。可从该列表106创建检测机制或跟踪目标108并将其部署110到各种仪表化设备112、114和116。
[0083]仪表化设备112、114和116中的每一者可分别执行应用118、120和122的实例,并且该检测机制可生成输入流和跟踪器结果124形式的结果。结果124可被分析126,这可导致检测机制目标108被更新和重新部署,或者经聚集结果的集合128可被生成。
[0084]各仪表化设备可以是能够根据跟踪目标来收集数据的任何设备。在一些情况下,仪表化设备可具有可收集数据的专门或专用硬件或软件组件。在其他情况下,仪表化系统可以是可被配置成收集如跟踪器目标中所定义的数据的通用系统。
[0085]实施例100示出了可自动化地通过将跟踪工作负载拆分成许多小跟踪目标来生成针对应用的跟踪数据的系统。可部署较小的跟踪目标以使得这些跟踪目标不会不利地干扰应用的执行。
[0086]较小的跟踪目标可允许与可一次捕捉全部数据的完全跟踪器可能实现的相比详细得多并更细粒度的数据收集。在许多情况下,捕捉非常详细的数据集可消耗大量处理器、存储、网络带宽或其他资源。
[0087]在较小的跟踪目标被使用时,从不同的跟踪目标收集的数据可能不是精确地来自去往该应用的同一输入参数集合。由此,来自较小跟踪目标的结果可经历各种分析以确定这些结果是否可能是可重复的。当这些结果被示为是可重复的时,可聚集来自多个跟踪目标的结果以创建数据超集。
[0088]实施例100示出了其中应用可由若干设备执行的示例。在一些情况下,每一设备可执行应用的相同实例。一示例可以是可被进行负载平衡以使得每一设备执行相同副本的网站应用。在其他情况下,每一设备可执行较大应用的子集。一示例可以是分布式应用,其中每一设备执行可导致数据传递到另一设备以供进一步处理的功能或操作的集合。
[0089]图2是示出具有用于使用独立的跟踪目标来自动地跟踪应用的系统的计算机系统的实施例200的图示。实施例200示出可呈递实施例100以及其他实施例中描述的操作的硬件组件。
[0090]图2的图示出了系统的功能组件。在一些情况下,组件可以是硬件组件、软件组件、或者硬件和软件的组合。一些组件可以是应用级软件,而其他组件可以是执行环境级组件。在一些情况下,一个组件到另一组件的连接可以是紧密连接,其中两个或更多个组件在单个硬件平台上操作。在其他情况下,连接可通过跨长距离的网络连接来进行。每个实施例都可使用不同的硬件、软件、以及互连架构来实现所描述的功能。
[0091]实施例200示出了可具有硬件平台204和各软件组件的设备202。示出的设备202表示常规的计算设备,但是其它实施例可具有不同配置、架构、或组件。
[0092]在许多实施例中,优化服务器202可以是服务器计算机。在一些实施例中,优化服务器202仍然还可以是台式计算机、膝上型计算机、上网本计算机、平板或平板式计算机、无线手机、蜂窝电话、游戏控制台或任何其他类型的计算设备。
[0093]硬件平台204可以包括处理器208、随机存取存储器210、以及非易失性存储212。硬件平台204还可包括用户接口 214和网络接口 216。
[0094]随机存取存储器210可以是包含可由处理器208快速访问的数据对象和可执行代码的存储。在许多实施例中,随机存取存储器210可具有将存储器210连接到处理器208的尚速总线。
[0095]非易失性存储212可以是在关闭设备202之后持久保持的存储。非易失性存储212可以是任何类型的存储设备,包括硬盘、固态存储器设备、磁带盒、光学存储、或其他类型的存储。非易失性存储212可以是只读、或能够读/写。在一些实施例中,非易失性存储212可以是基于云的网络存储或可通过网络连接访问的其他存储。
[0096]用户接口 214可以是能够显示输出并且从用户接收输入的任何类型的硬件。在许多情况下,输出显示可以是图形显示监视器,但是输出设备可包括灯光和其他视觉输出、音频输出、动力致动器输出、以及其他输出设备。常规输入设备可包括键盘和定点设备,诸如鼠标、指示笔、跟踪球、或其他定点设备。其他输入设备可包括各种传感器,包括生物测定输入设备、音频和视频输入设备、以及其他传感器。
[0097]网络接口 216可以是到另一计算机的任何类型的连接。在许多实施例中,网络接口 216可以是有线以太网连接。其他实施例可包括基于各种通信协议的有线或无线连接。
[0098]软件组件206可包括操作系统218,各种软件组件和服务可在该操作系统218上操作。操作系统可在执行例程和硬件组件204之间提供抽象层,并且可包括与各个硬件组件直接通信的各种例程和功能。
[0099]实施例200示出了如被部署在单个设备202上的许多软件组件206。在其他实施例中,各软件组件206中的部分或全部可被部署在分开的设备上或甚至被部署在各设备群集上。
[0100]设备202示出了可管理对应用220的跟踪的许多软件组件。
[0101]对应用220的初步分析可使用静态代码分析器222或高级跟踪器224来执行。在一些实施例中,可使用静态代码分析器222和高级跟踪器224两者。
[0102]静态代码分析器222可检查源代码、中间代码、二进制代码或应用220的其他表示以标识可被跟踪或可收集针对其的数据的各元素。例如,静态代码分析器222可标识应用220的各函数、子例程、程序分支、库例程或可执行代码的其他部分,其中的每一个都可以是可收集针对其的数据的元素。此外,静态代码分析器222可标识存储器对象、参数、输入对象、输出对象、或可被采样或检索到的其他存储器元素或数据对象。
[0103]高级跟踪器224可以是轻量跟踪系统,该轻量跟踪系统可监视执行应用220并标识被执行的代码区段、被操纵的存储器对象、可被触发的中断、差错、输入、输出或其他元素,其中的每一者都可具有或可不具有可在跟踪期间收集的数据元素。
[0104]静态代码分析器222或高级跟踪器224可创建流控制图或各元件之间的关系的其他表示。这些关系可被遍历以标识出可能在生成跟踪目标228时有用的相关对象。
[0105]各元素可被跟踪目标生成器226分析以创建跟踪目标228。一旦创建之后,分派器230可使得跟踪目标228被跟踪器执行。
[0106]跟踪目标生成器226可生成可独立执行的跟踪目标,在应用220被执行时这些跟踪目标生成与该应用220有关的数据。独立的跟踪目标228可通过标识要跟踪的元素来构造,要跟踪的元素可以是函数、存储器对象、中断、输入对象、输出对象或其他元素。
[0107]一旦开始元素可被标识出,跟踪目标生成器226就可尝试找到也可跟踪的相关项。例如,函数可被标识为开始元素。相关项可包括传递给该函数的输入参数和从该函数传送的结果。进一步的相关项可以是被该开始函数调用的各函数和被传递给那些函数的各参数。对于每一函数,相关项可包括由该函数消耗的处理时间、所分配的堆存储器、由该函数创建或改变的存储器对象和其他参数。
[0108]在一些实施例中,跟踪目标模板227的集合可能是可用的。跟踪目标模板227可以是用于各种特定对象的开始框架。例如,可创建用于跟踪特定类型的函数的跟踪目标模板227,其中该模板可包括可通常为特定类型的函数测量的参数。其他示例可包括用于跟踪不同类型的存储器对象、中断、输入对象、输出对象、差错条件等的模板。
[0109]各模板可包括成本估计参数,这些成本估计参数可用于评估或估计特定跟踪目标的影响。成本估计参数可包括财务成本以及性能成本、资源消耗成本或其他成本。估计的成本可以是被跟踪目标生成器226用来确定给定跟踪目标是否可能太大而无法执行、太复杂而无法执行或执行起来太昂贵并因此可被拆分成多个较小的跟踪目标的因素。
[0110]当高级跟踪器224可被使用时,周期性数据可从所收集的数据中提取出。周期性数据可包括任何重复模式或重复数据的频率。周期性数据可被跟踪目标生成器226用来选择大小可被设定为捕捉周期数据的数据收集窗口。当数据收集窗口与已知重复周期相比更小时,任何剖析模型或其他分析都不可完全地捕捉该数据的行为。
[0111]跟踪目标生成器226可创建针对跟踪目标的执行参数。执行参数可包括数据收集窗口。在一些情况下,数据收集窗口可用开始时间和结束时间来定义。在其他情况下,数据收集窗口可用所收集的值的数量、所收集的数据的量或其他条件来定义。在又一些情况下,开始和停止条件可包括事件监视。例如,开始条件可在特定输入事件发生时开始跟踪,或者结束条件可在存储器对象达到某个值时被定义。
[0112]执行参数可包括数据收集参数,诸如采样频率。在一些情况下,数据收集参数还可包