CN105283848B - 用分布式目标来进行应用跟踪 - Google Patents
用分布式目标来进行应用跟踪 Download PDFInfo
- Publication number
- CN105283848B CN105283848B CN201380072852.5A CN201380072852A CN105283848B CN 105283848 B CN105283848 B CN 105283848B CN 201380072852 A CN201380072852 A CN 201380072852A CN 105283848 B CN105283848 B CN 105283848B
- Authority
- CN
- China
- Prior art keywords
- target
- tracking
- application
- frame
- tracker
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3409—Recording 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/3433—Recording 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 for load management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
- G06F11/3495—Performance evaluation by tracing or monitoring for systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3447—Performance evaluation by modeling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3452—Performance evaluation by statistical analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
跟踪系统可跨应用的多个实例划分跟踪目标,随后部署要跟踪的目标。各目标的结果可被聚集成对该应用的详细跟踪表示。跟踪目标可定义具体的函数、进程、存储器对象、事件、输入参数、或可收集的跟踪数据的其他子集。这些目标可被部署在应用的可在不同设备上运行的单独实例上。在一些情况下,可将这些目标部署在不同的时间区间处。跟踪目标可以是当结果被聚集时可提供应用性能的整体视图的轻量、相对非侵入式的跟踪工作负载。
Description
相关申请的交叉引用
本申请要求于2013年2月12日提交的题为“Application Tracing byDistributed Objectives(用分布式目标来进行应用跟踪)”的美国专利申请序列号13/765,642的优先权和权益,该申请的整体内容通过援引被明确地纳入于此。
背景
跟踪收集与应用如何在计算机系统内执行有关的信息。跟踪数据可包括任何类型的可解释该应用如何操作的数据,并且这样的数据可由开发者在应用的调试或优化期间分析。跟踪数据还可在该应用的生产操作期间被管理员用来标识各种问题。
在开发和调试期间发生的跟踪可能是非常详细的。在一些情况下,跟踪操作可不利地影响系统性能,因为跟踪操作可消耗大量的处理、存储或网络带宽。
概述
跟踪系统可跨应用的多个实例划分跟踪目标,随后部署要跟踪的目标。各目标的结果可被聚集成对该应用的详细跟踪表示。这些跟踪目标可定义具体的函数、进程、存储器对象、事件、输入参数、或可收集的跟踪数据的其他子集。可将这些目标部署在应用的可在不同设备上运行的单独实例上。在一些情况下,可以将这些目标部署在不同的时间区间处。跟踪目标可以是当结果被聚集时可提供应用性能的整体视图的轻量、相对非侵入式的跟踪工作负载。
跟踪系统可执行成本分析来标识麻烦或昂贵的跟踪目标。对于麻烦的目标,可创建可独立地执行的两个或更多个目标。成本分析可包括可针对其来制定预算以用于收集数据的处理、存储和网络性能因数,而没有不适当的关于被测应用的性能或财务消耗。较大的目标可被递归地分析以将该较大的目标分成可被独立地部署的各较小的目标。
跟踪管理系统可使用成本分析和性能预算来向可在运行应用的同时收集跟踪数据的仪表化系统分派跟踪目标。该跟踪管理系统可分析各个体跟踪工作负载以得到处理、存储和网络性能成本,并基于可为特定设备设置的资源预算来选择要部署的工作负载。在一些情况下,可选择在所分配的预算内最大化资源消耗的补充跟踪目标。这些预算可分配要跟踪的某些资源,这可以是通过在运行应用时进行跟踪来限制任何不利影响的机制。
跟踪系统可通过标识收集到的数据内的周期性,随后更新采样率和数据收集窗口来优化收集到的数据。可使用经更新的参数来对数据进行重新采样并执行更详细的分析。该优化可基于初步跟踪分析,通过该初步跟踪分析可提取如用于默认的参数集的频率集。该跟踪系统可使用可被部署的多个独立的跟踪目标来收集数据,并且每一跟踪目标都可使用周期性分析来优化以收集统计上显著的数据。
两个不同的跟踪器目标之间的周期性相似性可被用来标识要采样的附加输入参数。跟踪器目标可以是大型跟踪器操作的各个体部分,并且每一个跟踪器目标都可具有单独的可为其收集数据的输入对象的集合。在收集了针对跟踪器目标的数据后,可标识出具有相似周期性的其他跟踪器目标。可将来自其他跟踪器目标的输入对象添加到跟踪器目标,并且可执行该跟踪器目标以确定新添加的目标的统计显著性。迭代过程可遍历多个输入对象,直到耗尽可能的输入对象并且统计上显著的输入对象集合被标识出。
可比较分布式跟踪系统中的各跟踪器目标以标识出可具有高统计相关性的输入参数。迭代过程可通过比较多个跟踪器目标的结果并将可能的输入对象评分为可能在统计上相关来遍历多个输入对象。对于每一迭代,可将统计上不相关的输入对象从跟踪器目标中丢弃,并可添加其他潜在相关的对象。该迭代过程可收敛于针对给定测量值在统计上相关的输入对象集合,而无需关于正在跟踪的应用的先验知识。
分布式跟踪系统可使用可为其创建剖析模型的独立跟踪器目标。剖析模型可被部署成非仪表化设备上用于评估剖析模型的监视代理。由于剖析模型用统计上显著的结果来操作,因此采样频率可被调整。剖析模型可被部署成用于测试在更高度仪表化环境中创建的模型的验证机制,并可使用仪表化环境来收集可能还不同样准确的与性能相关的结果。在一些情况下,剖析模型可分布在大量设备上以基于从单个仪表化设备或较少数目的仪表化设备收集的数据来验证各模型。
提供本概述以便以简化形式介绍将在以下的详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
附图简述
在附图中:
图1是示出用于跟踪应用的系统的实施例的图示。
图2是示出可创建跟踪目标、部署这些目标并分析结果的设备的实施例的图示。
图3是示出用于创建并部署目标的方法的实施例的流程图示。
图4是示出用于确定默认的采样率和数据收集窗口的方法的实施例的流程图示。
图5是示出用跟踪器目标来进行跟踪的实施例的图示。
图6是示出用于创建并部署跟踪目标的方法的实施例的流程图示。
图7是示出用于使用成本分析来设定跟踪器目标的大小的方法的实施例的流程图示。
图8是示出用于使用成本分析来划分跟踪器目标的方法的实施例的流程图示。
图9是示出用于对采样率和数据收集窗口进行微调的过程的实施例的图示。
图10是示出了具有用于评估跟踪器结果的反馈环的方法的实施例的流程图示。
图11是示出用于使用频率相似性来在各目标上进行迭代的方法的实施例的流程图示。
图12是示出用于确定预测模型的有效性的方法的实施例的图示。
图13是示出用于分析来自跟踪器目标的结果的方法的实施例的流程图示。
图14是示出具有跟踪目标分派器的环境的实施例的图示。
图15是示出用于部署跟踪器目标的方法的实施例的流程图示。
图16是示出用于跟踪器目标表征和部署的详细方法的实施例的流程图示。
详细描述
用分布式目标的应用跟踪
用于跟踪应用的系统可收集来自可对照应用的多个实例来执行的离散的独立目标的跟踪数据。该系统可将跟踪工作负载划分成各个体目标,随后分派这些目标以收集数据子集。跟踪数据可被聚集成完整的数据集。
在跟踪大型应用时,应用可被看成为对刺激作出响应的大型系统,刺激是输入事件、数据或其他刺激。当可作出应用按相对一致的方式行动的理论假设时,可将该跟踪分成许多较小的单元,并且这些结果被聚集在一起以给出整个应用的详细图片。这些较小的单元可被称为“跟踪目标”,“跟踪目标”可被分派以收集较大跟踪数据集合的某一部分。
跟踪目标可以是针对如何收集跟踪数据的定义和用于收集跟踪数据的条件的集合。跟踪目标可由在仪表化环境内操作的跟踪器消耗,跟踪器可被配置成收集许多不同类型的跟踪数据和许多不同的数据对象。目标还可包括建立到数据收集和存储系统的网络连接的连接定义。在许多情况下,跟踪目标可在可被传送到跟踪器的配置文件中描述。
在许多情况下,详细的跟踪可消耗大量的计算、存储和网络带宽资源。例如,许多跟踪算法可使设备的计算工作负载增加三倍或更多。当将这样的负载可放置于系统上时,应用的性能可被极度地降级。通过创建各自导致小量跟踪将被执行的许多更小的目标,详细的跟踪结果可仍然是可实现的,但对运行的应用具有较小的影响。
与更详细的跟踪系统相比,分布式跟踪系统可具有更小的占用空间,因为跟踪工作负载可被分发给应用的多个实例或者因为各个体工作负载可在一个设备上被顺序地执行。在许多情况下,跟踪可使用非常大数目的设备来执行,其中每一设备执行较大跟踪任务的相对小的子集。在这样的情况下,可获得应用函数的完整视图,而对许多设备中的每一者具有最小的影响。
跟踪系统可自动地确定如何按优化方式来执行跟踪。对应用的初始分析可揭示各个函数、存储器对象、事件、或可用作跟踪目标的基础的其他对象。自动化分析可标识出相关的存储器对象、函数和可为其收集数据的各个项,所有这些都可被添加到跟踪目标中。
一旦已准备了跟踪目标,就可分派这些跟踪目标以由各仪表化执行环境来履行。可将跟踪结果传送至集中式收集器,该集中式收集器可存储原始数据。对于每一目标,收集后分析可评估这些结果以确定该数据是否足以生成有意义的汇总统计,该汇总统计可以是针对应用的各个组件如何对输入作出响应的剖析模型。
当无法用统计确定性来验证目标的结果时,可对照应用来重构并重新执行该目标。在一些情况下,该目标可被运行达更长的时间窗口以收集更多的数据,而在其他情况下,该目标可在重新执行之前添加或移除项。
用于选择跟踪目标的成本分析
可使用成本分析来自动地评估跟踪目标以确定该目标是否可能太大而无法执行或执行起来太麻烦。当目标变得太麻烦时,可将该目标拆分成两个或更多个更小的目标,其中这些结果可被组合。
成本分析可评估执行成本,诸如处理器消耗、网络带宽消耗、存储消耗、功率消耗或其他资源消耗。在许多这样的情况下,可将成本限制置于跟踪目标上以限制可被分配来跟踪的资源量。在一些实施例中,该成本可以是可归因于消耗各种资源的可量化的财务成本。
将较大的目标分成多个较小的目标可使用各数据对象内的关系来将相关的对象放置在同一较小的目标中。例如,较大的目标可涉及跟踪一可执行函数的多个数据项。该函数的一些输出可由一个下游函数来消耗,而该函数的其他输出可由不同的下游函数来消耗。当这样的关系可用且已知时,该系统可将第一函数的输出放置在一个跟踪目标中,并将第二函数的输出放置在第二跟踪目标中。
可估计或测量用于分析目标的影响的成本。在一些情况下,可从数据收集模板库中选择目标。每一模板可具有用于执行该模板的不同方面的估计成本,并且可以使用该估计成本来评估跟踪目标。
在一些情况下,可测量针对目标的成本。在这样的情况下,可在收集成本数据的同时执行该目标达较短时间段,成本数据为诸如对处理器、存储或网络带宽的影响。一旦这样的成本已知,可执行分析以确定是否将该目标拆分成多个较小的目标。
贯穿本说明书和权利要求书,术语“成本”在评估跟踪目标的上下文中可以是反映任何成本、开销、资源、税收或由跟踪目标创建的其他障碍的概括术语。一般来说,成本指代具有可被最小化的效果的任何事物。
使用成本分析来部署跟踪目标
跟踪目标可使用针对这些跟踪目标的成本估计和关于跟踪设备的资源预算来部署。这些预算可定义针对跟踪目标的资源分配,并且分派器可选择可利用所分配的资源的跟踪目标。
当由多个跟踪目标中的全部消耗的资源的和小于预算量时,可将这些跟踪目标分派给一设备跟踪目标可使用可包括所分配的跟踪目标中的全部的清单来分派。
跟踪资源预算可定义可被分配来跟踪特定设备上的工作负载的最大资源量。该预算可基于硬件和软件配置以及任何预先定义的资源或性能分配而在各设备之间有所不同。在一些情况下,特定设备或应用的实例可被分配以满足最小性能标准,而保持剩余资源被分配以跟踪操作。
依据成本来分配跟踪目标可允许甚至在正执行跟踪时也维持最小应用性能。最小应用性能可确保在跟踪被部署在生产环境中时应用吞吐量可被维持,并确保跟踪不会不利地影响在跟踪期间收集的任何数据。
自动化跟踪系统中的周期性优化
自动化跟踪系统可分析收集到的数据内的周期性,随后调整采样率和数据收集窗口以收集有效地捕捉观察到的周期性的数据。初始的高级跟踪可收集针对被测试的任何应用的通用性能参数。
通过初始跟踪,周期性分析可被执行以标识数据的特征频率。初始数据的特征频率可用于为可被部署的详细跟踪器目标设置默认的采样率和数据收集窗口。
由于可从跟踪器目标捕捉结果,第二周期性分析可标识数据中的附加重复模式。通过第二周期性分析,采样率和数据收集窗口可被更新或优化以收集统计上有意义的数据。
在一些实施例中,跟踪器目标可部署有不同的参数以便以与默认设置相比更高或更低的频率来探索重复模式。这样的实施例可检测统计上相关的频率,随后在找到统计上相关的频率时收集附加数据。当任意应用被跟踪时,该应用内的主频率列表可被应用于其他跟踪器目标。
跟踪器目标的采样率可定义可在数据的时间序列中观察到的最小周期或最高频率。相似地,数据收集窗口可定义可观察到的最大周期或最低频率。通过确保已知频率在结果集中被覆盖,可作出这样的频率是否出现在观察到的数据的集合中的统计上有意义的确定。
使用相似频率的优化分析
自动化优化系统可通过在可影响所跟踪的性能度量的输入参数上进行迭代来创建应用性能的统计上有意义的表示。在选择了可影响测量到或跟踪到的度量的潜在输入参数的开始集后,统计上不显著的输入参数可被移除,并且潜在相关的参数可被添加到跟踪器目标。
观察到的度量可被分析以得到周期性,其结果可以是在数据中找到的频率集合。频率集合可用作签名,可使该签名与其他跟踪器目标的频率签名匹配。匹配跟踪器目标可被分析以标识其他跟踪器目标中的统计上显著的输入参数,并且那些输入参数可被看作潜在输入参数。
频率分析可通过匹配相似的频率签名来试图匹配在时域中具有相似的观察到特征的跟踪器目标。可具有相似频率签名的两个跟踪器目标可相似地对刺激作出反应或具有其他行为相似性。在许多情况下,可影响用一个跟踪器目标观察到的行为的输入参数可在以某种方式与可影响用另一跟踪器目标观察到的行为的输入参数相关。
在一些情况下,频率比较可检查在数据内找到的主频率。这样的情况可在对各跟踪器目标结果的分析产生若干不同主频率时发生。在其他情况下,在大量结果集合中观察到单个主频率。在这样的情况下,这些比较可使用在主频率可被移除后可作为特征频率的次频率来作出。
在其中可从数据中观察到多个频率的实施例中,可创建反映这些频率以及每一频率的强度或重要性的频率签名。可使用相似性比较来比较这些签名以标识匹配。在一些实施例中,比较可使用可指示相似性程度的分数来执行。
用监视代理来部署剖析模型
一些跟踪系统可创建可表示跟踪数据的剖析模型。这些模型可随后被部署到可对照附加数据来测试剖析模型的监视器。当剖析模型成功跟踪附加数据时,监视可被暂停或被降低到较低频率。当剖析模型无法成功跟踪附加数据时,用于创建原始数据的跟踪目标可被重构并重新部署以使得新的或经更新的模型可被生成。
监视系统可用与跟踪器相比更低的成本来操作。在许多情况下,跟踪器可消耗可不利地影响应用性能并可不利地影响执行应用的财务成本的开销进程、存储和网络话务。监视系统可具有与跟踪器相比少的多的开销,并可被配置成仅收集特定数据项并使用剖析模型来测试这些数据项。
在一些系统中,具有跟踪器系统的仪表化执行环境可被部署在设备子集上,而监视系统可被部署在所有设备或较大的设备子集上。通过使用用于测试或验证剖析模型的监视系统,复杂且昂贵的数据收集操作可在设备子集上执行,而较不昂贵的监视操作可在不同的设备子集上执行。
贯穿本说明书和权利要求书,术语“跟踪目标”或“跟踪器目标”用于指代配置设置、参数或可由跟踪器消耗以在应用执行的同时收集数据的其他信息的集合。跟踪目标可用任何方式来具体化,诸如配置文件或可被传送至跟踪器并由跟踪器消耗的其他定义。在一些情况下,跟踪目标可包括可由跟踪器执行以便收集数据的可执行代码。跟踪器对象可通常包含可允许到可收集数据以供存储和分析的远程设备的网络连接的连接定义。
贯穿本说明书和权利要求书,术语“剖析器”、“跟踪器”和“检测机制(instrumentation)”被可互换地使用。这些术语指代可在应用被执行时收集数据的任何机制。在经典定义中,“检测机制”可指代可向其插入可执行代码并藉此改变该可执行代码的存根(stub)、挂钩(hook)或其他数据收集机制,而“剖析器”或“跟踪器”可经典地指代不可改变可执行代码的数据收集机制。使用这些术语及其派生词中的任一者都可蕴含或暗示彼此。例如使用“跟踪器”的数据收集可使用“跟踪器”的经典意义中的非接触式数据收集以及用其中可执行代码可被改变的“检测机制”的经典意义的数据收集来执行。相似地,通过“检测机制”收集的数据可包括使用非接触式数据收集机制的数据收集。
此外,通过“剖析”、“跟踪”和“检测机制”收集的数据可包括可收集的任何类型的数据,包括诸如处理时间、吞吐量、性能计数器之类的与性能相关的数据等等。收集到的数据可包括函数名称、所传递的参数、存储器对象名称和内容、所传递的消息、消息内容、注册表设置、注册表内容、差错标志、中断或与正被跟踪的应用有关的任何其他参数或其他可收集的数据。
贯穿本说明书和权利要求书,术语“执行环境”可用于指代用于执行应用的任何类型的支持软件。执行环境的一个示例是操作系统。在一些图示中,“执行环境”可被示为与操作系统分开。这可能是为了示出为应用提供各支持函数的虚拟机,诸如过程虚拟机。在其他实施例中,虚拟机可以是可包括其自己的内部操作系统并可模拟整个计算机系统的系统虚拟机。贯穿本说明书和权利要求书,术语“执行环境”包括操作系统和可具有或可不具有可容易标识的“虚拟机”或其他支持软件的其他系统。
贯穿本说明书,在对附图的整个描述中,相同的附图标记表示相同的元素。
当元素被称为被“相连接”或“相耦合”时,这些元素可被直接连接或耦合在一起,或者也可存在一个或多个中间元素。相反,当元素被称为被“直接连接”或“直接耦合”时,不存在中间元素。本主题可被体现为设备、系统、方法、和/或计算机程序产品。因此,本主题的部分或全部可以用硬件和/或软件(包括固件、常驻软件、微码、状态机、门阵列等)来具体化。此外,本主题可以采用计算机可使用或计算机可读存储介质上的计算机程序产品的形式,介质中收录了供指令执行系统使用或结合指令执行系统一起使用的计算机可使用或计算机可读的程序代码。在本文档的上下文中,计算机可使用或计算机可读介质可以是可包含、储存、通信、传播、或传输程序以供指令执行系统、装置或设备使用或结合指令执行系统、装置或设备一起使用的任何介质。
计算机可使用或计算机可读介质可以是,例如,但不限于,电、磁、光、电磁、红外、或半导体系统、装置、设备或传播介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。
计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁性存储设备、或能用于存储所需信息且可以由指令执行系统访问的任何其他介质。注意,计算机可使用或计算机可读介质可以是其上打印有程序的纸张或另一合适的介质,因为程序可以经由例如对纸张或其他介质的光学扫描而电子地捕获,随后如有必要被编译、解释,或以其他合适的方式处理,并随后存储在计算机存储器中。
当本主题在计算机可执行指令的一般上下文中具体化时,该实施例可包括由一个或多个系统、计算机、或其他设备执行的程序模块。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,程序模块的功能可在各个实施例中按需进行组合或分布。
图1是示出用于跟踪应用的系统的实施例100的图示。实施例100是用于创建跟踪目标、部署目标并分析结果的序列的简化示例。
实施例100示出了可完全自动化地或至少很大程度上自动化地收集关于应用的数据的跟踪系统的示例。得到的数据可是该应用的表征,包括该应用作为整体的或至少针对该应用的一些子集的剖析模型。这些结果可用于分析并调试该应用、设计监视度量或其他使用。
实施例100示出了取得应用102并进行某个初步分析104以创建要跟踪的事件、函数、存储器对象和其他潜在有意思的对象的列表106的一般化操作。可从该列表106创建检测机制或跟踪目标108并将其部署110到各种仪表化设备112、114和116。
仪表化设备112、114和116中的每一者可分别执行应用118、120和122的实例,并且该检测机制可生成输入流和跟踪器结果124形式的结果。结果124可被分析126,这可导致检测机制目标108被更新和重新部署,或者经聚集结果的集合128可被生成。
各仪表化设备可以是能够根据跟踪目标来收集数据的任何设备。在一些情况下,仪表化设备可具有可收集数据的专门或专用硬件或软件组件。在其他情况下,仪表化系统可以是可被配置成收集如跟踪器目标中所定义的数据的通用系统。
实施例100示出了可自动化地通过将跟踪工作负载拆分成许多小跟踪目标来生成针对应用的跟踪数据的系统。可部署较小的跟踪目标以使得这些跟踪目标不会不利地干扰应用的执行。
较小的跟踪目标可允许与可一次捕捉全部数据的完全跟踪器可能实现的相比详细得多并更细粒度的数据收集。在许多情况下,捕捉非常详细的数据集可消耗大量处理器、存储、网络带宽或其他资源。
在较小的跟踪目标被使用时,从不同的跟踪目标收集的数据可能不是精确地来自去往该应用的同一输入参数集合。由此,来自较小跟踪目标的结果可经历各种分析以确定这些结果是否可能是可重复的。当这些结果被示为是可重复的时,可聚集来自多个跟踪目标的结果以创建数据超集。
实施例100示出了其中应用可由若干设备执行的示例。在一些情况下,每一设备可执行应用的相同实例。一示例可以是可被进行负载平衡以使得每一设备执行相同副本的网站应用。在其他情况下,每一设备可执行较大应用的子集。一示例可以是分布式应用,其中每一设备执行可导致数据传递到另一设备以供进一步处理的功能或操作的集合。
图2是示出具有用于使用独立的跟踪目标来自动地跟踪应用的系统的计算机系统的实施例200的图示。实施例200示出可呈递实施例100以及其他实施例中描述的操作的硬件组件。
图2的图示出了系统的功能组件。在一些情况下,组件可以是硬件组件、软件组件、或者硬件和软件的组合。一些组件可以是应用级软件,而其他组件可以是执行环境级组件。在一些情况下,一个组件到另一组件的连接可以是紧密连接,其中两个或更多个组件在单个硬件平台上操作。在其他情况下,连接可通过跨长距离的网络连接来进行。每个实施例都可使用不同的硬件、软件、以及互连架构来实现所描述的功能。
实施例200示出了可具有硬件平台204和各软件组件的设备202。示出的设备202表示常规的计算设备,但是其它实施例可具有不同配置、架构、或组件。
在许多实施例中,优化服务器202可以是服务器计算机。在一些实施例中,优化服务器202仍然还可以是台式计算机、膝上型计算机、上网本计算机、平板或平板式计算机、无线手机、蜂窝电话、游戏控制台或任何其他类型的计算设备。
硬件平台204可以包括处理器208、随机存取存储器210、以及非易失性存储212。硬件平台204还可包括用户接口214和网络接口216。
随机存取存储器210可以是包含可由处理器208快速访问的数据对象和可执行代码的存储。在许多实施例中,随机存取存储器210可具有将存储器210连接到处理器208的高速总线。
非易失性存储212可以是在关闭设备202之后持久保持的存储。非易失性存储212可以是任何类型的存储设备,包括硬盘、固态存储器设备、磁带盒、光学存储、或其他类型的存储。非易失性存储212可以是只读、或能够读/写。在一些实施例中,非易失性存储212可以是基于云的网络存储或可通过网络连接访问的其他存储。
用户接口214可以是能够显示输出并且从用户接收输入的任何类型的硬件。在许多情况下,输出显示可以是图形显示监视器,但是输出设备可包括灯光和其他视觉输出、音频输出、动力致动器输出、以及其他输出设备。常规输入设备可包括键盘和定点设备,诸如鼠标、指示笔、跟踪球、或其他定点设备。其他输入设备可包括各种传感器,包括生物测定输入设备、音频和视频输入设备、以及其他传感器。
网络接口216可以是到另一计算机的任何类型的连接。在许多实施例中,网络接口216可以是有线以太网连接。其他实施例可包括基于各种通信协议的有线或无线连接。
软件组件206可包括操作系统218,各种软件组件和服务可在该操作系统218上操作。操作系统可在执行例程和硬件组件204之间提供抽象层,并且可包括与各个硬件组件直接通信的各种例程和功能。
实施例200示出了如被部署在单个设备202上的许多软件组件206。在其他实施例中,各软件组件206中的部分或全部可被部署在分开的设备上或甚至被部署在各设备群集上。
设备202示出了可管理对应用220的跟踪的许多软件组件。
对应用220的初步分析可使用静态代码分析器222或高级跟踪器224来执行。在一些实施例中,可使用静态代码分析器222和高级跟踪器224两者。
静态代码分析器222可检查源代码、中间代码、二进制代码或应用220的其他表示以标识可被跟踪或可收集针对其的数据的各元素。例如,静态代码分析器222可标识应用220的各函数、子例程、程序分支、库例程或可执行代码的其他部分,其中的每一个都可以是可收集针对其的数据的元素。此外,静态代码分析器222可标识存储器对象、参数、输入对象、输出对象、或可被采样或检索到的其他存储器元素或数据对象。
高级跟踪器224可以是轻量跟踪系统,该轻量跟踪系统可监视执行应用220并标识被执行的代码区段、被操纵的存储器对象、可被触发的中断、差错、输入、输出或其他元素,其中的每一者都可具有或可不具有可在跟踪期间收集的数据元素。
静态代码分析器222或高级跟踪器224可创建流控制图或各元件之间的关系的其他表示。这些关系可被遍历以标识出可能在生成跟踪目标228时有用的相关对象。
各元素可被跟踪目标生成器226分析以创建跟踪目标228。一旦创建之后,分派器230可使得跟踪目标228被跟踪器执行。
跟踪目标生成器226可生成可独立执行的跟踪目标,在应用220被执行时这些跟踪目标生成与该应用220有关的数据。独立的跟踪目标228可通过标识要跟踪的元素来构造,要跟踪的元素可以是函数、存储器对象、中断、输入对象、输出对象或其他元素。
一旦开始元素可被标识出,跟踪目标生成器226就可尝试找到也可跟踪的相关项。例如,函数可被标识为开始元素。相关项可包括传递给该函数的输入参数和从该函数传送的结果。进一步的相关项可以是被该开始函数调用的各函数和被传递给那些函数的各参数。对于每一函数,相关项可包括由该函数消耗的处理时间、所分配的堆存储器、由该函数创建或改变的存储器对象和其他参数。
在一些实施例中,跟踪目标模板227的集合可能是可用的。跟踪目标模板227可以是用于各种特定对象的开始框架。例如,可创建用于跟踪特定类型的函数的跟踪目标模板227,其中该模板可包括可通常为特定类型的函数测量的参数。其他示例可包括用于跟踪不同类型的存储器对象、中断、输入对象、输出对象、差错条件等的模板。
各模板可包括成本估计参数,这些成本估计参数可用于评估或估计特定跟踪目标的影响。成本估计参数可包括财务成本以及性能成本、资源消耗成本或其他成本。估计的成本可以是被跟踪目标生成器226用来确定给定跟踪目标是否可能太大而无法执行、太复杂而无法执行或执行起来太昂贵并因此可被拆分成多个较小的跟踪目标的因素。
当高级跟踪器224可被使用时,周期性数据可从所收集的数据中提取出。周期性数据可包括任何重复模式或重复数据的频率。周期性数据可被跟踪目标生成器226用来选择大小可被设定为捕捉周期数据的数据收集窗口。当数据收集窗口与已知重复周期相比更小时,任何剖析模型或其他分析都不可完全地捕捉该数据的行为。
跟踪目标生成器226可创建针对跟踪目标的执行参数。执行参数可包括数据收集窗口。在一些情况下,数据收集窗口可用开始时间和结束时间来定义。在其他情况下,数据收集窗口可用所收集的值的数量、所收集的数据的量或其他条件来定义。在又一些情况下,开始和停止条件可包括事件监视。例如,开始条件可在特定输入事件发生时开始跟踪,或者结束条件可在存储器对象达到某个值时被定义。
执行参数可包括数据收集参数,诸如采样频率。在一些情况下,数据收集参数还可包括关于何时收集数据的定义,这些定义可取决于计算出的、测量到的或观察到的数据。例如,数据可在参数X等于零时、在处理器负载小于80%时或某种其他条件下被收集。
跟踪目标生成器226可将可执行代码传送至跟踪器。可执行代码可包括条件定义或可在执行期间评估的其他代码。可执行代码还可包括可收集特定类型的数据的检测机制或其他代码。
在一些情况下,可执行代码可被插入应用以检索值、执行计算或可生成数据的其他功能。在一些实施例中,可执行代码可被包括在跟踪目标模板227中,并且可执行代码可在被包括在跟踪目标中之前由跟踪目标生成器226来定制或修改。
跟踪目标生成器226可为给定的被跟踪对象定义输入条件。除了所定向的用于监视的对象以外,输入条件还可以是所收集的数据。在一些实施例中,可分析并评估输入条件以比较相同或相关跟踪目标的不同运行。输入条件可包括任何输入参数、对象、事件或可影响被监视对象的其他条件。在许多实施例中,可创建可表示被监视对象的行为的剖析模型,并且可将输入条件用作剖析模型的一部分。
跟踪目标生成器226可创建可由分派器230传送到各仪表化系统246的多个跟踪目标228。
分派器230可确定用于执行跟踪目标的时间表,并使得这些跟踪目标被执行。该时间表可包括标识哪个设备可接收特定跟踪目标以及该跟踪目标可在何时被执行。在一些情况下,分派器230可使得某些跟踪目标被在多个设备上执行多次,并在一些情况下使得某些跟踪目标被在多个条件下执行多次。
数据收集器234可从各跟踪目标接收输出,并将这些结果和输入流236存储在数据库中。分析器232可分析数据以首先确定该数据是否可能是可重复的,随后将来自多个跟踪目标的结果聚集成经聚集的结果集合238。在许多实施例中,分析器232可创建可表示观察到的数据的剖析模型。这样的剖析模型可用于各种场景,诸如在开发或调试场景中标识瓶颈或映射过程流、在运行时或管理场景中监视成本或性能以及其他使用。
仪表化系统246可通过网络244连接到设备202。网络244可以是因特网、局域网或任何其他类型的通信网络。
仪表化系统246可在硬件平台248上操作,该硬件平台248可具有应用250可在其上执行的仪表化执行环境252。仪表化执行环境252可以是操作系统、系统虚拟机、进程虚拟机、或可执行应用250并提供跟踪器254或可在执行期间收集数据的其他检测机制的其他软件组件。
跟踪器254可从分派器230接收跟踪目标256。跟踪器254可评估并执行跟踪目标256以收集输入数据和跟踪器结果,随后将输入数据和跟踪器结果传送给数据收集器234。
在一些实施例中,单个跟踪器254可具有可并行或同时处理的多个跟踪目标256。在一些这样的实施例中,分派器230可标识可能不彼此重叠的两个或更多个跟踪目标256。示例可包括在一种类型的操作期间收集数据的第一跟踪目标和在另一种类型的操作期间收集数据的第二跟踪目标,其中这两种操作无法同时发生。在这样的示例中,任一跟踪目标都不会在另一跟踪器对象正在执行的同时执行。
在另一示例中,一些跟踪目标256可能是非常轻量的,因为该跟踪目标可能不对仪表化系统246有很多影响或不具有很多成本。在这样的情况下,分派器230可以向仪表化系统246发送若干这样的低成本或轻量跟踪目标256。
在一些实施例中,跟踪目标生成器226可创建大小可被设为具有最小影响的跟踪目标。这样的跟踪目标可通过估计对仪表化系统246的成本影响来创建,该成本影响可包括处理、输入/输出带宽、存储、存储器或跟踪目标可引起的任何其他影响。
跟踪目标生成器226可估计所建议的跟踪目标的成本影响,并随后在该成本可大于特定阈值时将该跟踪目标拆分成较小的独立跟踪目标。如果较小的跟踪目标仍可超过该阈值,则这些较小的跟踪目标还可再次被分析并拆分。
这样的实施例可包括成本分析、性能影响、或对每一跟踪目标的其他估计。在这样的实施例中,分派器230可尝试匹配具有不同成本约束的跟踪目标。例如,分派器230可能够启动具有高处理成本的一个跟踪目标以及具有很少处理成本但具有高存储成本的另一跟踪目标。两个跟踪目标合在一起不会超过预算的或最大的资源消耗量。
分析器232可创建跟踪器结果和输入流236的剖析模型。剖析模型可以是可基于给定输入集合来预测对象的行为的数学或其他表达。一些实施例可尝试通过随时间用真实的输入数据来训练剖析模型以将模型结果与实际结果进行比较来验证这些模型。
一些这样的实施例可使用监视系统来评估剖析模型。监视管理器240可将这些模型分派给各监视系统256。监视系统256可具有执行环境260可在其上运行应用262的硬件平台258。监视器264可接收配置266,配置266可包括要评估的剖析模型。
监视器264可以是轻量的检测系统。在许多情况下,监视系统256可以是其中监视器264可以是较大的系统施行和管理系统的一个组件的生产系统。监视器264可评估剖析模型以生成差错统计。差错统计可表示预测值和实际值之差。当差错统计较高时,可通过创建新的或经更新的跟踪目标来重新评估该剖析模型。当差错统计较低时,剖析模型可用于表示具有高置信度的观察到数据。
实施例200的体系结构示出了可执行应用的两种不同类型的系统。监视系统256可表示应用可在其上运行的生产系统,而仪表化系统246可以是可具有附加数据收集特征的专用系统。在一些情况下,仪表化系统246可以是与监视系统256相同或相似的硬件,并且可被专门地配置。在又一些实施例中,这两种类型的系统可在硬件和软件两者方面相同,但可按不同的方式被使用。
在一些实施例中,可生成跟踪目标的各组件还可被部署在可执行所跟踪的应用并收集结果的同一设备上。在一些这样的实施例中,一些组件可被分配给某些处理器或其他资源,而其他组件可被分配给不同的资源。例如,处理器或处理器组可用于执行并跟踪应用,而其他处理器可收集并分析跟踪器结果。在一些情况下,跟踪器目标可在一个处理器上执行,并监视在不同处理器上执行的应用的操作。
图3是示出用于创建并部署跟踪目标的方法的实施例300的流程图示。实施例300示出如在实施例200中示出的设备202的操作。
其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各个操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式示出一些操作原理而选择的。
实施例300示出了可通过其来创建并部署跟踪目标的通用方法。实施例300的各组件中的一些可在本说明书中稍后描述的其他实施例中更详细地示出。
实施例300示出了藉此静态代码分析和初始跟踪操作可标识出要跟踪的各个对象的方法。在一些实施例中,初始跟踪操作可标识可从其创建跟踪目标的足够信息。在其他实施例中,初始跟踪操作可标识要跟踪的对象,随后可针对这些对象中的每一者来执行第二初始跟踪操作。第二初始跟踪操作可收集对于单个跟踪操作中的许多对象来说可能收集起来太麻烦或太不切实际的详细数据。
在框302,可接收应用以供评估。在框303,该应用可经历初步分析。初步分析可收集可用于自动地创建跟踪器目标集合的各信息。可在各跟踪器目标上迭代以收敛于可影响被监视参数的统计上相关的输入参数。框303的初步分析可收集要监视的对象以及可被用于创建跟踪目标的操作限制。
初步分析还可包括可被用于为目标设置采样率和数据收集窗口的周期性分析。随着附加数据被收集和分析,采样率和数据收集窗口可随时间被调整。
在框304可执行静态代码分析以标识潜在跟踪对象。静态代码分析可标识函数和其他可执行代码元素、存储器对象和其他存储元素以及其他项。
在一些实施例中,静态代码分析还可生成可执行代码元素和存储器对象之间的关系。关系的示例可包括可示出各代码元素之间的因果关系或通信关系的流控制图。在许多情况下,存储器对象可与各代码元素相关。
在框306可执行高级跟踪。高级跟踪可帮助标识要跟踪的对象以及收集可在稍后在生成跟踪目标时使用的一些高级性能或数据特征。
在框308,在使用高级跟踪的执行期间,可标识执行元素和执行边界。执行元素可以是函数、库、例程、代码块或与可执行代码相关的任何其他信息。执行边界可指代诸如执行应用的标识出部分的时间量以及各存储器对象的预期值范围之类的性能特征。执行边界可包括函数调用和返回、过程产生事件和其他执行边界。
在框308,可标识出各组件之间的因果关系。因果关系可以是其中一个对象、函数、条件或其他输入可引起函数操作、存储器对象改变或其他效果的原因和效果关系。因果关系在标识相关对象或将相关对象收集在一起以供检测时可能是有用的。
在框310,可以标识输入参数。输入参数可包括到应用的任何输入,包括被传递给应用的数据、输入事件或可导致应用中的行为的其他信息。在一些实施例中,可分析各执行元素以标识可被定向到特定执行元素的输入参数。
在框312,高级跟踪可标识可在执行期间改变的各存储器对象。存储器对象可表示可为其创建跟踪目标的对象,其可在框314被添加到要跟踪的可能对象列表。
在框316,在高级跟踪执行的同时,可标识任何周期性或重复模式。许多应用以重复方式操作,并通常具有多个周期性。例如,零售网站应用可具有其中工作负载在节假日附近增加的季节性周期性以及其中工作负载在星期几可预测地改变的每星期周期性。相同的应用也可在一天中的不同时间经历可重复的改变。
当应用的周期性可已知时,跟踪器对象的数据收集窗口可被设置成捕捉一个周期的多个循环。捕捉多个循环的数据可用于生成剖析模型,这些剖析模型包括将周期性纳入考虑的因素。当数据收集窗口没有收集到足够的数据来捕捉周期性时,剖析模型可生成更多差错,从而使得该模型不那么可靠和可重复。
可执行若干性能测试,包括在框318的存储测试、在框320的网络带宽和框322的可用计算带宽。性能测试可在与跟踪目标可被运行的相同或相似的条件下执行。例如,框318、320和322的性能测试可在应用正在执行的同时在仪表化系统上执行。
这些性能测试可用于设置用于创建满足最大成本目标的跟踪目标的边界或阈值。在这样的实施例中,可在应用在执行的同时分析这些性能测试以确定剩余的性能带宽。对于可计算受限的应用,计算性能可能被重度使用,但可存在可由跟踪目标消耗的多余的存储和网络带宽。在另一示例中,应用可能是网络或输入/输出受限的,从而留有多余的计算可供跟踪目标无偿使用。
在许多情况下,可为跟踪成本定义预算或目标。例如,目标可被设为使用多达10%、20%、50%或某个其他值的系统资源来用于跟踪使用。当这样的目标可被设定时,跟踪目标可被创建得足够小且足够轻量以满足该目标,并且跟踪目标可被分派或调度以满足该目标。
对跟踪资源的分配在应用执行时间敏感的操作时或在此跟踪可关注于性能监视或优化时可能是有用的。通过仅分配最大量的资源,该应用可能不会受到过度跟踪的不利影响。
在框324,可创建跟踪目标。稍后在本说明书中提供用于创建跟踪目标的更详细的方法的示例。部署目标可在框326创建以生成部署时间表,并且可在框328部署这些目标。
随着目标被部署,结果可在框330被接收并被分析。分析可标识要对跟踪目标作出的改变,诸如通过周期性分析来标识要对采样率或数据收集窗口作出的改变或要对收集某些输入数据流作出的改变。这样的改变可使得跟踪器目标在框332被更新,并在框326被重新部署。
图4是示出用于确定默认的采样率和数据收集窗口的方法的实施例400的流程图示。实施例400示出如在实施例200中示出的设备202的一些操作。
其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各个操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式示出一些操作原理而选择的。
实施例400示出用于确定跟踪器目标的采样率和数据收集窗口的初始设置集合的方法。一般来说,一时间序列的采样率可反映可在数据流中观察到的最高频率。随着采样率变得更快且数据样本的时间片变得更短,数据可捕捉更高的频率。随着采样率的降低,较高的频率可能无法在数据流中被检测到,并可增加观察到的噪声。
数据收集窗口可定义可在时间序列数据集中观察到的最长频率。一般来说,统计上显著的样本大小可以是作为数据内的最长周期的周期的至少两倍或三倍。小于数据内的最长周期的数据收集窗口可导致包含观察到的噪声的数据集。
实施例400的操作可用于设置可默认被应用于跟踪器目标的初始采样率和数据收集窗口。一旦跟踪器目标已被部署并且其得到的数据已被分析,则可对采样率和数据收集窗口作出改变。
在框402,可接收初始跟踪结果。初始跟踪结果可来自对应用的初步跟踪。初步跟踪可标识要测量的若干参数以及要捕捉的若干输入流。在许多情况下,初步跟踪可在具有很少或没有关于应用的知识的情况下被执行。
在框404可执行自动相关性分析以标识数据中的主导周期性。框404的周期性分析可标识可被包含在数据中的多个频率。这些频率中的一些可具有与其他频率相比更强的影响。
长频率可在框406被标识出并可被用来确定默认的数据收集窗口。数据收集窗口可定义可获得时间序列样本的时间长度。一般来说,数据收集窗口可被选为是最长周期或频率的长度的两倍、三倍或更多倍。
小周期性可在框408中被标识出并被用于确定默认的采样率。默认采样率可足够短,使得最小频率可由5个、10个或更多个样本捕捉到。
在框410可存储默认的数据收集窗口和采样率。可将默认的数据收集窗口和采样率用作跟踪器目标的开始点。在许多情况下,在分析了更详细的数据后可调整数据收集窗口和采样率。
在一些实施例中,可将默认的采样率和数据收集窗口设为彼此相关。例如,可使用初始数据的主频率来设置默认采样率,随后可将默认数据收集窗口设置成数据样本的预定义倍数。在一个这样的示例中,可将默认数据收集窗口设为是默认采样窗口的长度的10000倍,这可导致要分析的10000个时间序列数据集合。
在另一示例中,默认数据收集窗口可用相对较长的主频率来确定,并且采样率可被确定以产生预定义数目的样本。在一个这样的示例中,默认数据收集窗口可被设为是一小时,并且采样率可被设为是0.36秒以每次运行产生10,000个样本。
图5是示出用于创建个体跟踪目标随后聚集收集到的数据的高级过程的实施例500的图示。实施例500的过程创建可被部署并使用若干优化分析来优化的独立跟踪目标。一旦跟踪目标已收敛于统计上有意义的结果,来自多个跟踪目标的结果可被聚集。
初始跟踪目标集合可被分析、改善并迭代以收敛于统计上有意义的结果。实施例500可表示用于通过使用较小的独立跟踪器目标来跟踪任何应用的自动化方法体系。跟踪目标可被划分、拆分或以其他方式变得足够小以满足跟踪器预算,随后跟踪目标可被独立地运行并评估。
在框502,可定义用于收集跟踪数据的总目标。在框504可执行成本分析以确定是否可实现该跟踪目标。当该跟踪目标超过成本目标集合时,可在框506将该目标划分成较小的目标,在框504可以再次通过成本分析来评估这些较小的目标。框504和506的迭代过程可得到满足成本目标的多个跟踪目标。
成本目标可以是用于创建大小可被恰适地设为用于给定应用和给定场景的跟踪器目标的机制。通过设定跟踪器目标的大小以使得该跟踪器目标不超过成本目标,可在数据收集期间使对跟踪器目标的任何负面影响最小化。
可支持若干不同的跟踪场景。在一个场景中,可将应用部署在大量设备上。一个示例可以是可被部署在数据中心中的若干服务器上的网站,其中所有这些服务器都用作用于并行处理传入的web请求的群集。在这样的示例中,服务器的性能在跟踪器目标相对较小并且消耗很少资源时被更准确地测量。
在另一示例中,蜂窝电话平台的应用可被部署在大量手持式设备上。一跟踪场景可使得每一设备执行一跟踪器目标,这可仅消耗有限量的资源。对跟踪器目标的基于成本的分析可确保手持式设备不会被此跟踪工作负载压垮。
随着目标在框509被部署并且数据被收集,该数据可按若干不同的方式被分析。对于每一跟踪器目标,输入流可与测量到的结果一起被收集。在框510,可对输入流进行拣选以将对预测结果具有统计上较小或不显著的贡献的那些输入参数或值移除。在框512,可将其他输入参数添加到跟踪器目标。该过程可在框509、510和512之间迭代直到对预测测量到的结果而言在统计上有意义的输入参数收敛。
当在框512检查跟踪器目标以尝试添加输入参数时,可检查相关对象。相关对象可以是通过静态代码分析(诸如从控制流图或其他关系中)标识出的对象。在一些情况下,可检查具有相似周期性的跟踪结果以评估输入流中的不同参数。
对框509、510和512进行迭代的结果可得到可预测给出输入参数集的跟踪器结果的数学模型。每一跟踪器目标可生成单独的数学模型。
在框514,可为了完整性而分析这些结果。完整性假设可假定这些跟踪器目标已体验了全范围的输入条件。可在框514通过将由相同跟踪目标的不同运行所体验的输入流进行比较来测试该假设,并且在一些实施例中通过将由不同跟踪器目标的运行所体验的输入流进行比较来测试该假设。当该假设可能没有被确认有效时,可在框516收集更多的数据。
当完整性假设可在框518被确认有效时,可在框520测试可结合性假设。可结合性假设可假定可将从不同跟踪器目标创建的两个模型组合成一个较大的模型。可结合性假设可通过以下方式来测试:联接两个预测模型并使用先前收集的数据来测试经组合模型的结果或对照实时数据来测试这些结果。
当经联接的模型不产生统计上有意义的结果时,可在框522创建组合这两个跟踪器目标的新跟踪器目标。得到的数据集合和分析可得到与最初针对可结合性假设被测试的组合模型不同的模型。
可针对部分或全部跟踪器目标来测试可结合性假设。当该假设可以在框524被验证时,收集到的数据可在框526被聚集。
聚集的数据可在许多不同的场景中被使用。在调试和测试场景中,聚集的数据可被开发者用来理解程序流并突出任何性能瓶颈或可被解决的其他异常。在优化场景中,聚集的数据可被自动化或半自动化优化器用来例如将不同的资源应用于应用的某些部分。
图6是示出用于创建并部署跟踪目标的方法的实施例600的流程图示。
其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各个操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式示出一些操作原理而选择的。
实施例600示出了通过向跟踪器目标分配各对象来创建跟踪器目标的方法。跟踪器目标可经历可使得这些跟踪器目标被划分成较小的跟踪器目标的成本分析,随后跟踪器目标可被分派。
实施例600示出了可完全自动化地开始用于跟踪应用的迭代方法的方法。该迭代方法可创建较小的独立跟踪器目标,可部署这些跟踪器目标,并在这些跟踪器目标上迭代以收敛于可反映应用如何执行的统计上有效的跟踪器模型的集合。该方法可对任意应用执行,并可自动地生成对应用的有意义的理解,而无需人类干预。在一些实施例中,人类干预可在不同的阶段被用于影响或引导对应用的自动化发现和分析。
在框602,可接收要跟踪的对象列表。该对象列表可通过静态代码分析或其他初步分析标识出。这样的分析的示例可在实施例300的框303中找到。
在框604对于该对象列表中的每一对象,如果在框606该对象包含在另一跟踪器目标中,则在框608可跳过该对象。当在框606该对象不在预先存在的跟踪器目标中,则在框610可标识出相关对象。
相关对象可以是可适合于包括在单个跟踪器目标中的、任何其他要跟踪的对象。例如,要跟踪的对象可以是存储器对象。存储器对象可以通过函数来设置,因此该函数可被添加到跟踪器目标。其他函数可读取该存储器对象,因此这些函数也可被添加。
在该示例中,可设置存储器对象的函数可具有与可读取该存储器对象的函数相比更强的与存储器对象的关系。在该过程中稍后处,当跟踪器目标执行起来可能太过昂贵或麻烦时,可将具有较弱关系的对象从跟踪器目标中移除。可将可从跟踪器目标中移除的那些对象添加回对象列表。
在框612对于每一相关对象,如果在框614该相关对象已经在预先存在的跟踪器目标中,则在框616可将该对象移除。
框606到框616的过程可以是一个通过跟踪多个跟踪器目标中的相同对象来将相关对象收集到跟踪器目标中而没有重复努力的方法。框606到616的示例可将对象分配给跟踪器目标以用最小数目的跟踪器目标来最大化收敛。
对要跟踪的每一对象,可标识性能参数集合。在许多情况下,跟踪器目标的模板可包括与某种类型的对象相关的可测量的参数。例如,存储器对象可通过测量所作的改变的数目、访问的数目和其他测量来跟踪。在另一示例中,可执行代码的函数或其他框可通过测量以下来跟踪:完成速度、抛出的差错标记、堆分配和使用、垃圾收集频率、每单位时间完成的指令数、处于活跃处理的时间百分比、处于各种等待状态的时间百分比和其他性能度量。在又一示例中,消息接口可通过测量以下来跟踪:所传递的消息数、这些消息的有效载荷、向每一消息分配的处理时间和通信带宽以及其他参数。
其他实施例可创建具有重叠覆盖的跟踪器目标,其中单个对象可由两个或更多个不同的跟踪器目标来跟踪。当更多资源可致力于跟踪时,这样的实施例可能是有用的。
当在框618对用于跟踪目标的对象进行分组后,可在框620应用默认周期性设置的集合。在框622可执行成本分析。在一些情况下,可根据单个跟踪器目标来创建两个或更多个目标。可在本说明书的稍后处找出这样的方法的示例。
在框624,可使跟踪器目标准备好以供初始分派。这样的准备可定义通信配置,该通信配置可定义跟踪器可如何与数据收集器通信。该通信配置可包括数据收集器的地址以及许可、协议、数据模式以及其他信息。
在框626可分派跟踪器目标并收集结果。在框628可通过移除统计上不显著的输入参数并搜索以查找潜在显著的输入参数来优化跟踪器目标。
在循环通过框626和628后,在框630可聚集这些结果。
图7是示出用于对跟踪器目标执行成本分析的方法的实施例700的流程图示。实施例700可示出可在实施例600的框622中执行的过程的一个示例。
其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各个操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式示出一些操作原理而选择的。
实施例700示出了藉此可针对成本影响评估跟踪器目标并将该跟踪器目标划分成较小的跟踪器目标的方法。成本影响可以是跟踪器目标的资源消耗。在一些实施例中,可将该成本转换成财务成本,而在其他实施例中该成本可以是就由跟踪器目标消耗的资源而言的。实施例700是后一种类型的成本分析的示例。
实施例700使用三种不同的成本计算:性能成本、存储成本和网络带宽成本。这样的实施例是可具有要满足的多个独立的成本函数的成本分析的示例。其他实施例可具有更多或更少要评估的成本函数。
在框702,可接收目标。
在一些实施例中,在框704,可使用跟踪器目标来执行测试运行。在这样的实施例中,可测量跟踪器的性能以估计这些成本分量。在其他实施例中,可对跟踪器目标执行静态代码分析以确定各成本分量。
在框706可执行对计算成本的估计。在框708可执行对存储成本的估计,并在框710可执行对网络带宽成本的估计。在框712中可确定跟踪器目标的总成本。
计算成本或处理器成本可反映在执行跟踪器目标时可能招致的处理器资源的量。在许多情况下,跟踪操作与应用的简单操作相比可显著地更复杂。例如,一些跟踪器可招致10个或更多个处理器步骤以分析应用中的单个处理器动作。
存储成本可反映跟踪器目标可消耗的非易失性或易失性存储器的量。在许多情况下,跟踪器目标可收集可被存储和处理的大量数据。跟踪器目标的存储成本在一些情况下可非常大,这可限制性能。
网络带宽成本可以是在将收集到的数据传送至数据储存库时消耗的资源。网络资源可包括网络接口卡、网络连接和其他网络相关资源的操作。随着更大量的数据可跨网络连接移动,网络连接可变得饱和并导致对其他通信的破坏。
当在框714成本大于预定义阈值时,可在框716将目标划分成两个或更多个较小的跟踪器目标。这样的过程的示例可在本说明书的稍后处描述的另实施例中示出。
当在框714成本小于预定义阈值时,可在框718为跟踪器目标配置数据收集机制,并且可在框720将跟踪器目标发送至分派器。
框718的数据收集机制可定义可如何收集数据。在一些实施例中,数据收集机制可包括可收集数据的目的地设备描述以及任何通信参数或设置。
图8是示出用于将跟踪器目标划分成较小的跟踪器目标的方法的实施例800的流程图示。实施例800可示出可在实施例700的框716中执行的过程的一个示例。
其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各个操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式示出一些操作原理而选择的。
实施例800示出藉此可修整跟踪器目标以满足成本目标的一种方法。实施例800仅示出了藉此可使用自动化过程来使跟踪器目标变得更小的一种方法。在实施例800中,可基于关系强度来将对象进行排序,随后可将具有较强关系的对象合并成跟踪器目标。任何剩余的对象可被回收到新的跟踪器目标中。
在框802,可接收跟踪器目标。
在框804对于跟踪器目标中的每一对象,可在框806估计该对象的成本贡献。成本贡献可以是跟踪那个对象的成本。
可在框808标识该对象与跟踪器目标内的其他对象的关系,并在框810可为这些关系评分。该评分可反映关系的强度。
可在框812用框814中的开始对象来开始新的目标。可在框816依据分数来将该对象与其他对象之间的关系进行排序。该排序可导致最强的关系被首先分析。
在框818可选择一关系并将该关系临时添加到跟踪器目标。在框820,可以估计跟踪器目标的成本。在框820的成本估计可利用在框806确定的成本贡献。如果在框822成本小于阈值,则该过程可返回框818以将另一对象添加到跟踪器目标。
当在框822成本大于阈值时,可将最后一个对象从跟踪器目标中移除。在这样的情形中,添加最后一个对象可能已使跟踪器目标超过了成本分配,因此它可被移除。
当在框826还有对象可用但尚未被放置在跟踪器目标中时,处理器可返回到框812以开始新的跟踪器目标。当在框826已处理了所有对象时,可在框828部署跟踪器目标。
图9是示出用于对跟踪器目标的采样率和数据收集窗口进行调整的过程的实施例900的流程图示。
实施例900示出了其中可使用周期性分析来细化跟踪器目标的数据收集的示例过程。在一些实施例中,可使用默认的采样率和数据收集窗口来执行每一跟踪器目标,随后在考虑到实际数据已被收集后可细化这些参数。
在框902,可为跟踪器目标假设周期性。该周期性可以是可从对应用的初始分析中导出的默认周期性。在许多情况下,默认周期性可反映应用作为整体的周期行为,而跟踪器目标可生成具有不同周期行为集合的数据。然而,可在默认周期作为开始点的情况下执行跟踪器目标的第一次运行。
可在框904通过使用框906中的自动相关来分析跟踪器目标的第一结果,这可生成数据中的特征周期性或频率。通过这样的分析,可在框908标识出主导的上限和下限频率。
主导的上限频率或最短周期性可用于设置采样率。在许多情况下,采样率可被设置成使得在主导上限频率的单个时段内可取得5个、10个、20个或更多个样本。
相似地,主导下限频率或最长周期性可用于设置数据收集窗口。在许多情况下,数据收集窗口可被设置成捕捉最长周期性的至少2个、3个、4个、5个或更多个实例。
在分析了跟踪器目标的初始运行后,可在框910更新跟踪器目标并在框912分派该跟踪器目标。
图10是示出具有用于评估跟踪器目标结果的反馈环的方法的实施例1000的流程图。实施例1000可示出可在实施例600的框626和628中执行的过程的一个示例。
其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各个操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式示出一些操作原理而选择的。
实施例1000示出了其中可评估跟踪器目标的输入参数并在其上迭代以收敛于统计上有意义的输入参数的集合的实施例。实施例1000可丢弃与测量到的参数具有很少统计关系的那些输入参数,并可尝试添加与测量到的对象可具有关系的新输入参数。
可在框1002接收跟踪器目标的结果集,并可在框1004构建这些结果的剖析模型。剖析模型可以是输入流和测量到的结果之间的关系的数学表达。剖析模型可使用线性或非线性回归、曲线拟合或用于表达观察集的许多不同技术中的任何一个来创建。在许多情况下,剖析模型可具有可指示输入因数相对于剖析模型的程度或重要性的相关性因素或其他因素。
在框1006中,可依据重要性对输入参数进行排序。在框1008中,可选择第一输入参数。在框1010可标识具有同一输入参数的其他跟踪器目标。
对于在框1010标识出的每一目标,可在框1012分析这些目标。在框1014,可标识相关输入参数。相关输入参数可以是针对那个跟踪器目标的其中与测量到的参数可存在最小统计相关性的参数中的任一者。
在框1016对于这些参数中的每一者,如果该参数在当前跟踪器目标中,或先前在当前跟踪器目标中被考虑,则可在框1020跳过该参数。
如果在框1018该参数在当前跟踪器目标中尚未被检查,则可在框1022将该输入参数添加到输入列表中。可在框1024为该参数计算相关性分数。
相关性分数可指示该参数可与当前跟踪器目标相关的预期程度。在一些实施例中,相关性分数可以是当前跟踪器目标和正在检查的相关跟踪器目标之间的关系强度以及输入参数对相关跟踪器目标的相对重要性的因数。
在框1016针对框1012中的每一目标处理了所有参数后,如果在框1026可处理另一相关输入参数,则该过程可返回框1008以添加更多的候选输入参数。
在框1028,可移除当前跟踪器目标内的非相关输入参数。
在框1030,可依据分数对潜在输入参数的列表进行排序。该列表可包括在框1022添加的所有参数。
在框1032可选择顶部输入参数群组。该顶部群组可包含具有大于给定阈值的分数的输入参数。假设在框1034该群组为非空集合的情况下,可在框1036将该群组添加到跟踪器目标,并在框1038分派该群组以供再次处理。可使用跟踪目标的结果作为框1002的输入。
当在框1034可用输入参数的集合为空集合时,在框1040由于可能已耗尽了所有潜在输入参数,迭代可结束。
图11是示出用于使用频率相似性来在各跟踪器目标上进行迭代的方法的实施例1100的流程图示。实施例1000可示出可在实施例600的框626和628中执行的过程的另一示例。
其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各个操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式示出一些操作原理而选择的。
实施例1100可与实施例1000相似,因为跟踪器目标可用可具有统计上显著的可能性的输入参数来更新。实施例1100可通过对各跟踪器目标的周期性分析来收集那些输入参数。具有相似的频率签名或周期性的那些跟踪器目标可以是具有统计上相关的输入参数的候选。
在框1102,可接收来自许多跟踪器目标的结果。在框1104对于每一目标,可在框1106执行周期性分析以标识数据内的频率或周期。在框1108中,可创建频率曲线或签名。
频率曲线可包括多个频率以及各频率的剧烈度或强度。频率曲线可用作标识由跟踪器目标收集的数据的行为的签名。在框1112,可选择一跟踪器目标作为开始目标。在实施例1100,可评估每一跟踪器目标以尝试找到可与给定被跟踪对象或被观察数据点相关的附加输入参数。该过程可迭代以添加潜在的新输入参数,测试新参数以及迭代。
在许多实施例中,每一迭代可包括移除可以是统计上不显著的那些输入参数,同时尝试添加可以是统计上显著的输入参数。
在框1114对于每一跟踪器目标,可通过将在框1112选择的目标的频率签名与在框1114分析的跟踪器目标进行匹配来确定相似性分数。相似性分数可以是两个频率签名的相关性或相似性的统计测量。
在框1118中,可依据相似性分数来对跟踪器目标进行排序。在框1120从最相似的频率签名开始,可在框1122分析每一输入参数以确定相关性分数。相关性分数可考虑与输入参数的相关性耦合的频率签名与在框1120中选择的跟踪器目标中收集到的数据的相似性。在许多实施例中,在框1116创建的相似性分数可与输入参数的影响因数相乘以产生相关性分数。
在框1126,可依据分数对经评分的输入参数进行排序。可在框1128选择参数,并当在框1130该参数可大于阈值时,可将该参数添加到跟踪器目标,并且该过程可循环回到1128以选择经排序列表中的下一参数。
当在框1130参数不满足相关性阈值,但在框1134可能已经添加了一些新的参数并且在框1140附加的目标仍然待处理时,该过程可返回到框1120以尝试添加来自其他跟踪器目标的更多输入参数。
当在框1130参数不满足相关性阈值且在框1134尚未添加新的参数时,在框1138可停止对目标的迭代。在此阶段,实施例1100的过程可能还没有标识出可能潜在的相关的任何新输入参数。
当在框1140处理了每一目标以生成输入参数后,当在框1142附加目标尚未经历输入参数分析时,该过程可返回到框1112以选择另一跟踪器目标进行分析。
当在框1142已为附加输入参数分析了每一跟踪器目标,并且在框1144可能已更新了至少一些跟踪器目标后,可在框1146分派经更新的目标。当在框1144没有经更新的目标可能可用时,在框1148迭代过程可停止。
图12是示出用于确认剖析模型的有效性的方法的实施例1200的图示。实施例1200示出了藉此可使用测试目标来生成可在复杂的高度仪表化的设备上运行的剖析模型的方法。这些模型随后可由可被部署在生产系统上的较轻量的监视系统来确认有效。
在一个使用模型中,应用可使用高度仪表化测试环境使用可捕捉详细数据的独立跟踪目标来评估。可从该数据创建应用的小型元素的剖析模型。为了测试剖析模型,可将这些模型部署在可具有或可不具有执行详细数据收集的能力的生产硬件上。
在一示例中,移动电话应用可使用移动电话的虚拟化版本来测试,其中该虚拟化版本可在具有大量计算能力的台式计算机上执行。数据收集可使用可与被测应用一起执行的跟踪目标来执行。一旦已生成了可表示该数据的剖析模型,就可将该模型分派给生产移动电话设备,该生产移动电话设备可执行仅测试一个小型剖析模型的非常轻量的监视。由于剖析模型可能不会消耗许多资源,监视器可收集关于移动电话的数据以生成差错统计。
在框1202,可创建跟踪目标,并在框1204可部署那些目标。在框1206,可从得到的数据中生成剖析模型。
在框1208可将剖析模型部署到设备,其中在框1208设备可使得监视代理被安装。
剖析模型可具有一个或多个输入参数,并可执行数学函数,随后返回预测到的结果。监视代理可从实际的使用中捕捉输入参数,执行在该模型中定义的计算,并将预测结果与实际结果进行比较。监视代理可生成差错统计,该差错统计可从预测结果和实际结果之差中导出。
框1210中具有高差错统计的那些模块可在框1212更新跟踪目标并在框1204重新提交跟踪目标。可在框1214中将具有低差错统计的那些模型假设为是准确的模型,并在框1216可降低或移除监视频率。在框1218,可将这些模型与其他模型聚集在一起。
可将监视器和剖析模型部署成可检测性能、输入数据或其他条件可在何时已消失的通用监视系统。在这样的实施例中,剖析模型可被创建以监视可导致显著破坏的变量或条件或以其他方式警告不利条件。在一些情况下,这样的模型可从聚集的数据中导出。
图13是示出用于分析来自跟踪目标的结果的方法的实施例1300的流程图示。
其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各个操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式示出一些操作原理而选择的。
实施例1300仅示出了用于分析跟踪目标结果的方法的一个示例。实施例1300示出了将来自跟踪目标的不同实例的多个跟踪目标结果进行比较的示例分析方法。在许多情况下,单个跟踪目标可被执行多次,即要么在多个设备上执行多次,要么在同一设备上以不同的次数执行。结果集可被分析以确定这些结果是否是一致且可预测的。一致且可预测的结果可被认为是好结果,其可与其他类似地好的结果聚集在一起。
实施例1300是可分开地分析输入流和结果流以使用每一流来作出判定的实施例的示例。
在框1302中,可以处理每一结果集。对于框1302中的每一结果集,可在框1304生成针对输入流的概略统计,并在框1306可对输入流进行表征并分类。类似地,结果流可具有在框1308生成的概略统计以及在框1310执行的表征和分类。这些结果的剖析模型可在框1312创建。
在框1304和1308生成的统计可具有对数据的高级表示。这样的统计可包括平均数、中值、标准差和其他描述符。在框1306和1310执行的表征和分类可涉及曲线拟合、对标准曲线的统计比较、线性和非线性回归分析或其他分类。
在框1312生成的剖析模型可以是对观察到的数据的行为的任何类型的数学或其他表达。剖析模型可具有可从输入流绘制出的输入参数以预测结果流的值。
在框1314,可选择目标。在框1316可标识该目标的所有结果集。在一些实施例中,许多结果集可被生成,但实施例1300的操作可出于说明的目的而假设可存在至少两个结果集。
在框1318可比较每一实例的剖析模型。当在框1320这些实例的剖析模型是相同的时,可选择该模型来表示观察到的数据。在许多实施例中,对在剖析模型生成期间生成的数字值的比较可能不是准确的。在这样的实施例中,在框1318对剖析模型的比较可使用统计置信因数(诸如,例如为0.99或更大)来认为各模型是相似的。
当在框1320这些剖析模型不是相同的时,可在框1324比较输入流。当在框1326这些输入流不相似时,可在框1328以较长的运行时来重新执行目标。
当输入流不相似时,这些目标中的一者或两者可能还没有经历整个范围的输入变型。由此,从输入流生成的任何模型都不可充分地表示应用的实际行为。在周期可能是剖析模型中的统计上显著的参数的情况下,这样的状况可在数据收集窗口没有充分地涵盖至少很少数目的周期时发生。
当在框1326输入流相似时,剖析模型可以是可能在统计上显著的缺少的参数。在框1330,可将一些参数添加到跟踪目标。在一些实施例中,可在框1332将统计上不显著的参数从跟踪目标中移除。统计上不显著的参数可以是剖析模型中对最终结果具有很少影响或没有影响的那些参数。
可在框1334重新提交经更新的跟踪目标以用于调度和部署。
如果可在框1336处理另一目标,则该过程可返回到框1314以选择新目标。当在框1336不再有目标可用时,可在框1338聚集结果。
图14是示出具有跟踪目标分派器的网络环境的实施例1400的图示。实施例1400示出一环境,该环境具有分派器设备1402、跟踪生成器设备1404和跟踪器设备集合1406,所有这些设备都可经由网络1408连接。
实施例1400可示出可使跟踪目标匹配可执行该跟踪目标的设备的跟踪分派器。该匹配可基于跟踪设备的配置和估计出的对跟踪目标的资源消耗作出。
分派器设备1402可在硬件平台1410上操作,并可具有可将各跟踪器目标1414分派给跟踪器设备1406的分派器1412。分派器1412可考虑设备配置1416,该设备配置1416可由跟踪管理器1418来收集并更新。分派器1412可将跟踪器目标放置在处于可为每一设备定义的跟踪器资源预算内的设备上。该预算可标识可为跟踪功能而拨出的资源集。随着跟踪目标可被放置在设备上,该设备的跟踪器资源预算可被更新,从而保持可用资源预算。
在许多情况下,跟踪器设备集合1406可具有不同的硬件和软件配置、工作负载或在分派跟踪器目标时可考虑的其他区别。跟踪管理器1418可以在正在进行的基础上收集并更新这样的设备配置1416。
分派器设备1402可使用可能已使用跟踪器生成器设备1404创建的跟踪器目标1414。跟踪器生成器设备1404可在硬件平台1420上操作并可具有跟踪器目标生成器1422,该跟踪器目标生成器1422可通过分析应用1424来创建跟踪器目标。
跟踪器设备1406可在硬件平台1426上操作并可具有跟踪器1428,该跟踪器1428可对照应用1432的实例来执行跟踪器目标的清单1430。
图15是示出用于部署跟踪器目标的方法的实施例1500的流程图示。实施例1500可示出高级方法,且稍后的实施例示出可如何实现某些部分的一些详细示例。
其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各个操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式示出一些操作原理而选择的。
实施例1500示出一高级过程,该高级过程在框1504表征设备,在框1522表征跟踪器目标,并在框1524将这些目标部署在设备上。实施例1500示出可用于分派跟踪器目标的一种方法,尤其是其中各跟踪设备可被不同地配置的一种方法。
在框1502中,可接收设备描述符集合。描述符可以是可被部署成跟踪器设备的设备的网络地址或其他标识符。
对于框1506中的每一设备,可收集许多数据点。在实施例1500的示例中,这些数据点可被示为是在部署跟踪器目标之前被收集的。在许多实施例中,各数据点中的一些数据点可随时间改变,并可被周期地更新。其他数据点可相对恒定并且可能不会被同样频繁地更新。
在框1508,可确定硬件配置。硬件配置可包括处理能力和容量、存储容量和其他硬件参数。
在框1510,可确定网络拓扑结构。网络拓扑结构可包括跟踪设备在网路内的定位,在确定将跟踪器目标部署在何处时,其可被用作输入参数。
在框1512可确定跟踪器设备的软件配置。在一些情况下,软件配置可包括特定跟踪能力。一些实施例可具有跟踪设备的非同构群组,其中一些设备具有其他设备可能没有的跟踪能力。此外,在一些情况下,一些设备可具有可干扰、影响或降级跟踪能力的某些附加软件组件或工作负载。这样的知识在使特定跟踪目标匹配设备时可以是有用的。
在一些实施例中,在框1514可执行性能测试。与诸如在框1508到1512执行的静态分析相对,这些性能测试可测量可被动态地测量的某些性能能力。
框1514的性能测试可测量处理器能力、存储资源、网络带宽和其他性能度量。在一些情况下,性能测试可在被测应用正在执行的同时被执行。性能测试可标识由设备消耗的资源,其可在计算用于跟踪的资源预算时被用作因素。
在框1516,可标识预定义的分配。预定义的分配可以是可优先于跟踪的任何限制或资源分配。例如,生产应用可被分配以在高工作负载时段期间在不进行任何跟踪的情况下执行。这样的分配可以是基于时间的,因为资源可基于时间段来分配。在另一示例中,设备可向可能与被测应用和任何相关联跟踪功能无关的第二应用或功能分配资源。
在一些情况下,某些设备可具有所分配的可专用于跟踪功能的资源。例如,设备可具有可被分配给跟踪的存储系统和网络接口卡,而另一存储机制和网络接口卡可被分配给该被测应用。这样的设备可被专门分配用于跟踪,而其他设备可具有有限的或没有用于跟踪的资源可用性。
可在框1518定义初始跟踪器资源预算。跟踪器资源预算可定义特定设备的可由跟踪器目标消耗的资源。在一些情况下,跟踪器资源预算可被设为总容量的百分比。例如,跟踪器资源预算可以是5%、10%、20%、25%、50%的资源或资源的某一其他百分比。
在一些情况下,跟踪器资源预算可以是可用资源的百分比。例如,在框1514中性能测试可确定被测应用可消耗处理器容量的45%,这意味着处理器容量的55%可能没有被利用,并且可被用于跟踪。在这样的示例的简化版本中,多达55%的处理器资源可被分配用于跟踪,而不会不利地影响应用。
在确定各参数后,设备的配置可被存储。配置中的一些元素可能是相对静态的,诸如硬件配置和网络拓扑结构,而诸如可用资源之类的其他元素可随时间动态地改变。一些实施例可监视该配置并随时间更新各元素。
当在框1504表征了设备后,可在框1522表征各跟踪器目标。框1524的部署步骤可使跟踪器目标特征与设备特征匹配,并使得跟踪器目标被执行。在框1526可接收并分析这些结果。
图16是示出用于跟踪器目标表征和部署的方法的实施例1600的流程图示。
其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各个操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式示出一些操作原理而选择的。
实施例1600示出了用于表征跟踪器目标随后使那些跟踪器目标与可用设备匹配的详细方法。可为每一设备创建一跟踪器目标清单,随后可将该清单部署到设备以供执行。
实施例1600的方法可尝试将最昂贵的跟踪器目标放置在具有最多可用资源的设备上。可将多个跟踪器目标添加到设备,直到可利用全部所分配的跟踪资源。实施例1600可尝试使用正在检查的每一设备的全部可用跟踪资源。这样的实施例可导致一些设备被全部加载,而其他设备可能不具有任何跟踪器目标。
实施例1600的方法仅示出了用于使跟踪器目标匹配设备的一种方法,并且其他实施例可具有用于分发跟踪器目标的不同方式。例如,另一实施例可尝试均等地加载所有设备,以使得每一设备可执行至少一些跟踪。
在框1602中,可以接收设设备表征。设备表征的示例可在实施例1500找到。
可在框1604分析跟踪器目标,并随后在框1606部署跟踪器目标。
在框1608,可接收跟踪器目标。在框1610中对于每一跟踪器目标,可在框1612执行初始性能测试。与执行跟踪器目标相关联的成本可在框1614被估计并在框1616被存储。
执行跟踪器目标的成本可以是资源成本。在一些情况下,若干独立的因素可组成该成本。例如,处理器成本、存储成本和网络带宽成本可被组合成执行跟踪器目标的总成本。在其中在框1612可能不执行动态性能测试的实施例中,可通过对跟踪器目标的静态分析来估计成本。静态分析可估计给定跟踪器目标的处理器负载、存储使用和网络带宽使用。
可在框1618通过在框1620依据可用资源对设备进行排序来开始对目标的部署。在框1622,可依据估计成本以从最昂贵的跟踪目标到最不昂贵的跟踪目标的方式对跟踪目标进行排序。
可在框1624选择设备,并且可在框1626选择下一跟踪器目标。在框1628可作出确定是否可将该目标部署在设备上的评估。当在框1628可部署该跟踪器目标时,可在框1630将该跟踪器目标添加到该设备的清单中。当在框1628不可部署该跟踪器目标时,可在框1632跳过该目标。
框1628的评估可评估供在所选设备上执行的所选跟踪器目标。该评估可检查是否可存在可防止执行该跟踪器目标以及将执行该跟踪器目标的成本与设备上的可用资源预算进行比较的任何特定分配。一些实施例可执行其他测试或评估来确定一目标是否可被放置在设备上。
当在框1634中列表上还有目标时,该过程可返回到框1626。返回到框1626的环可处理每一可用跟踪器目标以尝试使用所选设备上的所有可用资源。
当在框1634已处理了所有目标时,如果没有跟踪器目标可能已被放置在清单中,则可在框1638评估这些目标以供划分成更小的跟踪器目标。该过程可返回到框1608。
当选择了设备,但不存在可能足够小或消耗与设备上可能可用的资源相比更少的资源的跟踪器目标时,则可到达框1638的操作。在这样的情形中,可将跟踪器目标划分成两个或更多个跟踪器目标,并可重试该放置。
在框1638,为了将跟踪器目标划分成两个或更多个跟踪器目标而评估这些跟踪器目标。在一些情况下,可通过改变采样率或设置其他参数以使得可减少成本影响来修改跟踪器目标。
假设在框1636在清单中存在跟踪目标的情况下,则可在框1640更新设备的可用预算以反映这些跟踪目标可执行。在框1642可将该清单部署到所选的设备。
当在框1644仍有目标和设备剩余时,该过程可返回到框1624以处理下一设备。当在框1646还有目标剩余但没有设备剩余时,该过程可在框1648等待直到这些跟踪器目标中的一些完成处理。在那时,可分配并分派剩余的目标。当已分配了所有这些目标时,该过程可在框1650结束,在这时,可执行分析操作。
对本发明的上述描述是出于图示和描述的目的而呈现的。它不旨在穷举本主题或将本主题限于所公开的精确形式,并且鉴于上述教导其他修改和变型都是可能的。选择并描述实施例来最好地解释本发明的原理及其实践应用,由此使本领域的其他技术人员能够在各种实施例和各种适于所构想的特定用途的修改中最好地利用本发明。所附权利要求书旨在被解释为包括除受现有技术所限的范围以外的其他替换实施例。
Claims (19)
1.一种由计算机处理器执行的方法,所述方法包括:
接收要检测的应用;
分析所述应用以标识多个对象;
通过为所述多个对象中的每一者创建跟踪目标来创建跟踪目标集合;
使得所述跟踪目标中的每一者都被部署在执行所述应用的仪表化环境上,所述仪表化环境为跟踪目标生成结果集;
从所述跟踪目标中的每一者中收集所述结果集;
执行对所述应用的静态代码分析以标识初步函数列表;
使用所述初步函数列表来执行对所述应用的初始跟踪以生成详细函数列表;
分析所述详细函数列表以确定所述多个对象;以及
聚集所述结果集以创建经聚集的结果集。
2.如权利要求1所述的方法,其特征在于,所述多个对象是所述应用中的所有函数的子集。
3.如权利要求1所述的方法,其特征在于,所述对象包括所述应用内的可执行代码部分。
4.如权利要求3所述的方法,其特征在于,所述可执行代码部分由函数定义。
5.如权利要求3所述的方法,其特征在于,所述可执行代码部分由函数调用和返回定义。
6.如权利要求3所述的方法,其特征在于,所述可执行代码部分是由所述应用产生的过程。
7.如权利要求1所述的方法,其特征在于,所述对象包括存储器对象。
8.如权利要求1所述的方法,其特征在于,所述分析所述应用包括对所述应用程序的静态代码分析。
9.如权利要求1所述的方法,其特征在于,所述分析所述应用包括在所述仪表化执行环境中执行所述应用。
10.如权利要求1所述的方法,其特征在于,所述结果集包括观察到的数据点。
11.如权利要求1所述的方法,其特征在于,为所述跟踪目标中的每一者定义用于从所述应用中收集检测数据的条件。
12.如权利要求1所述的方法,其特征在于,所述跟踪目标被部署在多个仪表化环境上。
13.一种计算机系统,包括:
处理器;
在所述处理器上操作的跟踪目标生成器,所述跟踪目标生成器:
接收要检测的应用;
分析所述应用以标识多个对象;
通过为所述多个对象中的每一者创建跟踪目标来创建跟踪目标集合;
分派器,所述分派器:
使得所述跟踪目标中的每一者都被部署在执行所述应用的仪表化环境上,所述仪表化环境为跟踪目标生成结果集;
执行对所述应用的静态代码分析以标识初步函数列表;
使用所述初步函数列表来执行对所述应用的初始跟踪以生成详细函数列表;
分析所述详细函数列表以确定所述多个对象;以及
所述跟踪目标中的每一者进一步将所述结果集传送给数据收集器。
14.如权利要求13所述的系统,其特征在于,进一步包括:
静态代码分析器,所述静态代码分析器:
对所述应用执行静态代码分析以标识所述多个对象的至少一部分。
15.如权利要求13所述的系统,其特征在于,进一步包括:
高级跟踪器,所述高级跟踪器对所述应用执行初始跟踪以标识所述多个对象的至少一部分。
16.如权利要求13所述的系统,其特征在于,所述跟踪目标包括定义与所述数据收集器的通信设置的通信配置。
17.如权利要求13所述的系统,其特征在于,所述跟踪目标包括针对输入流的描述符,所述输入流是用所述结果集来捕捉的。
18.如权利要求13所述的系统,其特征在于,所述跟踪目标生成器:
标识所述应用中的第一对象;
标识所述应用中的第二对象,所述第二对象与所述第一对象具有关系;以及
创建包括所述第一对象和所述第二对象的第一跟踪器目标。
19.如权利要求18所述的系统,其特征在于,所述关系是在静态代码分析期间定义的。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/765,642 | 2013-02-12 | ||
US13/765,642 US9021447B2 (en) | 2013-02-12 | 2013-02-12 | Application tracing by distributed objectives |
PCT/US2013/046664 WO2014126601A1 (en) | 2013-02-12 | 2013-06-19 | Application tracing by distributed objectives |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105283848A CN105283848A (zh) | 2016-01-27 |
CN105283848B true CN105283848B (zh) | 2018-04-27 |
Family
ID=49381351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380072852.5A Active CN105283848B (zh) | 2013-02-12 | 2013-06-19 | 用分布式目标来进行应用跟踪 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9021447B2 (zh) |
EP (1) | EP2956857A4 (zh) |
CN (1) | CN105283848B (zh) |
WO (1) | WO2014126601A1 (zh) |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8495598B2 (en) | 2012-05-01 | 2013-07-23 | Concurix Corporation | Control flow graph operating system configuration |
US9417935B2 (en) | 2012-05-01 | 2016-08-16 | Microsoft Technology Licensing, Llc | Many-core process scheduling to maximize cache usage |
US9047196B2 (en) | 2012-06-19 | 2015-06-02 | Concurix Corporation | Usage aware NUMA process scheduling |
US9575813B2 (en) | 2012-07-17 | 2017-02-21 | Microsoft Technology Licensing, Llc | Pattern matching process scheduler with upstream optimization |
US8793669B2 (en) | 2012-07-17 | 2014-07-29 | Concurix Corporation | Pattern extraction from executable code in message passing environments |
US9043788B2 (en) | 2012-08-10 | 2015-05-26 | Concurix Corporation | Experiment manager for manycore systems |
US8954546B2 (en) | 2013-01-25 | 2015-02-10 | Concurix Corporation | Tracing with a workload distributor |
US9207969B2 (en) | 2013-01-25 | 2015-12-08 | Microsoft Technology Licensing, Llc | Parallel tracing for performance and detail |
US9021262B2 (en) | 2013-01-25 | 2015-04-28 | Concurix Corporation | Obfuscating trace data |
US9323863B2 (en) | 2013-02-01 | 2016-04-26 | Microsoft Technology Licensing, Llc | Highlighting of time series data on force directed graph |
US9256969B2 (en) | 2013-02-01 | 2016-02-09 | Microsoft Technology Licensing, Llc | Transformation function insertion for dynamically displayed tracer data |
US20130283281A1 (en) | 2013-02-12 | 2013-10-24 | Concurix Corporation | Deploying Trace Objectives using Cost Analyses |
US8997063B2 (en) | 2013-02-12 | 2015-03-31 | Concurix Corporation | Periodicity optimization in an automated tracing system |
US9021447B2 (en) | 2013-02-12 | 2015-04-28 | Concurix Corporation | Application tracing by distributed objectives |
US8843901B2 (en) * | 2013-02-12 | 2014-09-23 | Concurix Corporation | Cost analysis for selecting trace objectives |
US8924941B2 (en) | 2013-02-12 | 2014-12-30 | Concurix Corporation | Optimization analysis using similar frequencies |
US20130283102A1 (en) * | 2013-02-12 | 2013-10-24 | Concurix Corporation | Deployment of Profile Models with a Monitoring Agent |
US9665474B2 (en) | 2013-03-15 | 2017-05-30 | Microsoft Technology Licensing, Llc | Relationships derived from trace data |
US9575874B2 (en) | 2013-04-20 | 2017-02-21 | Microsoft Technology Licensing, Llc | Error list and bug report analysis for configuring an application tracer |
US9734040B2 (en) | 2013-05-21 | 2017-08-15 | Microsoft Technology Licensing, Llc | Animated highlights in a graph representing an application |
US8990777B2 (en) | 2013-05-21 | 2015-03-24 | Concurix Corporation | Interactive graph for navigating and monitoring execution of application code |
US9280841B2 (en) | 2013-07-24 | 2016-03-08 | Microsoft Technology Licensing, Llc | Event chain visualization of performance data |
US9292415B2 (en) | 2013-09-04 | 2016-03-22 | Microsoft Technology Licensing, Llc | Module specific tracing in a shared module environment |
WO2015071778A1 (en) | 2013-11-13 | 2015-05-21 | Concurix Corporation | Application execution path tracing with configurable origin definition |
WO2015071777A1 (en) | 2013-11-13 | 2015-05-21 | Concurix Corporation | Software component recommendation based on multiple trace runs |
US20150244645A1 (en) * | 2014-02-26 | 2015-08-27 | Ca, Inc. | Intelligent infrastructure capacity management |
US10536357B2 (en) | 2015-06-05 | 2020-01-14 | Cisco Technology, Inc. | Late data detection in data center |
US10142353B2 (en) | 2015-06-05 | 2018-11-27 | Cisco Technology, Inc. | System for monitoring and managing datacenters |
US10346289B2 (en) * | 2016-06-30 | 2019-07-09 | International Business Machines Corporation | Run time workload threshold alerts for customer profiling visualization |
US10380010B2 (en) * | 2016-06-30 | 2019-08-13 | International Business Machines Corporation | Run time and historical workload report scores for customer profiling visualization |
US10255165B2 (en) * | 2016-06-30 | 2019-04-09 | International Business Machines Corporation | Run time automatic workload tuning using customer profiling workload comparison |
US20180004635A1 (en) * | 2016-06-30 | 2018-01-04 | Fujitsu Limited | Input discovery for unknown program binaries |
US10216620B2 (en) * | 2016-07-05 | 2019-02-26 | Synopsys, Inc. | Static code testing of active code |
US9946627B2 (en) * | 2016-08-08 | 2018-04-17 | International Business Machines Corporation | Managing logger source code segments |
US10481997B2 (en) | 2016-11-27 | 2019-11-19 | Amazon Technologies, Inc. | Distributed code tracing system |
CN108038145A (zh) * | 2017-11-23 | 2018-05-15 | 携程旅游网络技术(上海)有限公司 | 分布式服务跟踪方法、系统、存储介质和电子设备 |
CN109684161B (zh) * | 2018-11-02 | 2022-05-03 | 深圳壹账通智能科技有限公司 | 数据分析方法、装置、服务器及存储介质 |
US10855812B1 (en) | 2019-12-02 | 2020-12-01 | Capital One Services, Llc | Automated identification of service boundaries based on system focus optimization using distributed tracing data |
US11119843B2 (en) | 2020-02-07 | 2021-09-14 | Red Hat, Inc. | Verifying application behavior based on distributed tracing |
CN111260694B (zh) * | 2020-02-10 | 2023-06-20 | 北方工业大学 | 卫星遥感视频目标跟踪方法及装置 |
CN113821439B (zh) * | 2021-09-23 | 2024-07-19 | 成都欧珀通信科技有限公司 | 将函数注册到探测点的方法、装置、存储介质以及终端 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101933001A (zh) * | 2008-01-31 | 2010-12-29 | 雅虎公司 | 在集群系统中执行软件性能测试作业 |
CN102576311A (zh) * | 2009-10-21 | 2012-07-11 | 国际商业机器公司 | 用于通过优化性能模型提高软件执行时间的方法和系统 |
Family Cites Families (145)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5870606A (en) * | 1996-05-01 | 1999-02-09 | International Business Machines Corp. | Data triggered trace technique for debugging software programs |
US6892226B1 (en) * | 1997-03-27 | 2005-05-10 | Intel Corporation | System for delivery of dynamic content to a client device |
US6032201A (en) * | 1997-06-19 | 2000-02-29 | Cirrus Logic, Inc. | Plug and play system using proxy for retrieving correct information about current device from system registry when current device is not the newly installed device |
GB9725742D0 (en) * | 1997-12-04 | 1998-02-04 | Hewlett Packard Co | Object gateway |
AU5461099A (en) | 1998-07-30 | 2000-02-21 | Mutek Solutions, Ltd. | System and method for remotely analyzing the execution of computer programs |
US6378066B1 (en) | 1999-02-04 | 2002-04-23 | Sun Microsystems, Inc. | Method, apparatus, and article of manufacture for developing and executing data flow programs, and optimizing user input specifications |
US6636242B2 (en) * | 1999-08-31 | 2003-10-21 | Accenture Llp | View configurer in a presentation services patterns environment |
US6748420B1 (en) * | 1999-11-23 | 2004-06-08 | Cisco Technology, Inc. | Methods and apparatus for providing shared access to an application |
US6629128B1 (en) * | 1999-11-30 | 2003-09-30 | Recursion Software, Inc. | System and method for distributed processing in a computer network |
US6704024B2 (en) * | 2000-08-07 | 2004-03-09 | Zframe, Inc. | Visual content browsing using rasterized representations |
US20020112033A1 (en) * | 2000-08-09 | 2002-08-15 | Doemling Marcus F. | Content enhancement system and method |
CA2315449A1 (en) | 2000-08-10 | 2002-02-10 | Ibm Canada Limited-Ibm Canada Limitee | Generation of runtime execution traces of applications and associated problem determination |
US7047521B2 (en) * | 2001-06-07 | 2006-05-16 | Lynoxworks, Inc. | Dynamic instrumentation event trace system and methods |
EP1402401A4 (en) | 2001-06-15 | 2007-10-03 | Cadence Design Systems Inc | INCREASING DATA CIRCUIT MERGING CAPACITY AND REDUCING DATA CIRCUIT WIDTHS BY REBALANCING DATA CIRCULATION TOPOLOGY |
US6928488B1 (en) * | 2001-06-27 | 2005-08-09 | Microsoft Corporation | Architecture and method for serialization and deserialization of objects |
US7117504B2 (en) * | 2001-07-10 | 2006-10-03 | Microsoft Corporation | Application program interface that enables communication for a network software platform |
US7020659B2 (en) * | 2001-08-15 | 2006-03-28 | Oic Acquistion I Corporation | System and method for managing bi-directional relationships between objects |
GB2402781A (en) * | 2002-03-22 | 2004-12-15 | Sun Microsystems Inc | Mobile download system |
US20030231207A1 (en) * | 2002-03-25 | 2003-12-18 | Baohua Huang | Personal e-mail system and method |
US7055169B2 (en) * | 2002-04-19 | 2006-05-30 | Opentv, Inc. | Supporting common interactive television functionality through presentation engine syntax |
EP1540486B1 (en) * | 2002-08-09 | 2018-05-16 | Reflexion Network Solutions, Inc. | System and method for controlling access to an electronic message recipient |
US7386839B1 (en) | 2002-11-06 | 2008-06-10 | Valery Golender | System and method for troubleshooting software configuration problems using application tracing |
US8032866B1 (en) | 2003-03-27 | 2011-10-04 | Identify Software Ltd. | System and method for troubleshooting runtime software problems using application learning |
US20050015368A1 (en) * | 2003-07-15 | 2005-01-20 | International Business Machines Corporation | Query modelling tool having a dynamically adaptive interface |
US7194664B1 (en) | 2003-09-08 | 2007-03-20 | Poon Fung | Method for tracing application execution path in a distributed data processing system |
JP2005149136A (ja) * | 2003-11-14 | 2005-06-09 | Fujitsu Ltd | 情報収集プログラム、情報収集方法、情報収集システムおよび情報収集装置 |
US7584500B2 (en) * | 2003-11-19 | 2009-09-01 | Hughes Network Systems, Llc | Pre-fetching secure content using proxy architecture |
US7913305B2 (en) | 2004-01-30 | 2011-03-22 | Microsoft Corporation | System and method for detecting malware in an executable code module according to the code module's exhibited behavior |
US7882546B2 (en) * | 2004-03-04 | 2011-02-01 | International Business Machines Corporation | Controlling access of a client system to an access protected remote resource |
US7587721B2 (en) * | 2004-05-20 | 2009-09-08 | Sap Ag | Sharing objects in runtime systems |
US7707583B2 (en) * | 2004-05-20 | 2010-04-27 | Sap Ag | Robust sharing of runtime systems |
US7415704B2 (en) * | 2004-05-20 | 2008-08-19 | Sap Ag | Sharing objects in runtime systems |
US7343521B2 (en) | 2004-05-28 | 2008-03-11 | International Business Machines Corporation | Method and apparatus to preserve trace data |
JP2005346414A (ja) | 2004-06-03 | 2005-12-15 | Fujitsu Ltd | トレース処理プログラム、方法及び装置 |
US7346809B2 (en) | 2004-08-05 | 2008-03-18 | International Business Machines Corporation | Bootable post crash analysis environment |
US7774295B2 (en) | 2004-11-17 | 2010-08-10 | Targit A/S | Database track history |
US7743380B2 (en) * | 2005-01-21 | 2010-06-22 | Hewlett-Packard Development Company, L.P. | Monitoring clustered software applications |
US7606168B2 (en) | 2005-01-28 | 2009-10-20 | Attenex Corporation | Apparatus and method for message-centric analysis and multi-aspect viewing using social networks |
US20060200738A1 (en) * | 2005-03-02 | 2006-09-07 | Tira Wireless Inc. | System and method for modifying a mobile device application |
US7810075B2 (en) | 2005-04-29 | 2010-10-05 | Sap Ag | Common trace files |
US20060277477A1 (en) * | 2005-06-02 | 2006-12-07 | Christenson Mark G K | System and method for generating enhanced depiction of electronic files such as web files |
US8239939B2 (en) * | 2005-07-15 | 2012-08-07 | Microsoft Corporation | Browser protection module |
US7239980B2 (en) | 2005-08-30 | 2007-07-03 | International Business Machines Corporation | Method and apparatus for adaptive tracing with different processor frequencies |
US8176081B2 (en) | 2005-11-18 | 2012-05-08 | International Business Machines Corporation | Forms integration of an external data model not implemented through a document object model (DOM) accessible application programming interface (API) |
US9294334B2 (en) * | 2005-12-12 | 2016-03-22 | Google Inc. | Controlling communication within a container document |
US20070136201A1 (en) * | 2005-12-12 | 2007-06-14 | Google Inc. | Customized container document modules using preferences |
US7730082B2 (en) * | 2005-12-12 | 2010-06-01 | Google Inc. | Remote module incorporation into a container document |
US7725530B2 (en) * | 2005-12-12 | 2010-05-25 | Google Inc. | Proxy server collection of data for module incorporation into a container document |
US8185819B2 (en) * | 2005-12-12 | 2012-05-22 | Google Inc. | Module specification for a module to be incorporated into a container document |
US20070204010A1 (en) * | 2005-12-12 | 2007-08-30 | Steven Goldberg | Remote Module Syndication System and Method |
US20070140131A1 (en) | 2005-12-15 | 2007-06-21 | Malloy Patrick J | Interactive network monitoring and analysis |
US20070143795A1 (en) | 2005-12-20 | 2007-06-21 | Duong-Han Tran | Application trace for distributed systems environment |
US20070180147A1 (en) * | 2006-02-01 | 2007-08-02 | Connect It, Llc | System for insertion of advertising content in user-requested internet web pages |
US8090799B2 (en) * | 2006-02-04 | 2012-01-03 | Wayport, Inc. | System and method for providing persistent advertising with third party content in a distributed internet access environment |
US20070198524A1 (en) * | 2006-02-09 | 2007-08-23 | International Business Machines Corporation | Maintaining connections between application servers and databases in a multitier computer architecture |
US20070204223A1 (en) * | 2006-02-27 | 2007-08-30 | Jay Bartels | Methods of and systems for personalizing and publishing online content |
US9146789B2 (en) * | 2006-03-21 | 2015-09-29 | Oracle America, Inc. | Method and apparatus for generating and using location-independent distributed object references |
US20070239528A1 (en) * | 2006-03-29 | 2007-10-11 | Reachlocal, Inc. | Dynamic proxy method and apparatus for an online marketing campaign |
US7979245B1 (en) | 2006-05-17 | 2011-07-12 | Quest Software, Inc. | Model-based systems and methods for monitoring computing resource performance |
FR2904499B1 (fr) | 2006-07-27 | 2009-01-09 | Commissariat Energie Atomique | Procede de decodage a passage de messages avec ordonnancement selon une fiabilite de voisinage. |
US8037457B2 (en) | 2006-09-29 | 2011-10-11 | Sap Ag | Method and system for generating and displaying function call tracker charts |
US8028200B2 (en) | 2006-09-29 | 2011-09-27 | Sap Ag | Tracing operations in multiple computer systems |
WO2008080780A1 (en) | 2007-01-05 | 2008-07-10 | International Business Machines Corporation | Recording execution information for a software application |
US8543711B2 (en) | 2007-04-30 | 2013-09-24 | Hewlett-Packard Development Company, L.P. | System and method for evaluating a pattern of resource demands of a workload |
US8214806B2 (en) | 2007-05-09 | 2012-07-03 | International Business Machines Corporation | Iterative, non-uniform profiling method for automatically refining performance bottleneck regions in scientific code |
US7698602B2 (en) | 2007-06-13 | 2010-04-13 | International Business Machines Corporation | Systems, methods and computer products for trace capability per work unit |
US8276117B2 (en) | 2007-08-03 | 2012-09-25 | International Business Machines Corporation | Displaying and refactoring programs that include database statements |
US8301755B2 (en) | 2007-12-14 | 2012-10-30 | Bmc Software, Inc. | Impact propagation in a directed acyclic graph |
WO2009119642A1 (ja) | 2008-03-26 | 2009-10-01 | 日本電気株式会社 | サービス応答性能分析装置、方法、及びプログラム並びにそれを記録した記録媒体 |
US9514023B2 (en) | 2008-06-24 | 2016-12-06 | International Business Machines Corporation | Message flow control in a multi-node computer system |
JP5386905B2 (ja) | 2008-09-25 | 2014-01-15 | 富士通セミコンダクター株式会社 | プロファイリング方法およびプロファイリングプログラム |
US8301759B2 (en) | 2008-10-24 | 2012-10-30 | Microsoft Corporation | Monitoring agent programs in a distributed computing platform |
CA2744240C (en) | 2008-12-02 | 2019-06-18 | Ab Initio Technology Llc | Visualizing relationships between data elements and graphical representations of data element attributes |
US9076125B2 (en) | 2009-02-27 | 2015-07-07 | Microsoft Technology Licensing, Llc | Visualization of participant relationships and sentiment for electronic messaging |
US8327377B2 (en) | 2009-04-30 | 2012-12-04 | Ca, Inc. | Detecting, logging and tracking component dependencies in web service transactions |
CN102460408B (zh) | 2009-06-01 | 2014-08-06 | 惠普开发有限公司 | 用于收集应用性能数据的系统和方法 |
US8352907B2 (en) | 2009-08-10 | 2013-01-08 | International Business Machines Corporation | Software application recreation |
US8275816B1 (en) | 2009-11-06 | 2012-09-25 | Adobe Systems Incorporated | Indexing messaging events for seeking through data streams |
US9639446B2 (en) | 2009-12-21 | 2017-05-02 | International Business Machines Corporation | Trace monitoring |
WO2011116987A1 (en) | 2010-03-26 | 2011-09-29 | Software Diagnostics Technology Gmbh | A method for automatically generating a trace data set for a software system, a computer system, and a computer program product |
WO2011142720A1 (en) | 2010-05-14 | 2011-11-17 | Gabriyel Wong Chee Kien | A self-organizing and contextual graphical user interface |
EP2390790A1 (en) | 2010-05-27 | 2011-11-30 | Fujitsu Limited | Profiling of software applications |
US8966447B2 (en) | 2010-06-21 | 2015-02-24 | Apple Inc. | Capturing and displaying state of automated user-level testing of a graphical user interface application |
US20120042212A1 (en) | 2010-08-10 | 2012-02-16 | Gilbert Laurenti | Mixed Mode Processor Tracing |
US8578348B2 (en) * | 2010-09-02 | 2013-11-05 | Code Value Ltd. | System and method of cost oriented software profiling |
KR20120031834A (ko) * | 2010-09-27 | 2012-04-04 | 삼성전자주식회사 | 인스트루먼테이션 장치 및 방법 |
EP2633398B1 (en) | 2010-10-25 | 2020-05-27 | Ab Initio Technology LLC | Managing data set objects in a dataflow graph that represents a computer program |
US8583978B2 (en) | 2010-11-09 | 2013-11-12 | Cisco Technology, Inc. | Multicast message retransmission |
US8938720B2 (en) | 2010-11-30 | 2015-01-20 | Sap Se | Trace visualization for object oriented programs |
US9137136B2 (en) | 2011-02-04 | 2015-09-15 | Riverbed Technology, Inc. | Overhead management for event tracing |
US20120278164A1 (en) | 2011-02-23 | 2012-11-01 | Nova Spivack | Systems and methods for recommending advertisement placement based on in network and cross network online activity analysis |
US8756171B2 (en) | 2011-06-15 | 2014-06-17 | International Business Machines Corporation | Generating predictions from a probabilistic process model |
US10592825B2 (en) | 2011-06-22 | 2020-03-17 | International Business Machines Corporation | Application placement among a set of consolidation servers utilizing license cost and application workload profiles as factors |
US8312056B1 (en) | 2011-09-13 | 2012-11-13 | Xerox Corporation | Method and system for identifying a key influencer in social media utilizing topic modeling and social diffusion analysis |
US9417935B2 (en) | 2012-05-01 | 2016-08-16 | Microsoft Technology Licensing, Llc | Many-core process scheduling to maximize cache usage |
US8495598B2 (en) | 2012-05-01 | 2013-07-23 | Concurix Corporation | Control flow graph operating system configuration |
US8615766B2 (en) | 2012-05-01 | 2013-12-24 | Concurix Corporation | Hybrid operating system |
US8726255B2 (en) | 2012-05-01 | 2014-05-13 | Concurix Corporation | Recompiling with generic to specific replacement |
US8650538B2 (en) | 2012-05-01 | 2014-02-11 | Concurix Corporation | Meta garbage collection for functional code |
US20120222043A1 (en) | 2012-05-01 | 2012-08-30 | Concurix Corporation | Process Scheduling Using Scheduling Graph to Minimize Managed Elements |
US8595743B2 (en) | 2012-05-01 | 2013-11-26 | Concurix Corporation | Network aware process scheduling |
US20120324454A1 (en) | 2012-05-04 | 2012-12-20 | Concurix Corporation | Control Flow Graph Driven Operating System |
US8700838B2 (en) | 2012-06-19 | 2014-04-15 | Concurix Corporation | Allocating heaps in NUMA systems |
US20120317421A1 (en) | 2012-06-19 | 2012-12-13 | Concurix Corporation | Fingerprinting Executable Code |
US9047196B2 (en) | 2012-06-19 | 2015-06-02 | Concurix Corporation | Usage aware NUMA process scheduling |
US8707326B2 (en) | 2012-07-17 | 2014-04-22 | Concurix Corporation | Pattern matching process scheduler in message passing environment |
US8793669B2 (en) | 2012-07-17 | 2014-07-29 | Concurix Corporation | Pattern extraction from executable code in message passing environments |
US9575813B2 (en) | 2012-07-17 | 2017-02-21 | Microsoft Technology Licensing, Llc | Pattern matching process scheduler with upstream optimization |
US8966462B2 (en) | 2012-08-10 | 2015-02-24 | Concurix Corporation | Memory management parameters derived from system modeling |
US20130080760A1 (en) | 2012-08-10 | 2013-03-28 | Concurix Corporation | Execution Environment with Feedback Loop |
US9043788B2 (en) | 2012-08-10 | 2015-05-26 | Concurix Corporation | Experiment manager for manycore systems |
US20130085882A1 (en) | 2012-09-18 | 2013-04-04 | Concurix Corporation | Offline Optimization of Computer Software |
US8789030B2 (en) | 2012-09-18 | 2014-07-22 | Concurix Corporation | Memoization from offline analysis |
US8826254B2 (en) | 2012-11-08 | 2014-09-02 | Concurix Corporation | Memoizing with read only side effects |
US20130074057A1 (en) | 2012-11-08 | 2013-03-21 | Concurix Corporation | Selecting Functions for Memoization Analysis |
US8656135B2 (en) | 2012-11-08 | 2014-02-18 | Concurix Corporation | Optimized memory configuration deployed prior to execution |
US8752021B2 (en) | 2012-11-08 | 2014-06-10 | Concurix Corporation | Input vector analysis for memoization estimation |
US8607018B2 (en) | 2012-11-08 | 2013-12-10 | Concurix Corporation | Memory usage configuration based on observations |
US8656134B2 (en) | 2012-11-08 | 2014-02-18 | Concurix Corporation | Optimized memory configuration deployed on executing code |
US8752034B2 (en) | 2012-11-08 | 2014-06-10 | Concurix Corporation | Memoization configuration file consumed at runtime |
US8694574B2 (en) | 2012-11-08 | 2014-04-08 | Concurix Corporation | Optimized settings in a configuration database with boundaries |
US8656378B2 (en) | 2012-11-08 | 2014-02-18 | Concurix Corporation | Memoization configuration file consumed at compile time |
US8839204B2 (en) | 2012-11-08 | 2014-09-16 | Concurix Corporation | Determination of function purity for memoization |
US9262416B2 (en) | 2012-11-08 | 2016-02-16 | Microsoft Technology Licensing, Llc | Purity analysis using white list/black list analysis |
US8954546B2 (en) | 2013-01-25 | 2015-02-10 | Concurix Corporation | Tracing with a workload distributor |
US9021262B2 (en) | 2013-01-25 | 2015-04-28 | Concurix Corporation | Obfuscating trace data |
US9207969B2 (en) | 2013-01-25 | 2015-12-08 | Microsoft Technology Licensing, Llc | Parallel tracing for performance and detail |
US20140025572A1 (en) | 2013-01-25 | 2014-01-23 | Concurix Corporation | Tracing as a Service |
US20130232433A1 (en) | 2013-02-01 | 2013-09-05 | Concurix Corporation | Controlling Application Tracing using Dynamic Visualization |
US20140019879A1 (en) | 2013-02-01 | 2014-01-16 | Concurix Corporation | Dynamic Visualization of Message Passing Computation |
US20130232452A1 (en) | 2013-02-01 | 2013-09-05 | Concurix Corporation | Force Directed Graph with Time Series Data |
US9256969B2 (en) | 2013-02-01 | 2016-02-09 | Microsoft Technology Licensing, Llc | Transformation function insertion for dynamically displayed tracer data |
US9323863B2 (en) | 2013-02-01 | 2016-04-26 | Microsoft Technology Licensing, Llc | Highlighting of time series data on force directed graph |
US8997063B2 (en) | 2013-02-12 | 2015-03-31 | Concurix Corporation | Periodicity optimization in an automated tracing system |
US9021447B2 (en) | 2013-02-12 | 2015-04-28 | Concurix Corporation | Application tracing by distributed objectives |
US8843901B2 (en) | 2013-02-12 | 2014-09-23 | Concurix Corporation | Cost analysis for selecting trace objectives |
US20130283281A1 (en) | 2013-02-12 | 2013-10-24 | Concurix Corporation | Deploying Trace Objectives using Cost Analyses |
US20130283102A1 (en) | 2013-02-12 | 2013-10-24 | Concurix Corporation | Deployment of Profile Models with a Monitoring Agent |
US8924941B2 (en) | 2013-02-12 | 2014-12-30 | Concurix Corporation | Optimization analysis using similar frequencies |
US9665474B2 (en) | 2013-03-15 | 2017-05-30 | Microsoft Technology Licensing, Llc | Relationships derived from trace data |
US20130283242A1 (en) | 2013-04-20 | 2013-10-24 | Concurix Corporation | Tracing Closures in a Callback Environment |
US20140013306A1 (en) | 2013-04-20 | 2014-01-09 | Concurix Corporation | Computer Load Generator Marketplace |
US20140013308A1 (en) | 2013-04-20 | 2014-01-09 | Concurix Corporation | Application Development Environment with Services Marketplace |
US20130282545A1 (en) | 2013-04-20 | 2013-10-24 | Concurix Corporation | Marketplace for Monitoring Services |
US8990777B2 (en) | 2013-05-21 | 2015-03-24 | Concurix Corporation | Interactive graph for navigating and monitoring execution of application code |
-
2013
- 2013-02-12 US US13/765,642 patent/US9021447B2/en active Active
- 2013-06-19 WO PCT/US2013/046664 patent/WO2014126601A1/en active Application Filing
- 2013-06-19 CN CN201380072852.5A patent/CN105283848B/zh active Active
- 2013-06-19 EP EP13874920.5A patent/EP2956857A4/en not_active Withdrawn
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101933001A (zh) * | 2008-01-31 | 2010-12-29 | 雅虎公司 | 在集群系统中执行软件性能测试作业 |
CN102576311A (zh) * | 2009-10-21 | 2012-07-11 | 国际商业机器公司 | 用于通过优化性能模型提高软件执行时间的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105283848A (zh) | 2016-01-27 |
WO2014126601A1 (en) | 2014-08-21 |
EP2956857A4 (en) | 2016-10-19 |
EP2956857A1 (en) | 2015-12-23 |
US9021447B2 (en) | 2015-04-28 |
US20130283240A1 (en) | 2013-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105283848B (zh) | 用分布式目标来进行应用跟踪 | |
CN105283866B (zh) | 包括使用相似频率的优化分析的应用跟踪方法和系统 | |
CN105283851B (zh) | 用于选择跟踪目标的成本分析 | |
CN105122212A (zh) | 自动化跟踪系统中的周期性优化 | |
CN105122234A (zh) | 使用成本分析来部署跟踪目标 | |
Sipos et al. | Log-based predictive maintenance | |
Rogge-Solti et al. | Discovering stochastic petri nets with arbitrary delay distributions from event logs | |
Meneely et al. | Predicting failures with developer networks and social network analysis | |
US20130283102A1 (en) | Deployment of Profile Models with a Monitoring Agent | |
Zheng et al. | Detecting process concept drifts from event logs | |
US11550707B2 (en) | Systems and methods for generating and executing a test case plan for a software product | |
Impedovo et al. | Simultaneous process drift detection and characterization with pattern-based change detectors | |
US20210149793A1 (en) | Weighted code coverage | |
CN116756021A (zh) | 基于事件分析的故障定位方法、装置、电子设备及介质 | |
EP3671467A1 (en) | Gui application testing using bots | |
Peeperkorn et al. | Supervised conformance checking using recurrent neural network classifiers | |
Buga et al. | Formalizing monitoring processes for large-scale distributed systems using abstract state machines | |
RAO et al. | AN INTEGRATED FRAMEWORK FOR SOFTWARE DEFECT ANALYSIS WITH AWARE OF SAAS PROVISIONING IN CLOUD ENVIRONMENT USING MADM METHODS | |
Rao et al. | A Complete Survey of Research in Bug Complexity and Data Mining | |
Kaur et al. | Identification of Key Parameters Contributing to Technical Debt in Software Using Rank-Based Optimization | |
Xin | Towards effective performance diagnosis for distributed applications | |
Pandey et al. | Background: Software quality and reliability prediction | |
Kemper et al. | Automated Analysis of Simulation Traces | |
CN105339901A (zh) | 用于自动地控制跟踪器行为的跟踪器列表 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20170516 Address after: Washington State Applicant after: Micro soft technique license Co., Ltd Address before: Washington State Applicant before: CONCURIX CORP. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |