括关于何时收集数据的定义,这些定义可取决于计算出的、测量到的或观察到的数据。例如,数据可在参数X等于零时、在处理器负载小于80%时或某种其他条件下被收集。
[0113]跟踪目标生成器226可将可执行代码传送至跟踪器。可执行代码可包括条件定义或可在执行期间评估的其他代码。可执行代码还可包括可收集特定类型的数据的检测机制或其他代码。
[0114]在一些情况下,可执行代码可被插入应用以检索值、执行计算或可生成数据的其他功能。在一些实施例中,可执行代码可被包括在跟踪目标模板227中,并且可执行代码可在被包括在跟踪目标中之前由跟踪目标生成器226来定制或修改。
[0115]跟踪目标生成器226可为给定的被跟踪对象定义输入条件。除了所定向的用于监视的对象以外,输入条件还可以是所收集的数据。在一些实施例中,可分析并评估输入条件以比较相同或相关跟踪目标的不同运行。输入条件可包括任何输入参数、对象、事件或可影响被监视对象的其他条件。在许多实施例中,可创建可表示被监视对象的行为的剖析模型,并且可将输入条件用作剖析模型的一部分。
[0116]跟踪目标生成器226可创建可由分派器230传送到各仪表化系统246的多个跟踪目标228 ο
[0117]分派器230可确定用于执行跟踪目标的时间表,并使得这些跟踪目标被执行。该时间表可包括标识哪个设备可接收特定跟踪目标以及该跟踪目标可在何时被执行。在一些情况下,分派器230可使得某些跟踪目标被在多个设备上执行多次,并在一些情况下使得某些跟踪目标被在多个条件下执行多次。
[0118]数据收集器234可从各跟踪目标接收输出,并将这些结果和输入流236存储在数据库中。分析器232可分析数据以首先确定该数据是否可能是可重复的,随后将来自多个跟踪目标的结果聚集成经聚集的结果集合238ο在许多实施例中,分析器232可创建可表示观察到的数据的剖析模型。这样的剖析模型可用于各种场景,诸如在开发或调试场景中标识瓶颈或映射过程流、在运行时或管理场景中监视成本或性能以及其他使用。
[0119]仪表化系统246可通过网络244连接到设备202。网络244可以是因特网、局域网或任何其他类型的通信网络。
[0120]仪表化系统246可在硬件平台248上操作,该硬件平台248可具有应用250可在其上执行的仪表化执行环境252。仪表化执行环境252可以是操作系统、系统虚拟机、进程虚拟机、或可执行应用250并提供跟踪器254或可在执行期间收集数据的其他检测机制的其他软件组件。
[0121 ] 跟踪器254可从分派器230接收跟踪目标256。跟踪器254可评估并执行跟踪目标256以收集输入数据和跟踪器结果,随后将输入数据和跟踪器结果传送给数据收集器234。
[0122]在一些实施例中,单个跟踪器254可具有可并行或同时处理的多个跟踪目标256。在一些这样的实施例中,分派器230可标识可能不彼此重叠的两个或更多个跟踪目标256。示例可包括在一种类型的操作期间收集数据的第一跟踪目标和在另一种类型的操作期间收集数据的第二跟踪目标,其中这两种操作无法同时发生。在这样的示例中,任一跟踪目标都不会在另一跟踪器对象正在执行的同时执行。
[0123]在另一示例中,一些跟踪目标256可能是非常轻量的,因为该跟踪目标可能不对仪表化系统246有很多影响或不具有很多成本。在这样的情况下,分派器230可以向仪表化系统246发送若干这样的低成本或轻量跟踪目标256。
[0124]在一些实施例中,跟踪目标生成器226可创建大小可被设为具有最小影响的跟踪目标。这样的跟踪目标可通过估计对仪表化系统246的成本影响来创建,该成本影响可包括处理、输入/输出带宽、存储、存储器或跟踪目标可引起的任何其他影响。
[0125]跟踪目标生成器226可估计所建议的跟踪目标的成本影响,并随后在该成本可大于特定阈值时将该跟踪目标拆分成较小的独立跟踪目标。如果较小的跟踪目标仍可超过该阈值,则这些较小的跟踪目标还可再次被分析并拆分。
[0126]这样的实施例可包括成本分析、性能影响、或对每一跟踪目标的其他估计。在这样的实施例中,分派器230可尝试匹配具有不同成本约束的跟踪目标。例如,分派器230可能够启动具有尚处理成本的一个跟踪目标以及具有很少处理成本但具有尚存储成本的另一跟踪目标。两个跟踪目标合在一起不会超过预算的或最大的资源消耗量。
[0127]分析器232可创建跟踪器结果和输入流236的剖析模型。剖析模型可以是可基于给定输入集合来预测对象的行为的数学或其他表达。一些实施例可尝试通过随时间用真实的输入数据来训练剖析模型以将模型结果与实际结果进行比较来验证这些模型。
[0128]一些这样的实施例可使用监视系统来评估剖析模型。监视管理器240可将这些模型分派给各监视系统256。监视系统256可具有执行环境260可在其上运行应用262的硬件平台258。监视器264可接收配置266,配置266可包括要评估的剖析模型。
[0129]监视器264可以是轻量的检测系统。在许多情况下,监视系统256可以是其中监视器264可以是较大的系统施行和管理系统的一个组件的生产系统。监视器264可评估剖析模型以生成差错统计。差错统计可表示预测值和实际值之差。当差错统计较高时,可通过创建新的或经更新的跟踪目标来重新评估该剖析模型。当差错统计较低时,剖析模型可用于表示具有高置信度的观察到数据。
[0130]实施例200的体系结构示出了可执行应用的两种不同类型的系统。监视系统256可表示应用可在其上运行的生产系统,而仪表化系统246可以是可具有附加数据收集特征的专用系统。在一些情况下,仪表化系统246可以是与监视系统256相同或相似的硬件,并且可被专门地配置。在又一些实施例中,这两种类型的系统可在硬件和软件两者方面相同,但可按不同的方式被使用。
[0131]在一些实施例中,可生成跟踪目标的各组件还可被部署在可执行所跟踪的应用并收集结果的同一设备上。在一些这样的实施例中,一些组件可被分配给某些处理器或其他资源,而其他组件可被分配给不同的资源。例如,处理器或处理器组可用于执行并跟踪应用,而其他处理器可收集并分析跟踪器结果。在一些情况下,跟踪器目标可在一个处理器上执行,并监视在不同处理器上执行的应用的操作。
[0132]图3是示出用于创建并部署跟踪目标的方法的实施例300的流程图示。实施例300示出如在实施例200中示出的设备202的操作。
[0133]其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各个操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式示出一些操作原理而选择的。
[0134]实施例300示出了可通过其来创建并部署跟踪目标的通用方法。实施例300的各组件中的一些可在本说明书中稍后描述的其他实施例中更详细地示出。
[0135]实施例300示出了藉此静态代码分析和初始跟踪操作可标识出要跟踪的各个对象的方法。在一些实施例中,初始跟踪操作可标识可从其创建跟踪目标的足够信息。在其他实施例中,初始跟踪操作可标识要跟踪的对象,随后可针对这些对象中的每一者来执行第二初始跟踪操作。第二初始跟踪操作可收集对于单个跟踪操作中的许多对象来说可能收集起来太麻烦或太不切实际的详细数据。
[0136]在框302,可接收应用以供评估。在框303,该应用可经历初步分析。初步分析可收集可用于自动地创建跟踪器目标集合的各信息。可在各跟踪器目标上迭代以收敛于可影响被监视参数的统计上相关的输入参数。框303的初步分析可收集要监视的对象以及可被用于创建跟踪目标的操作限制。
[0137]初步分析还可包括可被用于为目标设置采样率和数据收集窗口的周期性分析。随着附加数据被收集和分析,采样率和数据收集窗口可随时间被调整。
[0138]在框304可执行静态代码分析以标识潜在跟踪对象。静态代码分析可标识函数和其他可执行代码元素、存储器对象和其他存储元素以及其他项。
[0139]在一些实施例中,静态代码分析还可生成可执行代码元素和存储器对象之间的关系。关系的示例可包括可示出各代码元素之间的因果关系或通信关系的流控制图。在许多情况下,存储器对象可与各代码元素相关。
[0140]在框306可执行高级跟踪。高级跟踪可帮助标识要跟踪的对象以及收集可在稍后在生成跟踪目标时使用的一些高级性能或数据特征。
[0141]在框308,在使用高级跟踪的执行期间,可标识执行元素和执行边界。执行元素可以是函数、库、例程、代码块或与可执行代码相关的任何其他信息。执行边界可指代诸如执行应用的标识出部分的时间量以及各存储器对象的预期值范围之类的性能特征。执行边界可包括函数调用和返回、过程产生事件和其他执行边界。
[0142]在框308,可标识出各组件之间的因果关系。因果关系可以是其中一个对象、函数、条件或其他输入可引起函数操作、存储器对象改变或其他效果的原因和效果关系。因果关系在标识相关对象或将相关对象收集在一起以供检测时可能是有用的。
[0143]在框310,可以标识输入参数。输入参数可包括到应用的任何输入,包括被传递给应用的数据、输入事件或可导致应用中的行为的其他信息。在一些实施例中,可分析各执行元素以标识可被定向到特定执行元素的输入参数。
[0144]在框312,高级跟踪可标识可在执行期间改变的各存储器对象。存储器对象可表示可为其创建跟踪目标的对象,其可在框314被添加到要跟踪的可能对象列表。
[0145]在框316,在高级跟踪执行的同时,可标识任何周期性或重复模式。许多应用以重复方式操作,并通常具有多个周期性。例如,零售网站应用可具有其中工作负载在节假日附近增加的季节性周期性以及其中工作负载在星期几可预测地改变的每星期周期性。相同的应用也可在一天中的不同时间经历可重复的改变。
[0146]当应用的周期性可已知时,跟踪器对象的数据收集窗口可被设置成捕捉一个周期的多个循环。捕捉多个循环的数据可用于生成剖析模型,这些剖析模型包括将周期性纳入考虑的因素。当数据收集窗口没有收集到足够的数据来捕捉周期性时,剖析模型可生成更多差错,从而使得该模型不那么可靠和可重复。
[0147]可执行若干性能测试,包括在框318的存储测试、在框320的网络带宽和框322的可用计算带宽。性能测试可在与跟踪目标可被运行的相同或相似的条件下执行。例如,框318,320和322的性能测试可在应用正在执行的同时在仪表化系统上执行。
[0148]这些性能测试可用于设置用于创建满足最大成本目标的跟踪目标的边界或阈值。在这样的实施例中,可在应用在执行的同时分析这些性能测试以确定剩余的性能带宽。对于可计算受限的应用,计算性能可能被重度使用,但可存在可由跟踪目标消耗的多余的存储和网络带宽。在另一示例中,应用可能是网络或输入/输出受限的,从而留有多余的计算可供跟踪目标无偿使用。
[0149]在许多情况下,可为跟踪成本定义预算或目标。例如,目标可被设为使用多达10%、20%、50%或某个其他值的系统资源来用于跟踪使用。当这样的目标可被设定时,跟踪目标可被创建得足够小且足够轻量以满足该目标,并且跟踪目标可被分派或调度以满足该目标。
[0150]对跟踪资源的分配在应用执行时间敏感的操作时或在此跟踪可关注于性能监视或优化时可能是有用的。通过仅分配最大量的资源,该应用可能不会受到过度跟踪的不利影响。
[0151]在框324,可创建跟踪目标。稍后在本说明书中提供用于创建跟踪目标的更详细的方法的示例。部署目标可在框326创建以生成部署时间表,并且可在框328部署这些目标。
[0152]随着目标被部署,结果可在框330被接收并被分析。分析可标识要对跟踪目标作出的改变,诸如通过周期性分析来标识要对采样率或数据收集窗口作出的改变或要对收集某些输入数据流作出的改变。这样的改变可使得跟踪器目标在框332被更新,并在框326被重新部署。
[0153]图4是示出用于确定默认的采样率和数据收集窗口的方法的实施例400的流程图示。实施例400示出如在实施例200中示出的设备202的一些操作。
[0154]其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各个操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式示出一些操作原理而选择的。
[0155]实施例400示出用于确定跟踪器目标的采样率和数据收集窗口的初始设置集合的方法。一般来说,一时间序列的采样率可反映可在数据流中观察到的最高频率。随着采样率变得更快且数据样本的时间片变得更短,数据可捕捉更高的频率。随着采样率的降低,较高的频率可能无法在数据流中被检测到,并可增加观察到的噪声。
[0156]数据收集窗口可定义可在时间序列数据集中观察到的最长频率。一般来说,统计上显著的样本大小可以是作为数据内的最长周期的周期的至少两倍或三倍。小于数据内的最长周期的数据收集窗口可导致包含观察到的噪声的数据集。
[0157]实施例400的操作可用于设置可默认被应用于跟踪器目标的初始采样率和数据收集窗口。一旦跟踪器目标已被部署并且其得到的数据已被分析,则可对采样率和数据收集窗口作出改变。
[0158]在框402,可接收初始跟踪结果。初始跟踪结果可来自对应用的初步跟踪。初步跟踪可标识要测量的若干参数以及要捕捉的若干输入流。在许多情况下,初步跟踪可在具有很少或没有关于应用的知识的情况下被执行。
[0159]在框404可执行自动相关性分析以标识数据中的主导周期性。框404的周期性分析可标识可被包含在数据中的多个频率。这些频率中的一些可具有与其他频率相比更强的影响。
[0160]长频率可在框406被标识出并可被用来确定默认的数据收集窗口。数据收集窗口可定义可获得时间序列样本的时间长度。一般来说,数据收集窗口可被选为是最长周期或频率的长度的两倍、三倍或更多倍。
[0161]小周期性可在框408中被标识出并被用于确定默认的采样率。默认采样率可足够短,使得最小频率可由5个、10个或更多个样本捕捉到。
[0162]在框410可存储默认的数据收集窗口和采样率。可将默认的数据收集窗口和采样率用作跟踪器目标的开始点。在许多情况下,在分析了更详细的数据后可调整数据收集窗口和米样率。
[0163]在一些实施例中,可将默认的采样率和数据收集窗口设为彼此相关。例如,可使用初始数据的主频率来设置默认采样率,随后可将默认数据收集窗口设置成数据样本的预定义倍数。在一个这样的示例中,可将默认数据收集窗口设为是默认采样窗口的长度的10000倍,这可导致要分析的1