CN105556482A - 监视移动应用性能 - Google Patents
监视移动应用性能 Download PDFInfo
- Publication number
- CN105556482A CN105556482A CN201480035453.6A CN201480035453A CN105556482A CN 105556482 A CN105556482 A CN 105556482A CN 201480035453 A CN201480035453 A CN 201480035453A CN 105556482 A CN105556482 A CN 105556482A
- Authority
- CN
- China
- Prior art keywords
- readjustment
- code
- call
- user
- thread
- 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.)
- Granted
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/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- 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/3419—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 by assessing time
-
- 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/3476—Data logging
-
- 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
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
-
- 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/87—Monitoring of transactions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开的各方面涉及在实际使用期间监视应用性能,尤其是移动应用性能。描述了检测移动应用二进制文件以自动标识用户事务中的关键路径,包括跨异步调用边界。踪迹数据由被检测应用记录以捕捉UI操纵、线程执行、异步调用和回调、UI更新和/或线程同步。踪迹数据被分析以帮助开发者改善应用性能。
Description
背景
当前在各种应用市场中存在超过百万个移动应用。用户依赖于这些应用来进行各种各样的任务,诸如在社交联网站点上张贴评论、进行在线银行业务等。
移动应用市场是高度竞争性的。结果,开发者力图维护和改善他们应用的质量。实验室测试提供了一些指导,但却很少是充足的,因为移动应用是高度交互性的,并且难以在实验室中模拟全部范围的用户交互。此外,移动应用经历各种各样的“实地(inthefield)”环境状况,诸如网络连通性(Wi-Fi或3G)、GPS信号质量、以及电话硬件,这些环境状况在实际用户之间可能变动很大。其他状况也被考虑进来,例如,一些平台API取决于电池水平而改变它们的行为。这些多样化的状况是难以在实验室中再现的。
结果,为了改善应用质量,应用开发者/团队需要理解应用在实地如何执行。然而,移动应用的异步、多线程化的本质使得难以跟踪应用使用和应用性能来收集数据。移动平台中固有的资源限制与各种困难复合,例如添加辅助监视应用性能的跟踪代码不会不利地影响用户体验。
概述
提供本概述以便以简化形式介绍将在以下的详细描述中进一步描述的一些代表性概念的选集。本概述不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在以限制所要求保护的主题的范围的任何方式来使用。
简言之,本文描述的主题内容的各方面涉及一种其中自动检测应用代码的技术,包括将一个或多个记录函数以及一个或多个事件处理程序插入应用代码中以记录事件。还描述了将代码插入应用代码中来为异步调用(asynchronouscall)的调用(invocation)指派标识符,并且使提供给该异步调用的回调绕路到绕路代码以基于标识符将该回调与该异步调用相关联。
在一方面,检测器被配置成用记录功能以及用将异步调用与回调相关联的代码来检测应用代码。分析组件处理在应用代码的执行期间经由记录功能被记录到有向无环图中的数据,这些数据表示在执行期间发生的事务。
在一方面,在被检测应用代码的执行期间,经由被检测应用代码来记录踪迹数据。踪迹数据对应于以下至少一者:用户界面(UI)操纵、线程执行、异步调用和回调、UI更新或线程同步。踪迹数据被上传以供分析处理。
结合附图阅读以下详细描述,本发明的其他优点会变得显而易见。
附图简述
作为示例而非限制,在附图中示出了本发明,附图中相同的附图标记指示相同或相似的元素,附图中:
图1是示出根据一个或多个示例实施例的各种示例组件的框图,这些示例组件包括监视移动应用性能的检测和分析系统。
图2是示出根据一个或多个示例实施例的经由日志记录程序和绕路库来检测应用的结构的框图。
图3是根据一个或多个示例实施例的例如示出用户事务的代码的示例执行踪迹。
图4是根据一个或多个示例实施例的例如示出用户事务和其中的关键路径的基于位置的应用代码的示例执行踪迹。
图5是根据一个或多个示例实施例的示出示例应用崩溃/异常路径的示例执行踪迹。
图6是示出根据一个或多个示例实施例的涉及将异步调用与对应回调进行匹配的示例步骤的流程图。
图7是根据一个或多个示例实施例的借此异步调用可以被绕过以将调用与对应回调进行匹配的一种示例方式的表示。
图8A和8B是根据一个或多个示例实施例的从用于表示用户事务的记录的踪迹数据中处理的有向无环图的表示。
图9是示出根据一个或多个示例实施例的可被采用来检测代码、执行被检测代码以收集踪迹数据以供分析、以及分析踪迹数据的示例步骤的流程图。
图10是表示移动计算设备形式的示例计算环境的框图,其中本文所描述的主题内容的各方面可被并入该计算环境中。
详细描述
本文描述的技术的各方面一般涉及监视移动应用性能,包括通过检测移动应用代码(二进制代码)来收集踪迹数据(踪迹)。这些踪迹被分析以自动标识用户事务中的关键路径,包括跨异步调用边界,其中一般来说,用户感知到的等待时间是在关键路径的概念中来阐述的,因为关键路径提供了用户事务中的瓶颈路径,从而改变关键路径的任一部分的长度会改变用户感知到的等待时间。一般来说,关键路径开始于用户操纵事件,而结束于UI更新事件。如本文描述的用户“事务”开始于对UI的用户操纵,而结束于完成应用中由该操纵触发的同步和异步任务(线程)。如将理解的,在事务期间,可以采取许多中间动作。
在一方面,提供不要求来自开发者的输入也不要求对操作系统的任何改变的轻量检测系统。在一种实现中,检测机制一般通过插入事件处理程序来检测移动应用。性能数据被实地地收集,并且可被上传到中央服务器以供离线分析。
如将理解的,本文描述的检测系统帮助应用开发者诊断他们的应用实地经历的性能瓶颈和故障。检测机制通过用户事务的代码向开发者提供关于关键路径的信息。这一信息一般可用于将开发者指向改善用户体验所需的优化。
应当理解,本文中的任何示例均是非限制的。因此,本发明不限制于本文所述的任何具体的实施例、方面、概念、结构、功能或示例。相反,本文中所描述的任何一个实施例、方面、概念、结构、功能或示例都是非限制性的,并且一般而言可以在计算和成像技术中提供好处和优点的各种方式来使用本发明。
图1是示出基于本文描述的技术的涉及检测和分析系统102的一种实现(例如架构)的示例概念的框图。示例性系统102用相对较小的开销来捕捉构建用户事务的执行踪迹以及标识他们的关键路径和异常路径所需的信息。注意到,在决定要捕捉什么的时候,在开销与向开发者给出有用反馈的能力之间存在折衷。
如图1所示,应用104(例如二进制文件)使用进入被检测应用108中的检测工具(检测程序106)来检测,如本文所述。注意到,尽管应用二进制文件被用于描述该技术,但任何代码均可受益于本文描述的技术,例如,操作系统组件、服务等等可被类似地检测和分析,即便它们在技术上不被认为是应用。
在一种实现中,开发者仅需要向检测程序106提供应用二进制文件;不需要其他输入或源代码注释。对于电话应用,检测程序106利用这样一个事实:电话应用常常使用较高级的框架来编写并且被编译成中间语言(字节代码)。例如,一种或多种实现被设计成用于使用框架(被电话市场中的大部分应用所使用)编写并被编译成MSIL(中间语言)字节代码的应用。MSIL保留程序的结构,包括类型、方法和继承信息。
用户从应用商店110获得被检测应用108的实例。当用户在他们的设备112上实地运行被检测应用108时,踪迹数据114被收集并上传到服务器116。例如,在基于的电话中,后台传输服务(BTS)可用于上传踪迹数据114;一般而言,在没有前台应用正在运行时,BTS上传数据,并且在网络中断和丢失的情况下提供可靠传输服务。
多个因素影响移动应用的性能,包括用户输入、环境条件等等。应用执行踪迹可以用不同详细程度来捕捉。
踪迹数据由分析组件118分析,并且发现/开发者反馈120例如经由基于web的接口变得对开发者/团队122可用。开发者/团队122接着可以例如经由经更新的版本来改善应用。习得的知识还能够改善其他应用。
一般而言,踪迹数据114对应于捕捉各种类别数据的需要,包括用户何时操纵UI;应用代码何时在各种线程上执行,以及异步调用与回调之间的因果关系。其他类别包括涉及线程同步点(例如通过Wait(等待)调用)及其因果关系、UI何时被更新、以及任何未处理异常的数据。
附加数据可被捕捉以供分析。例如,对于某些异步调用,诸如web请求和GPS调用,可在调用处以及回调处收集附加信息。作为更具体的示例,对于web请求调用,URL和网络状态可被记录;对于GPS调用,GPS状态可被记录。对要记录的信息的选择可以根据经验以及完整性与开销之间的折衷来引导。实际数据显示用户事务中的关键路径常常涉及网络或GPS接入。通过记录某些点处的小量附加信息,可以将附加的有意义反馈提供给开发者。
为了收集数据,应用可以在各个步骤中被检测。在一种实现中,应用二进制文件首先被读取,从而向应用代码中的方法以及向系统调用指派唯一标识符。每一调用站点被认为是唯一的;例如,如果X被调用两次,则每一调用站点获得其自己的标识符。这一映射被存储在元数据中(例如,元数据文件中)并被上传到分析组件118中以供稍后使用。另一步骤将库链接到被检测应用代码224,包括绕路库226和记录程序库228,如图2中一般地表示的。绕路库226(基于已知技术)在检测期间被动态生成,并且导出帮助将回调执行归因于触发它们的异步调用的一系列绕路函数。记录程序库228导出记录函数以及将踪迹记录插入存储器缓冲器230中的事件处理程序。每一记录用时间戳以及调用该记录函数的线程的标识符来标签。存储器缓冲器230被转储清除到稳定存储以在需要时防止溢出。当应用退出时,存储器缓冲器230被调度以供使用BTS进行上传。
此外,从恰适位置用对记录程序库228和绕路库226中的方法的调用来检测应用以收集期望数据。这一过程的示例经由以下表1中示出的代码片段以及图3中的对应事务图来提供。
表1:
一般来说,用户输入UI操纵事件在用户与UI交互(触摸、轻拂等)时被捕捉。底层框架232(图2)将UI输入事件递送到在前台运行的应用的UI线程上。这一系列中的第一事件是ManipulationStarted(操纵开始)事件,而最后一个是ManipulationEnded(操纵结束)事件。用于处理UI事件的任何应用指定的处理程序也在这两个事件之间在UI线程上被调用。例如,在表1中的以上代码中,btnFetchClick(按钮取得点击)处理对按钮的点击事件。当用户触摸屏幕上的按钮时,处理程序在两个操纵事件之间被调用。
记录程序库228导出ManipulationStarted和ManipulationEnded事件的处理程序,它们被添加到应用的代码,如一般地在以下的表2的被检测代码中所示。处理程序记录事件的时间,这允许将UI操纵与用于该UI输入的正确应用处理程序相匹配。
表2:
表2示出了表1中的代码的被检测版本。注意到,实际检测是用MSIL字节代码来完成的,然而出于可读性目的,示出了未经编译的C#代码。
图3-5示出移动应用中使用的典型异步编程模式。移动应用在本质上是以UI为中心的,并且UI由单个专用线程管理,UI更新以及与UI的用户交互发生在这一线程上。为了维护UI响应性,应用尽可能地避免阻塞UI线程,并且异步地执行大部分工作。一些移动编程框架(例如)并未提供用于耗时操作(如网络I/O和位置查询)的同步API。计算任务通常通过派生工作者线程来执行。因此,用户请求以高度异步的方式来处理。这在图3中解说,图3图形地示出了表1中的代码片段的执行踪迹。在图3中,水平线分段指示线程执行中花费的时间,而线分段之间的箭头指示线程之间的因果关系。
在图3中,画圈的数字(0)到(8)对应于以下描述:
(0)用户通过点击按钮开始事务;
(1)OS在UI线程的上下文中调用事件处理程序(btn-FetchClick);
(2)处理程序作出异步HTTP请求,从而提供reqCallback(请求回调)作为回调;
(3)处理程序退出,从而释放UI线程;
(4)时间被花费来下载HTTP内容;
(5)当HTTP请求完成时,OS调用工作者线程中的reqCallback;
(6)工作者线程处理取得的数据;
(7)当处理完成时,工作者线程调用UI分派器以使UI更新排队;
(8)OS在UI线程上异步地调用所分派的函数(updateUI(更新UI)),该函数更新UI。
在实践中,应用通常要复杂得多。例如,工作者线程可进而启动它们自己的工作者线程,一些用户交互可以启动计时器以通过应用的生存期来执行周期性任务,事务可以由传感器(诸如加速度计)触发,用户可以中断正在运行的事务或者并行启动另一事务,等等。
作为示例,图4解说了对于基于位置的应用而言共同的模式。该应用向用户显示关于附近餐厅和景点的信息。典型的用户事务如下来行进。在用户操纵之际,应用要求系统获得GPS固定,并且当获得固定时提供用于调用的回调。在(2),系统获得固定,并且在工作者线程中调用应用提供的回调。回调函数读取GPS坐标并且作出两个并行web请求以取得某种位置特定的数据。接着,线程等待(4)两个完成信号。等待经由虚线来指示。当两个web请求完成时,OS在(5)和(7)调用它们的回调。第一回调在(6)向被阻塞线程用信号指示完成,而第二回调在(8)这么做。作为第二信号的结果,被阻塞线程在(9)苏醒,并且经由分派器来更新UI。
给定此类复杂的行为,对于开发者而言可能难以查明代码中的瓶颈在哪里以及什么优化可能改善用户感知到的响应性。在图4中,瓶颈路径涉及第二web请求,这花费更长时间来完成。注意到,取决于不同用户的设备、位置、网络状况和使用模式,这些瓶颈对于不同用户可以是不同的。
故障分析也被应用的异步本质复杂化。考虑图5中的示例。假设应用在方法parseURL()(8)中崩溃,该方法在起始于parseXML()(7)的工作者线程中被调用。因为启动web请求的UI线程函数已经退出,所以操作系统没有关于这一崩溃的用户上下文的信息。因而,在由当前流行的移动平台提供的异常日志中,开发者仅仅看见崩溃线程的栈踪迹,从parseURL()到parseXML()。然而,开发者可能想要更多信息,诸如触发该崩溃的用户操纵以加速问题调试。
本文描述的是一种能够跨线程边界来跟踪用户事务的系统(以及其他优点)。该系统帮助开发者理解他们的应用实地经历的性能瓶颈和故障。如将理解的,这通过向开发者提供用户事务的关键路径以及当应用在事务期间发生故障时的异常路径来完成。
注意到在图3中,用户事务在用户操纵发生时开始,而在更新UI方法完成时结束。然而,用户事务不必总是伴随着UI更新而结束。例如,后台任务可继续处理超过UI更新而不影响用户感知到的等待时间。
关于关键路径,在图3中,从(0)到(8)的整个路径构成了事务的关键路径。等待时间可以通过降低下载延迟(4)或处理延迟(6)来降低。在图4中,关键路径由加粗带箭头的虚线示出。注意到在图4中,与第一web请求的下载和处理有关的活动不在关键路径上(因为web请求2花费时间最长)。关键路径标识出直接影响用户感知到的等待时间的代码部分。
然而,关键路径可以不总是准确地表征用户体验。例如,事务可以对UI作出多次更新(一次接着一次),并且用户可能仅关心其中之一,或者用户可打断事务以启动新的更新。因而,关键路径对于理解性能瓶颈是有用的。
为了调试应用故障,本文描述的系统向开发者提供异常路径。异常路径是从用户操纵到异常方法的路径,跨越异步边界。在图5中,(0)到(8)是异常路径。异常路径将开发者指向启动导致崩溃的异步路径的用户操纵。
关于捕捉线程执行,图3中的加粗水平线分段表示在每一线程上执行的应用代码何时开始以及何时结束。这可以从记录每一方法的开始和结尾的完整执行踪迹中确定。然而,从移动电话捕捉和上传完整执行踪迹的开销一般是高昂的。因而,在一方面,本文描述了通过观察在图3中的每一水平线片段的开始处线程栈中的顶部帧对应于应用方法(与框架内部的方法相反)以及观察这一方法是栈上的唯一应用方法来极大地缩减开销。这些方法是从框架进入应用代码的向上调用。记录仅仅向上调用的开始和结尾是足够的。当系统出于各种理由中的任一种来调用应用指定的处理程序(也被称为回调)方法以例如处理用户输入、计时器期满、传感器触发、或I/O操作的完成时,生成向上调用。注意到,工作者线程的派生涉及向上调用;应用创建线程,并且指定一方法作为起始方法。这一方法在之后的某一时间作为Thread.Start的回调被调用。
为了检测代码,可以使用试探法来标识潜在的向上调用方法,即,当一方法被指定为对系统调用的回调时,对包括函数指针的方法的引用(在.NET中被称为委托)被传递到系统调用。例如,在表1中,对reqCallback的引用被传递到BeginGetResponse(开始获得响应)系统调用。用于创建委托的MSIL代码具有固定格式,其中两个操作码被用于将函数指针推送到栈上。被这些操作码引用的任何方法可以被称为向上调用;(注意到,某些UI处理程序被不同地传递到系统并且也被标识)。
系统捕捉潜在的向上调用的开始和结束时间以及指派给它们的标识符。如表2中所示,为跟踪潜在的向上调用添加的检测由‘+’来添加。表1的示例中的方法是潜在的向上调用并且因而被检测(表2)。尽管这一技术被保证捕捉向上调用,但它也可检测超过必要的更多方法,从而施加不必要的开销。在实践中,这一开销与实现的节约相比是可忽略的。
转向将异步调用匹配到所得到的向上调用(即它们的回调),作为示例,在图3中,系统需要匹配标记二(2)和五(5)。为此,系统需要标识异步系统调用被作出的调用站点;例如,在表1中,BeginGetResponse调用是异步系统调用。系统102记录作为向上调用的回调何时开始执行,以及如上所述地跟踪向上调用执行的开始。
为了标识异步系统调用被作出的调用站点,一般地,系统102假定将委托作为自变量来接受的任何系统调用是异步调用。然而,在实践中,这一一般试探法被细化,包括通过检测可异步地调用提供的回调的系统调用(例如使用踪迹中的线程标识符)。另一细化通过以下表中的“延迟的回调”代码来例示。
表3:
在这一示例中,回调委托foo在构建程序被调用时被指定,但仅当Thread.Start被调用时才被调用,这可能要晚得多。没有细化的一般试探法不正确地将回调匹配到构建程序的调用站点,而非Thread.Start。然而,关于框架(例如)系统库的域知识可被使用,例如,通过知晓回调函数总是从Thread.Start被调用。系统记录线程对象在构建程序处以及在Thread.Start处的标识符。本文描述的对象标识符和绕路日志允许将回调匹配到Thread.Start调用。事件订阅可被类似地处理。
系统进一步需要将回调执行的开头连接到对应的异步调用。注意到,单个回调函数(例如用于web请求的完成处理程序)可被指定为若干异步系统调用的回调。重写应用代码以多次克隆回调函数并且指派唯一标识符是不够的,因为异步调用可以在将相同函数指定为回调的循环(例如,对于列表中的每一URL,开始下载)中被调用。为了处理此类场景,回调方法被编写为通过绕路库226来绕过它们;在以下的表4中示出了相关绕路代码。
表4:
注意到,在被检测代码(表2)中,用于绕路的检测用‘*’(星号)来标记。
检测可以如下并且如图6中所示地被添加。
(步骤602和604)将系统调用BeginGetResponse标识为异步调用。在这一示例中,考虑检测程序已经将调用标识符7指派给这一调用站点。系统记录调用站点标识符,以及调用的开始时间和结束时间(步骤604)。
(步骤606)生成匹配所提供的回调函数的签名(即reqCallback)的新方法(例如被称为cb1)并将其添加到绕路库中的绕路类。这一方法负责调用原始回调(表6)。
(步骤608)检测调用站点以调用GetDetour来生成绕路(Detour)对象的新实例。这一对象存储原始回调,并且在运行时被指派唯一的ID(被称为matchId(匹配Id))。这一匹配Id帮助将异步调用匹配到回调。
(步骤610)重写应用代码以用新生成的绕路方法Detour.cb1来替换原始回调自变量。
在被检测代码的执行期间,绕路代码被调用,如图7中一般地表示的。经由检测,异步调用722被配置成使得回调是针对DetourObject774,其中异步调用772与匹配Id相关联。回调是针对DetourObject774的DetourCallback776,它基于相关联的匹配Id将回调匹配到调用。从异步调用的角度,回调DownloadCallback(response)(下载回调(响应))778从绕路对象如常继续,但(经由绕路)与记录相关的信息被知晓与这一异步调用相关联。
注意到,从表4中,GetDetour(获得绕路)方法使用记录程序库的LogAsyncStart(记录异步起始)函数来记录异步调用的开头。类似地,回调的开头由LogCallbackStart(记录回调起始)记录,它将在原始回调被调用之前从cb1被调用。原始回调方法的这些记录以及UpcallStart(向上回调起始)记录由匹配Id、调用站点ID、及其线程ID来链接,从而允许系统将回调归因于正确的异步调用。
表4还示出了绕路的另一示例。UpdateUI(更新UI)方法是针对UIDispatcher(UI分派器)的BeginInvoke(开始调用)方法的回调,并且因此被绕过。
在表5中的一系列记录中示出了由表2中的被检测代码所生成的踪迹。
表5:
表5示出了表2中的被检测代码所生成的踪迹。记录1和7示出了UI操纵事件。这些记录涵盖了针对方法btnFetchClick的向上调用(记录2-6)。如上所述,这一向上调用归因于UI操纵。这一方法作出异步系统调用BeginGetResponse(开始获得响应)(记录4),它的回调被绕过并且被指派为1的匹配ID。记录8标记被绕过的回调的执行的开头,并且调用具有19的方法ID的实际回调方法reqCallback。这一方法在记录9和13之间执行。记录8和9可被链接,因为它们具有相同的线程ID,并且跟着彼此。
当reqCallback执行时,另一异步调用被作出,即,对UI分派器的调用。回调被绕过,并且被指派为2的匹配ID。实际回调方法是UpdateUI,其具有为21的方法ID。
这一方法的完成由记录16来指示。注意到,这一方法在UI线程上运行。记录17指示LayoutUpdated(布局更新)事件是在这一方法执行之后被立即触发的,这意味着这一方法更新了UI。
在一种实现中,该框架提供了用于线程同步的一组方法。线程等待信号标(例如Monitor.Wait(obj)),并且通过用信号指示该信号标(例如Monitor.Pulse(obj))而被唤醒。对这些函数的调用以及它们使用的信号标对象的身份被记录。对象标识符可用于确定同步调用之间的因果关系。在多个对象上等待,并且线程联结调用被类似地处理。线程也可使用共享变量来同步,如下所述。
关于捕捉UI更新,在一种实现中,只要应用完成对UI的更新,该框架就生成LayoutUpdated事件。在一种实现中,如果向上调用在UI线程上运行(经由UIDispatcher调用的事件处理程序或应用方法),并且作为其执行的一部分更新UI的一个或多个元件,则当向上调用结束时提出单个LayoutUpdated事件。记录程序库导出用于这一事件的处理程序,它被添加到应用代码。处理程序记录这一事件被提出的时间。
当应用代码中出现未被处理的异常时,系统终止应用。在终止之前,系统将特殊事件递送到应用。与这一事件相关联的数据包含其中异常发生的线程的异常类型以及栈踪迹。为了记录这一数据,记录程序库导出用于这一事件的处理程序,它被添加到应用代码。
转向分析方面,踪迹被分析以描绘个体用户事务以及标识关键路径和异常路径。事务也可集成地来分析以突出更广泛的趋势。
用户事务由有向无环图来表示。该图从踪迹数据中生成。考虑表5中的踪迹,它可以被转换成图8A中的图。该图包含五种类型的节点,即:(M)用户操纵、(S)向上调用起始、(E)向上调用结束、(A)异步调用起始、以及(L)布局更新。每一节点表示一个踪迹记录(CallStart、CallEnd和CallBackStart记录用于书签而不被映射到节点),并且由类型和记录id来标识。节点类型M、S、E、A和L之间的映射以及记录类型可以从表5中确定。节点之间的边表示因果关系。例如,UIManipulationStarted(UI操纵起始)事件M1触发处理程序S2的启动。类似地,回调执行S9的启动是由异步调用A4引起的。向上调用起始节点“引起”该向上调用上的任何后续活动。因此,示出S2→A4,因为异步调用是在向上调用的执行期间作出的,并且S2→E6以表示向上调用结束是由向上调用起始触发的事实。注意到,图8A中的图未示出任何线程同步事件;这些由三种类型的节点表示,即(B)线程阻塞节点、(F)信号标激发节点、以及(W)线程苏醒节点,它们在下文参考图8B来描述。
当应用踪迹包含交叠的用户事务时,这一办法正确地将它们区分开来并且为每一用户事务生成图。对应于这一图表示的数据可被用于发现用户事务中的关键路径。
如上所述,关键路径是用户事务中的瓶颈路径。用于寻找关键路径的算法是直接的,如图8A中一般地例示的。分析组件118(图1)向下遍历该图,从最后UI更新(L17)到用信号通知事务(M1)的起始的用户操纵事件,从而在相反方向上遍历每一有向边。这一路径在被逆转时得到关键路径:M1、S2、A4、S9、A11、S15、E16、L17。图8A中的示例示出了该系统正确地计及向上调用内部花费的时间,例如,不在关键路径上的边(S9、E13),这意味着在调用分派器之后reqCallback方法(表2)中的任何活动都不影响用户感知到的等待时间。注意到,本文讨论了对这一算法的细化。
事务可以多次更新UI。这导致事务图中有多个L节点。仅开发者能够准确确定这些更新中的哪一个是有意义的。在此类情形中,检测系统默认地报告到最后一个L节点的关键路径。然而,使用反馈接口或类似接口,开发者能够要求检测系统生成到L个节点中的任一个节点的关键路径。
经由信令的线程同步是另一方面。以上算法隐式地假定每一节点仅具有入射到其上的一条边。对于图8B所示的图,情形并非如此,它表示图8B中示出的事务。是线程苏醒节点的节点W具有入射到其上的两条边,因为线程正在等待两个信号标激发(两个F节点)。在此类情形中,该系统将信号标激发记录的时间戳进行比较并且挑选较后的事件。这得到图8B中由加粗虚线示出的关键路径。
注意到,应用可以启动周期性计时器,该周期性计时器以常规间隔激发并且执行各种任务,包括UI更新。在一些情形中,周期性计时器也可用于线程同步。这一模式可由系统检测,并且接着假定每一计时器激发为单独事务的起始。这些事务是计时器事务,以将它们与用户事务相区分。这些事务可以不以UI更新来结束。传感器驱动的事务以类似方式来处理。
当应用崩溃时,系统记录包括崩溃线程的栈踪迹的异常信息。检测机制生成的踪迹直到该点才被知晓。系统走查栈帧,直到找到包含检测机制踪迹中的最后一个UpcallStart记录的方法名称的帧。与栈踪迹相组合的从事务起始到Upcall起始节点的路径表示了异常路径。
检测机制可通过集体分析事务来帮助开发者看见“更大的图”。存在各种方式来查看聚集数据。例如,开发者可以通过使用聚集数据来解开性能可变性的根本原因以及发现“离群者”(例如,与类似事务相比花费异常长的时间来完成的事务)来获益。为了执行这一分析,具有相同图的事务可被分组在一起,例如,具有相同节点和相同连接关系的事务。这些事务表示与应用的相同用户交互。这是保守分组;相同的用户交互可能偶尔生成不同的事务图,但如果两个事务具有相同的图,则它们对应于相同交互的概率是很高的。
尽管一个组中的事务具有相同的事务图,但它们的关键路径和历时可以不同。为了标识这一可变性之后的主要源头,被称为方差分析(ANOVA)的标准统计技术可被用于帮助理解性能变化。ANOVA量化一个度量中可被归因于贡献于该度量的个体因子的方差的量。各个因子可包括网络传输、本地处理和GPS查询,这进而可由于网络类型、设备类型、GPS状态、用户状态等而变化。
本文描述的系统还可标记离群事务以帮助开发者标识性能瓶颈。例如,组中具有高于(均值+(k*标准差))历时的事务可被标记为离群值;在一种实现中k=3。
图9是包括由检测和分析系统执行的检测、执行和分析步骤的示例步骤的汇总。注意到,检测、执行和分析是间接相连的,例如,在检测之后用户可能未下载和/或执行被检测应用的实例达很长时间(例如,数天、数星期、数月等),并且分析可以在执行之后的很长时间发生。步骤902和904涉及检测应用代码,包括添加库(步骤902)并且导出记录函数和事件处理程序(步骤904)。
步骤910和912涉及执行步骤。如本文所述,在执行期间,被检测代码记录与UI操纵、线程执行、异步调用和回调、UI更新和/或线程同步有关的数据。异步调用和回调被绕路以正确地将调用与回调相关联,如本文所述。步骤912表示将被记录的(踪迹)数据上传到服务器以供后续分析。
步骤918和920涉及对踪迹数据的分析,包括接收踪迹数据(它可被存储以供稍后分析)。分析由步骤920表示,并且包括这些概念,诸如确定事务、将事务表示为有向无环图(DAG)、以及确定事务的关键路径。还可执行聚集以向开发者给出“大的视图”,如本文所述。
示例性操作环境
图10示出可在其上实现此处所描述的主题的各方面的合适的移动设备1000的示例。移动设备1000仅为设备的一个示例,并非旨在对此处所描述的主题的各方面的使用范围或功能提出任何限制。移动设备1000也不应被解释成对于在示例性移动设备1000中所示出的任一组件或其组合有任何依赖或要求。
参考图10,用于实现此处所述的主题的各方面的示例性设备包括移动设备1000。在某些实施例中,移动设备1000包括蜂窝电话、允许与其他手持设备的语音通信的手持设备、某一其他语音通信设备等。在这些实施例中,移动设备1000可配备用于拍摄照片的相机,虽然这在其他实施例中可能不是必需的。在其他实施例中,移动设备1000包括个人数字助理(PDA),手持式游戏设备,笔记本计算机,打印机,包括机顶盒、媒体中心或其他电器等的电器,其他移动设备等。在其他实施例中,移动设备1000可包括通常被认为是非移动的设备,诸如个人计算机、服务器等。
移动设备1000的组件可以包括但不限于,处理单元1005、系统存储器1010和将包括系统存储器1010在内的各种系统组件耦合至处理单元1005的总线1015。总线1015可包括几种类型的总线结构中的任何一种,包括存储器总线、存储控制器、外围总线、以及使用各种总线体系结构中的任一种的局部总线等。总线1015允许数据在移动设备1000的各组件之间传送。
移动设备1000可以包括各种计算机可读介质。计算机可读介质可以是能由移动设备1000访问的任何可用介质,并包含易失性和非易失性介质以及可移动和不可移动介质两者。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据这样的信息的任意方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁存储设备、或者可用于存储所需信息并且可由移动设备1000访问的任何其他介质。
通信介质通常以诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并包括任何信息传送介质。术语“已调制数据信号”是指使得以在信号中编码信息的方式来设置或改变其一个或多个特性的信号。作为示例而非限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、RF、无线USB、红外、Wi-Fi、WiMAX、和其它无线介质。上述的任意组合也应包含在计算机可读介质的范围内。
系统存储器1010包括易失性和/或非易失性存储器形式的计算机存储介质,且可包括只读存储器(ROM)和随机存取存储器(RAM)。在诸如蜂窝电话等移动设备上,操作系统代码1020有时被包括ROM中,虽然在其他实施例中,这不是必需的。类似地,应用程序1025通常位于RAM中,虽然同样在其他实施例中,应用程序可位于ROM中或其他计算机可读存储器中。堆1030提供用于与操作系统1020和应用程序1025相关联的状态的存储器。例如,操作系统1020和应用程序1025可在它们的操作期间将变量和数据结构存储在堆1030中。
移动设备1000还可包括其他可移动/不可移动、易失性/非易失性存储器。作为示例,图10示出闪存卡1035、硬盘驱动器1036和记忆棒1037。硬盘驱动器1036可被小型化以适合在例如存储器槽中。移动设备1000可经由可移动存储器接口1031与这些类型的非易失性可移动存储器接口,或可经由通用串行总线(USB)、IEEE10394、一个或多个有线端口1040、或天线1065连接。在这些实施例中,可移动存储器设备1035-437可经由通信模块1032与移动设备接口。在某些实施例中,并非所有这些类型的存储器都可被包括在单个移动设备上。在其他实施例中,可将这些和其他类型的可移动存储器中的一个或多个包括在单个移动设备上。
在某些实施例中,可按更永久地附连到移动设备1000的方式连接硬盘驱动器1036。例如,硬盘驱动器1036可连接到诸如并行高级技术附件(PATA)、串行高级技术附件(SATA)或其他可连接到总线1015的附件等接口。在此类实施例中,移除硬盘驱动器可涉及移除移动设备1000的外壳并移除将硬盘驱动器1036连接到移动设备1000内的支承结构的螺丝钉或其他紧固件。
以上讨论和在图10中示出的可移动存储设备1035-1037及其相关联的计算机存储介质提供对用于移动设备1000的计算机可读指令、程序模块、数据结构、和其他数据的存储。例如,一个或多个可移动存储器设备1035-1037可存储由移动设备1000拍摄的图像、语音录音、联系人信息、程序、用于程序的数据等。
用户可通过诸如键区1041和话筒1042等输入设备向移动设备1000中输入命令和信息。在某些实施例中,显示器1043可以是触敏屏幕并可允许用户在其上输入命令和信息。键区1041和显示器1043可通过耦合到总线1015的用户输入接口1050连接到处理单元1005,但也可由其他接口和总线结构连接,如通信模块1032和有线端口1040。运动检测1052可被用于确定关于设备1000做出的姿势。
例如,用户可经由对话筒1042讲话并经由在键区1041或触敏显示器1043上输入的文本消息来与其他用户通信。音频单元1055可提供电信号以驱动扬声器1044以及接收并数字化接收自话筒1042的音频信号。
移动设备1000可包括提供信号以驱动相机1061的视频单元1060。视频单元1060还可接收由相机1061获得的图像并将这些图像提供给包括在移动设备1000上的处理单元1005和/或存储器。由相机1061获得的图像可包括视频、不形成视频的一个或多个图像、或其某一组合。
通信模块1032可向一根或多根天线1065提供信号并从其接收信号。天线1065之一可发射并接收用于蜂窝电话网络的消息。另一天线可发射并接收消息。又一天线(或共享天线)可经由无线以太网网络标准发射并接收网络消息。
更进一步,天线将例如GPS信号等基于位置的信息提供给GPS接口和机制1072。进而,GPS机制1072使得对应的GPS数据(例如,时间和坐标)可用于处理。
在某些实施例中,可使用单根天线来发射和/或接收用于超过一种类型的网络的消息。例如,单根天线可发射并接收语音和分组消息。
当在网络化环境中操作时,移动设备1000可连接到一个或多个远程设备。远程设备可包括个人计算机、服务器、路由器、网络PC、蜂窝电话、媒体回放设备、对等设备或其他常见的网络节点,并且一般包括上面相对于移动设备1000所述的许多或全部元件。
本文所描述的主题的各方面可与众多其他通用或专用计算系统环境或配置一起操作。适用于此处所描述的主题的各方面的公知的计算系统、环境和/或配置的示例包括,但不限于,个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机、大型计算机、包括上述系统或设备中的任一个的分布式计算环境等。
此处所描述的主题的各方面可在由移动设备执行的诸如程序模块等计算机可执行指令的一般上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。本文所述的主题的各方面也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。在分布式计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机存储介质中。
此外,虽然此处频繁使用术语服务器,但可以认识到,该术语也可涵盖客户机、分布在一个或多个计算机上的一个或多个进程的集合、一个或多个独立的存储设备、一个或多个其他设备的集合、以上的一个或多个的组合,等等。
结语
尽管本发明易于作出各种修改和替换构造,但其某些说明性实施例在附图中示出并在上面被详细地描述。然而应当了解,这不旨在将本发明限于所公开的具体形式,而是相反地,旨在覆盖落入本发明的精神和范围之内的所有修改、替换构造和等效方案。
Claims (10)
1.一种方法,包括:自动检测应用代码,包括将一个或多个记录函数以及一个或多个事件处理程序插入所述应用代码以记录事件,以及将代码插入所述应用代码以为异步调用的调用指派标识符,并且使提供给所述异步调用的回调绕路到绕路代码以基于所述基于所述标识符将所述回调与所述异步调用相关联。
2.如权利要求1所述的方法,其特征在于,将一个或多个记录函数以及一个或多个事件处理程序插入所述应用代码包括向所述应用代码添加导出一个或多个记录函数以及一个或多个事件处理程序的记录程序库。
3.如权利要求1所述的方法,其特征在于,进一步包括:
a)添加绕路库以提供所述绕路代码,或者
b)记录用户事务的事件,或者
c)记录包括与至少一个事件有关的定时信息的事件,或者
d)跟踪异常路径,或者
e)记录应用执行期间的事件,包括记录以下至少一者:用户界面(UI)操纵、线程执行、异步调用和回调、UI更新或线程同步,或者
f)a)、b)、c)、d)、e)或f)的任何组合。
4.如权利要求3所述的方法,其特征在于,进一步包括分析所述用户事务,包括标识其中的关键路径,或者b)将所述用户事务表示为有向无环图,并且其中标识所述关键路径包括处理所述有向无环图,或者c)a)和b)两者。
5.一种系统,包括:检测程序,所述检测程序被配置成用记录功能以及用将异步调用与回调相关联的代码来检测应用代码,以及分析组件,所述分析组件被配置成处理在所述应用代码的执行期间经由所述记录功能被记录到有向无环图中的数据,所述数据表示在执行期间发生的一个或多个事务。
6.如权利要求5所述的系统,其特征在于,所述分析组件被配置成a)处理至少一个有向无环图以确定关键路径,或者b)将被记录的数据处理成异常路径,或者a)与b)两者。
7.如权利要求5所述的系统,其特征在于,所述记录功能被配置成记录涉及以下至少一者的数据:用户事务、计时器事务、传感器驱动事务、用户界面(UI)操纵、线程执行、异步调用和回调、UI更新、或者线程同步。
8.一种或多种具有可执行指令的机器可读存储介质,所述可执行指令在被执行时执行以下步骤,包括:
(a)执行被检测的应用代码;
(b)记录经由所述被检测的应用代码在执行期间的数据,所述数据对应于以下至少一者:用户界面(UI)操纵、线程执行、异步调用和回调、UI更新或线程同步;以及
(c)更新所述数据以供分析处理。
9.如权利要求8所述的一种或多种机器可读存储介质,其特征在于,记录在执行期间的数据包括将异步调用匹配到对应的回调。
10.如权利要求8所述的一种或多种机器可读存储介质,其特征在于,将所述异步调用匹配到对应的回调包括检测所述异步调用以指派唯一标识符并且将提供给所述异步调用的回调绕路到绕路代码,并且经由所述标识符来将所述回调与所述异步调用相关联。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/923,187 US9405654B2 (en) | 2013-06-20 | 2013-06-20 | Monitoring mobile application performance |
US13/923,187 | 2013-06-20 | ||
PCT/US2014/042794 WO2014204996A1 (en) | 2013-06-20 | 2014-06-17 | Monitoring mobile application performance |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105556482A true CN105556482A (zh) | 2016-05-04 |
CN105556482B CN105556482B (zh) | 2018-05-22 |
Family
ID=51168438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480035453.6A Expired - Fee Related CN105556482B (zh) | 2013-06-20 | 2014-06-17 | 监视移动应用性能 |
Country Status (4)
Country | Link |
---|---|
US (3) | US9405654B2 (zh) |
EP (1) | EP3011457A1 (zh) |
CN (1) | CN105556482B (zh) |
WO (1) | WO2014204996A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108595331A (zh) * | 2018-04-24 | 2018-09-28 | 杭州朗和科技有限公司 | 异步接口的测试方法、介质、装置和计算设备 |
CN110442498A (zh) * | 2019-06-28 | 2019-11-12 | 平安科技(深圳)有限公司 | 异常数据节点的定位方法、装置、存储介质及计算机设备 |
Families Citing this family (63)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3019971B1 (en) * | 2013-07-12 | 2020-05-06 | Google LLC | Methods and systems for performance monitoring for mobile applications |
US9836193B2 (en) | 2013-08-16 | 2017-12-05 | International Business Machines Corporation | Automatically capturing user interactions and evaluating user interfaces in software programs using field testing |
US9697545B1 (en) * | 2014-03-11 | 2017-07-04 | Vmware, Inc. | Service monitor for monitoring and tracking the performance of an application running on different mobile devices |
US9606870B1 (en) | 2014-03-31 | 2017-03-28 | EMC IP Holding Company LLC | Data reduction techniques in a flash-based key/value cluster storage |
US9703551B2 (en) * | 2014-04-28 | 2017-07-11 | Ca, Inc. | Modifying mobile application binaries to call external libraries |
US10228751B2 (en) | 2014-08-06 | 2019-03-12 | Apple Inc. | Low power mode |
US9647489B2 (en) | 2014-08-26 | 2017-05-09 | Apple Inc. | Brownout avoidance |
US9356969B2 (en) * | 2014-09-23 | 2016-05-31 | Intel Corporation | Technologies for multi-factor security analysis and runtime control |
US9754002B2 (en) * | 2014-10-07 | 2017-09-05 | Excalibur Ip, Llc | Method and system for providing a synchronization service |
US9483283B1 (en) * | 2014-11-20 | 2016-11-01 | Apptimize, Inc. | Enhanced code callback |
US10133622B2 (en) * | 2014-11-24 | 2018-11-20 | Microsoft Technology Licensing, Llc | Enhanced error detection in data synchronization operations |
US9582312B1 (en) * | 2015-02-04 | 2017-02-28 | Amazon Technologies, Inc. | Execution context trace for asynchronous tasks |
US10489265B2 (en) | 2015-04-30 | 2019-11-26 | Micro Focus Llc | Monitoring application operations using user interaction times |
US10235266B2 (en) * | 2015-07-10 | 2019-03-19 | Ca, Inc. | Application screen mapping for mobile analytics |
KR102451763B1 (ko) * | 2015-07-31 | 2022-10-11 | 삼성전자주식회사 | 응용 프로그램을 제어하기 위한 장치 및 방법 |
US10929272B2 (en) * | 2015-10-16 | 2021-02-23 | Microsoft Technology Licensing, Llc | Telemetry system extension |
US11288245B2 (en) | 2015-10-16 | 2022-03-29 | Microsoft Technology Licensing, Llc | Telemetry definition system |
US11386061B2 (en) | 2015-10-16 | 2022-07-12 | Microsoft Technology Licensing, Llc | Telemetry request system |
US10152527B1 (en) | 2015-12-28 | 2018-12-11 | EMC IP Holding Company LLC | Increment resynchronization in hash-based replication |
US9992264B2 (en) | 2016-02-02 | 2018-06-05 | Salesforce.Com, Inc. | High-speed trace functionality in an on-demand services environment |
US20170250890A1 (en) * | 2016-02-29 | 2017-08-31 | New Relic, Inc. | Asynchronous transactions reported as critical path |
US10310951B1 (en) | 2016-03-22 | 2019-06-04 | EMC IP Holding Company LLC | Storage system asynchronous data replication cycle trigger with empty cycle detection |
US10324635B1 (en) | 2016-03-22 | 2019-06-18 | EMC IP Holding Company LLC | Adaptive compression for data replication in a storage system |
US9959073B1 (en) | 2016-03-30 | 2018-05-01 | EMC IP Holding Company LLC | Detection of host connectivity for data migration in a storage system |
US10565058B1 (en) | 2016-03-30 | 2020-02-18 | EMC IP Holding Company LLC | Adaptive hash-based data replication in a storage system |
US9959063B1 (en) | 2016-03-30 | 2018-05-01 | EMC IP Holding Company LLC | Parallel migration of multiple consistency groups in a storage system |
US10095428B1 (en) | 2016-03-30 | 2018-10-09 | EMC IP Holding Company LLC | Live migration of a tree of replicas in a storage system |
US10095599B2 (en) * | 2016-03-31 | 2018-10-09 | International Business Machines Corporation | Optimization for application runtime monitoring |
US10222995B2 (en) * | 2016-04-13 | 2019-03-05 | Samsung Electronics Co., Ltd. | System and method for providing a zero contention parallel data stack |
WO2017194991A1 (en) * | 2016-05-10 | 2017-11-16 | Pratik Sharma | Dynamic policy driven application performance monitoring |
US10015181B2 (en) * | 2016-05-19 | 2018-07-03 | International Business Machines Corporation | Using natural language processing for detection of intended or unexpected application behavior |
US10152232B1 (en) * | 2016-06-29 | 2018-12-11 | EMC IP Holding Company LLC | Low-impact application-level performance monitoring with minimal and automatically upgradable instrumentation in a storage system |
US10013200B1 (en) | 2016-06-29 | 2018-07-03 | EMC IP Holding Company LLC | Early compression prediction in a storage system with granular block sizes |
US10048874B1 (en) | 2016-06-29 | 2018-08-14 | EMC IP Holding Company LLC | Flow control with a dynamic window in a storage system with latency guarantees |
US9983937B1 (en) | 2016-06-29 | 2018-05-29 | EMC IP Holding Company LLC | Smooth restart of storage clusters in a storage system |
US10083067B1 (en) | 2016-06-29 | 2018-09-25 | EMC IP Holding Company LLC | Thread management in a storage system |
US10073767B2 (en) * | 2017-01-18 | 2018-09-11 | Pivotal Software, Inc. | Trace Management |
US10235474B2 (en) * | 2017-02-27 | 2019-03-19 | Oracle International Corporation | In-memory graph analytics system that allows memory and performance trade-off between graph mutation and graph traversal |
US20200028889A1 (en) * | 2017-04-01 | 2020-01-23 | Fujian Foxit Software Development Joint Stock Co., Ltd. | Method for resolving problem of slow shutdown speed of data collection software |
CN107562540B (zh) * | 2017-09-05 | 2021-03-12 | 武汉斗鱼网络科技有限公司 | 向ui线程投递回调函数的方法、装置及客户端 |
CN107943648A (zh) * | 2017-11-21 | 2018-04-20 | 上海华兴数字科技有限公司 | 应用下载数据日志记录装置与方法 |
US11363133B1 (en) | 2017-12-20 | 2022-06-14 | Apple Inc. | Battery health-based power management |
US10817307B1 (en) * | 2017-12-20 | 2020-10-27 | Apple Inc. | API behavior modification based on power source health |
US11120082B2 (en) | 2018-04-18 | 2021-09-14 | Oracle International Corporation | Efficient, in-memory, relational representation for heterogeneous graphs |
CN109344045A (zh) * | 2018-07-27 | 2019-02-15 | 阿里巴巴集团控股有限公司 | 业务系统切换方法、装置、电子设备及存储介质 |
CN109446094B (zh) * | 2018-11-05 | 2022-05-17 | 网易(杭州)网络有限公司 | 一种卡顿检测方法、装置、电子设备和存储介质 |
US10896115B2 (en) * | 2019-02-05 | 2021-01-19 | Oracle International Corporation | Investigation of performance bottlenecks occurring during execution of software applications |
US11151015B2 (en) | 2019-02-22 | 2021-10-19 | Microsoft Technology Licensing, Llc | Machine-based recognition and dynamic selection of subpopulations for improved telemetry |
US10977075B2 (en) * | 2019-04-10 | 2021-04-13 | Mentor Graphics Corporation | Performance profiling for a multithreaded processor |
CN110245076A (zh) * | 2019-05-21 | 2019-09-17 | 深圳壹账通智能科技有限公司 | 基于功能测试的因素影响程度确定方法、装置及终端设备 |
CN112306723B (zh) * | 2019-07-30 | 2024-06-18 | 北京京东尚科信息技术有限公司 | 一种应用于小程序的运行信息获取方法和装置 |
CN111221907B (zh) * | 2019-12-31 | 2021-03-30 | 武汉达梦数据库股份有限公司 | 一种基于日志解析的数据库添加列同步方法和装置 |
US11327973B2 (en) | 2020-01-24 | 2022-05-10 | International Business Machines Corporation | Critical path analysis of activity trace files |
US11055113B1 (en) * | 2020-02-26 | 2021-07-06 | The Toronto-Dominion Bank | Data rendering for applications |
US11768755B2 (en) * | 2020-03-23 | 2023-09-26 | Ebay Inc. | Graph analysis and database for aggregated distributed trace flows |
US11354220B2 (en) | 2020-07-10 | 2022-06-07 | Metawork Corporation | Instrumentation trace capture technique |
US11327871B2 (en) | 2020-07-15 | 2022-05-10 | Metawork Corporation | Instrumentation overhead regulation technique |
US11392483B2 (en) | 2020-07-16 | 2022-07-19 | Metawork Corporation | Dynamic library replacement technique |
US11416376B2 (en) * | 2020-07-19 | 2022-08-16 | Metawork Corporation | Investigative platform for software application development and production |
WO2022055584A1 (en) | 2020-09-13 | 2022-03-17 | Oracle International Corporation | Out-of-the-box telemetry for rich-client application runtime frameworks |
US12050564B2 (en) | 2020-10-01 | 2024-07-30 | The Toronto-Dominion Bank | Data reporting architecture for applications |
US12072786B2 (en) | 2022-01-05 | 2024-08-27 | International Business Machines Corporation | Dynamic debug tracing with machine learning |
CN116701134B (zh) * | 2022-10-14 | 2024-05-17 | 荣耀终端有限公司 | 一种数据处理方法和电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1755643A (zh) * | 2004-09-27 | 2006-04-05 | 华为技术有限公司 | 一种软件测试的方法 |
US7506318B1 (en) * | 2005-06-28 | 2009-03-17 | Replay Solutions, Inc. | Recording and replaying computer programs |
US7657876B2 (en) * | 2001-08-24 | 2010-02-02 | Microsoft Corporation | System and method for using data address sequences of a program in a software development tool |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6513155B1 (en) * | 1997-12-12 | 2003-01-28 | International Business Machines Corporation | Method and system for merging event-based data and sampled data into postprocessed trace output |
US6327699B1 (en) * | 1999-04-30 | 2001-12-04 | Microsoft Corporation | Whole program path profiling |
US8312435B2 (en) * | 2000-12-26 | 2012-11-13 | Identify Software Ltd. (IL) | System and method for conditional tracing of computer programs |
US7386839B1 (en) * | 2002-11-06 | 2008-06-10 | Valery Golender | System and method for troubleshooting software configuration problems using application tracing |
US7788644B2 (en) * | 2005-03-24 | 2010-08-31 | Sap Ag | Method and system for monitoring performance on a mobile device |
GB0521465D0 (en) | 2005-10-21 | 2005-11-30 | Law Gregory E W | System and method for debugging of computer programs |
US8776027B2 (en) * | 2009-03-06 | 2014-07-08 | Microsoft Corporation | Extracting and collecting platform use data |
US8271837B2 (en) * | 2010-06-07 | 2012-09-18 | Salesforce.Com, Inc. | Performing asynchronous testing of an application occasionally connected to an online services system |
US9021586B2 (en) * | 2010-07-20 | 2015-04-28 | At&T Intellectual Property I, L.P. | Apparatus and methods for preventing cross-site request forgery |
CN103365707B (zh) * | 2012-03-30 | 2016-08-03 | 国际商业机器公司 | 控制异步调用的返回的方法和装置 |
-
2013
- 2013-06-20 US US13/923,187 patent/US9405654B2/en active Active
-
2014
- 2014-06-17 EP EP14737455.7A patent/EP3011457A1/en not_active Withdrawn
- 2014-06-17 WO PCT/US2014/042794 patent/WO2014204996A1/en active Application Filing
- 2014-06-17 CN CN201480035453.6A patent/CN105556482B/zh not_active Expired - Fee Related
-
2016
- 2016-07-08 US US15/206,200 patent/US10013332B2/en active Active
-
2018
- 2018-06-12 US US16/006,817 patent/US20190370147A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7657876B2 (en) * | 2001-08-24 | 2010-02-02 | Microsoft Corporation | System and method for using data address sequences of a program in a software development tool |
CN1755643A (zh) * | 2004-09-27 | 2006-04-05 | 华为技术有限公司 | 一种软件测试的方法 |
US7506318B1 (en) * | 2005-06-28 | 2009-03-17 | Replay Solutions, Inc. | Recording and replaying computer programs |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108595331A (zh) * | 2018-04-24 | 2018-09-28 | 杭州朗和科技有限公司 | 异步接口的测试方法、介质、装置和计算设备 |
CN110442498A (zh) * | 2019-06-28 | 2019-11-12 | 平安科技(深圳)有限公司 | 异常数据节点的定位方法、装置、存储介质及计算机设备 |
CN110442498B (zh) * | 2019-06-28 | 2022-11-25 | 平安科技(深圳)有限公司 | 异常数据节点的定位方法、装置、存储介质及计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
US20140380282A1 (en) | 2014-12-25 |
US20190370147A1 (en) | 2019-12-05 |
CN105556482B (zh) | 2018-05-22 |
EP3011457A1 (en) | 2016-04-27 |
US20170132111A1 (en) | 2017-05-11 |
WO2014204996A1 (en) | 2014-12-24 |
US10013332B2 (en) | 2018-07-03 |
US9405654B2 (en) | 2016-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105556482A (zh) | 监视移动应用性能 | |
US11500762B2 (en) | System and method for automated intelligent mobile application testing | |
US8566648B2 (en) | Automated testing on devices | |
US9355003B2 (en) | Capturing trace information using annotated trace output | |
US20150007138A1 (en) | Method and system for incrementally updating a test suite utilizing run-time application executions | |
KR20150096312A (ko) | 클라우드 동기화 시스템용 텔레메트리 시스템 | |
JP2017504121A (ja) | 端末デバイスにおけるユーザインタフェースを用いたユーザ行動および関与の計測機 | |
CN105144117B (zh) | 对调用堆栈和上下文数据的自动相关分析方法 | |
US10284660B1 (en) | Data flow tokens to trace execution of services in a service provider network | |
WO2019051948A1 (zh) | 监控数据的处理方法、设备、服务器及存储介质 | |
US9317416B2 (en) | Merging automated testing reports | |
US10445214B2 (en) | System and method for tracking callback functions for error identification | |
US10169189B2 (en) | Functional test automation of mobile applications interacting with native stock applications | |
US9258374B2 (en) | Method and system for capturing expertise of a knowledge worker in an integrated breadcrumb trail of data transactions and user interactions | |
US10462234B2 (en) | Application resilience system and method thereof for applications deployed on platform | |
US20230333820A1 (en) | Replacing remote device functions | |
US11374986B1 (en) | Collaborative meeting interest analyzer based on capture attempts | |
US20180341993A1 (en) | Sensor-based interaction analytics | |
Ahmed et al. | Analysis of cloud digital evidence | |
US11782764B2 (en) | Differentiated workload telemetry | |
KR101976993B1 (ko) | 모바일 코드 자동 분석을 위한 동적 바이너리 계측 코드추출장치 및 그 방법 | |
Kuļešovs | Mobile Applications Testing | |
CN113886471A (zh) | 数据存储管理方法、系统、存储介质和电子设备 | |
CN114510396A (zh) | 私有云巡检方法、设备及计算机可读介质 | |
De Palma¹ et al. | Artifacts EAPLS EAPLS Available Evaluated Artifacts V1. 1 Functional V1. 1 An OpenWhisk Extension for Topology-Aware Allocation Priority Policies |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180522 Termination date: 20190617 |
|
CF01 | Termination of patent right due to non-payment of annual fee |