CN103605554A - 用于代码性能分析的方法和装置 - Google Patents
用于代码性能分析的方法和装置 Download PDFInfo
- Publication number
- CN103605554A CN103605554A CN201310269717.1A CN201310269717A CN103605554A CN 103605554 A CN103605554 A CN 103605554A CN 201310269717 A CN201310269717 A CN 201310269717A CN 103605554 A CN103605554 A CN 103605554A
- Authority
- CN
- China
- Prior art keywords
- code
- execution
- program
- trail
- evaluation
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- 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
-
- 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/3471—Address tracing
-
- 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
- G06F11/3612—Software analysis for verifying properties of programs by runtime 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/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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
-
- 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/81—Threshold
-
- 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/815—Virtual
-
- 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)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明的方面提供一种用于评测的方法。方法包括收集符号信息,以将程序中的代码追踪映射到存储对应的本地代码的存储器地址,该本地代码在对程序的执行期间动态地从代码追踪被编译,并且使得符号信息在动态编译之后可用,以对在程序执行期间采样的评测数据进行分析。
Description
相关申请的交叉引用
本公开要求于2012年6月26日提交的,名称为“JIT CODEPERFORMANCE ANALYSIS”的美国临时专利申请No.61/664,427的权益,该申请通过引用方式整体合并于此。
背景技术
此处提供的背景描述出于一般地呈现本公开的上下文目的。当前提名的发明人的工作,就该背景部分描述的工作以及另外在提交时可能未取得现有技术资格的描述的方面而言,并不被或者明确地或者暗示地承认为针对本公开的在先技术。
通常,评测工具可被用于在计算机系统中进行性能分析。在示例中,计算机被周期性地中断,并且评测工具在终端例程期间对计算机系统中的各种参数进行采样。采样的数据能够被收集起来,以评测计算机系统,并且统计地分析计算机系统的性能。
发明内容
本公开的方面提供了一种用于评测的方法。该方法包括在程序的执行期间收集符号信息,以将程序中的代码追踪映射到存储对应的本地代码的存储器地址,该本地代码动态地从代码追踪被编译;以及使得符号信息在程序执行之后可用,以对在程序的执行期间采样的评测数据进行分析。
为了收集符号信息,在实施例中,该方法包括在程序的执行期间收集符号信息,以将程序中的代码追踪映射到存储对应的本地代码的存储器地址,该本地代码通过虚拟机动态地从代码追踪被编译。
根据本公开的一个方面,方法包括检测针对程序中的代码追踪的执行次数大于阈值;将代码追踪编译成本地代码;将本地代码存储在高速缓存中的地址;并且生成符号,以将追踪映射到地址。进一步,方法包括:当执行次数大于阈值时,执行高速缓存中的本地代码,以及当针对追踪的执行次数等于或小于阈值时,通过解译执行代码追踪。
为了使得符号信息在动态编译之后可用,方法包括生成文件,以在程序执行终止之前包括符号信息。进一步,方法包括将文件提供给评测器,该评测器对在程序的执行期间采样的评测数据进行分析。
本公开的方面提供了一种包括存储器和处理器的装置。存储器被配置成存储用于虚拟机的软件指令。处理器被配置成执行软件执行,以:启动虚拟机以执行程序;收集符号信息,以将程序中代码追踪映射到存储对应的本地代码的存储器地址,该本地代码在程序的执行期间动态地从代码追踪被编译;并且使得符号信息在程序执行之后可用,以对在程序的执行期间采样的评测数据进行分析。
本公开的方面还提供了计算机可读介质,该计算机可读介质存储用于使得处理器执行操作的程序指令。操作包括:在程序的执行期间收集收集符号信息,以将程序中代码追踪映射到存储对应的本地代码的存储器地址,该本地代码动态地从代码追踪被编译;并且使得符号信息在程序执行之后可用,以对在程序的执行期间采样的评测数据进行分析。
附图说明
将参考以下示图对被提出为示例的本公开的各种实施例进行详细描述,其中相同的数字参考针对相同元素,并且其中:
图1示出了根据本公开的实施例的代码性能分析模型100;
图2示出了根据本公开的实施例的被配置成使用代码性能分析模型100的系统200的框图;
图3示出了概括根据本公开的实施例的过程示例300的流程图;以及
图4示出了根据本公开的实施例的文件头的示例。
具体实施方式
图1示出了根据本公开的实施例的性能分析模型100。性能分析模型100包括目标系统101和主机系统151。主机系统151在操作期间引起对目标系统101的统计评测,并且基于统计评测来进行性能分析。
目标系统101可以是任何合适的系统,其包括执行软件指令的处理器。在一个实施例中,目标系统10是电子设备,诸如移动电话、平板电脑、多媒体播放器、袖珍计算器、个人数字助理(PDA)等等。目标系统101中的处理器可以具有任何合适的架构,诸如精简指令集计算机(RISC)体系架构、复杂指令集计算机(CISC)体系架构等等。在一个示例中,目标系统101是具有高级RISC机器(ARM)型处理器的移动电话。
主机系统151可以是任何合适的系统,该系统控制对目标系统101的统计评测,并且基于统计评测来进行性能分析。在一个示例中,主机系统151是个人计算机,诸如具有x86型处理器的个人计算机。主机系统151提供用户接口,以接收来自用户的控制指令。响应于控制指令,主机系统151控制对目标系统101的统计评测,并且基于统计评测来进行性能分析。
根据本公开的一个方面,目标系统101针对某种软件语言使用虚拟机技术。在图1的示例中,目标系统100被配置成使用Java虚拟机(JVM)110(例如,针对安卓操作系统的Dalvik),以提供Java字节码可以在其中被执行的运行环境。附加地,Java虚拟机110被配置成使能代码高速缓存性能分析。代码高速缓存新能分析可被用于分析并提高虚拟机性能和系统性能。
在一个示例中,源程序通过源软件语言(诸如,通过C语言、Java语言等等)生成。源程序被编译,以生成对应于源程序的Java字节码。为了执行Java字节码,目标系统101启动Java虚拟机110,以提供用于Java字节码的运行环境。在对Java字节码执行之后,Java虚拟机110终止。
根据本公开的一个方面,Java虚拟机110使用解译和即时编译,以用于Java字节码执行。在一个示例中,Java虚拟机110频繁地检测Java字节码中执行的追踪,诸如路径、循环等等,并且以与较不频繁地执行的追踪不同的方式来执行频繁地执行的追踪。例如,Java虚拟机110跟踪若干针对追踪的执行。当针对追踪的执行次数小于阈值(例如,2)时,Java虚拟机110就通过解译来执行追踪;并且当针对追踪的执行次数等于或大于阈值时,Java虚拟机110使用JIT编译将字节码的追踪编译成本地代码追踪,并且将本地代码追踪高速缓存进存储器。然后,为了对追踪的进一步的执行,Java虚拟机110可以执行被高速缓存的本地代码。
通常,处理器或虚拟机可以通过执行本地代码达到较高性能。因此,对频繁执行的追踪的JIT编译提高了虚拟机和系统的性能。
在图1的示例中,Java虚拟机110包括JIT代码缓存器130,以存储被频繁执行的本地代码。根据本公开的一个方面,在Java虚拟机110被初始化执行程序的Java字节码时,存储空间被分配用于JIT代码高速缓存130。在Java字节码的执行期间,Java字节码中的热追踪(频繁执行的追踪)被检测并被编译成本地代码。对应于热追踪的本地代码被顺序地存储进例如JIT代码高速缓存130。在一个实施例中,当Java虚拟机110在执行的末尾终止时,JIT代码高速缓存130被去分配,并且用于JIT代码高速缓存130的存储空间被释放。
在一个实施例中,操作期间在JIT代码高速缓存130中发生的情况影响并指示Java虚拟机110和目标系统101的性能。因此,对JIT代码高速缓存130的评测协助针对Java虚拟机110和目标系统101的性能分析。然而,在一个实施例中,JIT代码高速缓存130利用Java虚拟机110被动态地创建并终止,在每次执行中,JIT代码高速缓存130的参数可被动态地改变。例如,用于JIT代码高速缓存130的存储空间可以在每次程序执行时被不同地分配。在另一示例中,被高速缓存在JIT代码高速缓存130中的热追踪序列可以在每次程序执行时不同。
根据本公开的一个方面,Java虚拟机110被配置成收集特性化每次程序执行中被动态改变的信息,并且使得收集的信息在Java虚拟机110之外可用,以协助可以在Java虚拟机110终止之后进行的性能分析。在图1的示例中,Java虚拟机110包括追踪符号收集器140,以收集针对JIT代码高速缓存130的符号信息,该符号信息在每次程序执行中可以动态地改变。符号信息表示热追踪到存储用于操作期间的热追踪的本地代码的JIT代码高速缓存130中的存储地址的映射。在一个示例中,如图1中通过追踪1所示出的,当检测到Java字节码的第一热追踪时,追踪被编译成本地代码的追踪,并且本地代码追踪被存储进JIT代码高速缓存130。然后,在一个示例中,追踪符号收集器140和收集针对第一热追踪的符号。例如,符号包括名称“S-1”,以及指向存储追踪-1的JIT代码缓存130中的存储空间的程序计数器(PC)范围(例如,PC范围_1)。
相似地,当检测到更多的热追踪时,热追踪被编译成本地代码,并且本地代码被存储进JIT代码高速缓存130。追踪符号收集器140收集针对热追踪符号。符号提供热追踪到IT代码高速缓存130中的存储地址的映射,该IT代码高速缓存130存储用于操作期间的热追踪的本地代码。
根据本公开的一个方面,Java虚拟机110使得符号信息在Java虚拟机110终止之后可用,以协助可在Java虚拟机110终止之后进行的性能分析。在一个实施例中,Java虚拟机110生成文件,以在终止之前包括符号信息,并且继而文件被提供给评测工具,以协助性能分析。
在图1的示例中,评测工具包括在主机系统151中运行的主机评测器160和在目标系统101中运行的目标评测器120。进一步,主机系统151和目标系统101包括合适的接口,以使能两个系统间的通信,诸如基于TCP/IP的通信。因此,主机评测器160可以控制目标评测器120来启动评测和停止评测。目标评测器120收集操作期间的Java虚拟机110的评测数据,并且向主机评测器160提供评测数据。Java虚拟机110在终止之前输出符号信息。符号信息从目标系统101被发送至主机系统151。主机评测器160接收评测数据并且基于符号信息来分析评测数据。
在一个实施例中,主机评测器160针对目标系统101和Java虚拟机110来进行代码高速缓存分析。在一个示例中,主机系统151提供用户接口,以用于用户控制评测。
操作期间,在一个示例中,当用户命令主机系统151启动评测时,主机评测器160发送启动控制信号至目标系统101中的目标评测器120,以启动评测。例如,响应于启动控制信号,目标系统101启动Java虚拟机来运行程序的Java字节码。Java虚拟机110在操作期间被中断。中断可以通过事件触发,诸如高速缓存访问(读取和/或写入)事件等等,或者可以基于系统定时器周期性地触发。在中断例程期间,目标评测器120对代码高速缓存评测所需要的数据(诸如,Java虚拟机110中的热追踪信息、高速缓存信息、程序计数器(PC)信息等等)进行采样。采样的评测数据被提供给主机系统151。
此外,追踪符号收集器140收集操作期间的追踪符号信息。在一个示例中,当热追踪被编译并且存储进JIT代码高速缓存130时,追踪符号收集器140收集表示热到JIT代码高速缓存130中的存储地址的映射,该JIT代码高速缓存130存储用于热追踪的本地代码。
在Java虚拟机110终止之前,可以使得追踪符号信息在Java虚拟机110之外可用。在一个示例中,当用户命令主机系统151停止评测时,主机评测器160发送停止控制信号至目标系统101中的目标评测器120,以停止评测。进一步,Java虚拟机110生成文件,以在其终止之前包括追踪符号信息。在一个示例中,文件还包括JIT代码高速缓存130中的JIT代码信息。文件可以被发送至主机系统151。
进一步,主机评测器160基于追踪符号信息对评测数据进行代码高速缓存性能分析。在一个示例中,评测数据包括周期性采样的程序计数器值。基于追踪符号信息,主机评测器160可以标识对应于程序计数器值的JIT代码高速缓存130中的热追踪,并且可以确定针对热追踪的统计评测,诸如针对热追踪的执行时间的百分比。
根据本公开的一个方面,现存的用于评测静态编译的评测工具,诸如Oprofile、Pixiu等等,可以用于评测即时(JIT)编译。在一个示例中,现存的评测工具接收包含采样的评测数据的第一文件(例如,具有pxd文件扩展名),以及具有可执行的和可链接的格式的第二文件(例如,ELF文件),并且基于第二文件对第一文件中的采样的评测数据进行性能分析。在一个示例中,ELF文件由一个ELF头组成,之后是文件数据。在一个示例中,针对静态编译,ELF文件静态地存在并且存储在主机系统中。主机系统接收采样的评测数据并且现存的测评工具基于ELF文件进行对采样的评测数据的性能分析。
根据本公开的实施例,ELF文件可以基于Java虚拟机110在其终止之前输出的追踪符号信息和JIT代码信息生成。然后,现存的评测器被用于基于新生成的ELF文件来进行对采样的评测数据的性能分析。
根据本公开的实施例,现存的虚拟机可能不具有追踪符号收集器140的功能和使得符号信息在虚拟机之外可用的功能。可以通过软件补丁来修复现存的虚拟机。针对现存的虚拟机的软件补丁可以增加追踪符号收集器140的功能和使得符号信息在虚拟机之外可用的功能。
图2示出了根据本公开的实施例的被配置成使用代码性能分析模型100的系统200的框图。系统200包括耦合在一起的目标系统201和主机系统251。
目标系统201包括如图2所示的耦合在一起的处理器203、各种存储器205和207、接口209。在一个示例中,目标系统201实现在印刷电路板上,该印刷电路板具有安装在印刷电路板上的离散组件和各种集成电路(IC)芯片(诸如,处理器芯片、存储器芯片、系统级芯片(SOC)等等)。
处理器203可以是任何合适的处理器。在一个示例中,处理器203是ARM处理器。根据本公开的实施例,存储器207是非易失性存储器,诸如只读存储器、闪存、硬盘等等。存储器207存储各种软件代码,诸如Java虚拟机代码210、目标评测代码220等等。Java虚拟机代码215包括各种组分,诸如JIT编译器代码215、追踪收集器代码240等等。在一个实施例中,图1中的Java虚拟机110实现为执行Java虚拟机代码210的处理器203,并且目标评测器120实现为执行目标评测代码220的处理器203。
在一个实施例中,存储器205是易失性存储器,诸如静态随机访问存储器(SRAM)、动态随机访问存储器(DRAM)等等。当处理器203执行Java虚拟机代码210以启动Java虚拟机时,存储器205中的存储空间230可以被分配用于JIT代码高速缓存,以存储经编译的热追踪的本地代码,并且存储器205中的存储空间可以被分配以存储收集的追踪符号信息。
为了执行程序的Java字节码,处理器203执行Java虚拟机代码210,以启动Java虚拟机执行程序。在程序的执行期间,检测热追踪,并且热追踪的Java字节码被编译成本地代码。本地代码被存储在存储空间230中。进一步,针对热追踪的追踪符号被收集并且存储在存储空间240中。在Java虚拟机终止之前,可以使得存储空间240中的追踪符号信息在Java虚拟机之外可用。在一个示例中,Java虚拟机生成文件,以包括追踪符号信息。此外,文件可以包括存储空间230中的代码信息。然后,使得文件在Java虚拟机终止之后可用。在一个示例中,文件可以被提供给主机系统251。
根据本公开的一个方面,处理器203被周期性地中断,以对评测数据进行采样。在中断例程期间,处理器203执行目标评测代码220,以收集评测数据,诸如程序计数器值等等。评测数据可以被提供给主机系统251。
主机系统251包括处理器253、各种存储器255和257、以及接口259。在一个示例中,主机系统251是个人计算机。处理器253可以是任何合适的处理器。在示例中,处理器253是基于x86的处理器。根据本公开的实施例,存储器257是非易失性的存储器。存储器257存储主机评测器代码260。图1中的主机评测器160可被实现为执行主机评测器代码260的处理器253。
主机系统251中的接口259可以经由任何有线连接或者无线连接适当地与目标系统201中的接口209耦合。因此,主机系统251和目标系统201可经由接口259和209进行通信。例如,主机系统251可以发送控制信号至目标系统201,并且目标系统201可发送评测数据以及包括追踪符号信息和JIT代码信息的文件至主机系统251。然后,处理器253可以执行主机评测器代码260,以基于追踪符号信息和/或JIT代码信息进行对评测数据的性能分析。
图3示出了概括根据本公开的实施例的过程示例300的流程图。在一个示例中,过程300被在性能分析模型100中执行。过程在S301处开始并且进行至S310。
在S310,主机系统151发送评测启动控制信号至目标系统101,以启动代码高速缓存评测,以用于Java虚拟机执行程序,诸如用于评测的基准程序。目标系统101启动Java虚拟机110来执行程序的Java字节码。
在S320,在操作期间,Java虚拟机110检测Java字节码中的热追踪。Java虚拟机110包括将热追踪编译成本地代码的追踪的JIT编译器。本地代码的追踪存储在JIT代码高速缓存130中。进一步,热追踪的符号被收集并存储在追踪符号收集器140中。附加地,Java虚拟机110的操作被周期性地中断。在终端例程期间,目标系统101被采样,以收集评测数据,诸如JIT代码高速缓存信息、程序计数器值等等。评测数据可以被发送至主机系统151。
在S330,主机系统151发送评测停止控制信号至目标系统101,以停止针对Java虚拟机的代码高速缓冲评测。
在S340,Java虚拟机110生成文件,以在其终止之前包括JIT代码信息和追踪符号信息。文件可以被发送至主机系统151。然后目标系统101终止Java虚拟机110。
在S350,主机系统151基于JIT代码信息和追踪符号信息来进行对评测数据的性能分析。然后,过程进行至S399并且终止。
图4示出了根据本公开的实施例的文件头的示例。文件头定义可被用于将追踪映射到存储器地址的“SymbolInfo”类型。文件头可被用于由Java虚拟机110生成的文件中,以包括踪迹符号信息。
尽管已经结合其特定的被提出为示例的实施例描述了本公开的方面,但是可以对示例进行替代选择、修改和变更。因此,此处给出的实施例旨在说明性的而并非限制性的。可以进行改变而不脱离以下给出的权利要求的范围。
Claims (20)
1.一种方法,包括:
在对所述程序的所述执行期间收集符号信息,以将程序中的代码追踪映射到存储对应的本地代码的存储器地址,所述本地代码动态地从所述代码追踪被编译;以及
使得所述符号信息在对所述程序的执行之后可用,以对所述程序的所述执行期间采样的评测数据进行分析。
2.根据权利要求1所述的方法,其中在对所述程序的所述执行期间收集所述符号信息以将所述程序中的所述代码追踪映射到存储所述对应的本地代码的所述存储器地址,所述本地代码动态地从所述代码追踪被编译还包括:
在虚拟机对所述程序的所述执行期间收集所述符号信息,以将所述程序中的所述代码追踪映射到存储所述对应的本地代码的所述存储器地址,所述本地代码动态地从所述代码追踪被编译。
3.根据权利要求1所述的方法,其中收集所述符号信息以将所述程序中的所述代码追踪映射到存储所述对应的本地代码的所述存储器地址,所述本地代码在对所述程序的所述执行期间动态地从所述代码追踪被编译还包括:
检测针对所述程序中的所述代码追踪的执行次数大于阈值;
将所述代码追踪编译成本地代码;
将所述本地代码存储在高速缓存中的地址处;以及
生成符号,以将所述追踪映射到所述地址。
4.根据权利要求3所述的方法,还包括:
当所述执行次数大于所述阈值时,执行所述高速缓存中的所述本地代码;以及
当针对所述追踪的所述执行次数等于或小于所述阈值时,通过解译来执行代码的所述追踪。
5.根据权利要求1所述的方法,其中使得所述符号信息在所述动态编译之后可用,以对在对所述程序的所述执行期间采样的所述评测数据进行分析包括:
在对所述程序的所述执行终止之前生成文件,以包括所述符号信息。
6.根据权利要求5所述的方法,还包括:
将所述文件提供给评测器,所述评测器对在所述程序的所述执行期间采样的所述评测数据进行分析。
7.根据权利要求1所述的方法,还包括:
在对所述程序的所述执行的周期性中断期间收集所述评测数据。
8.一种装置,包括:
存储器,被配置成存储用于虚拟机的软件指令;以及
处理器,被配置成执行所述软件指令,以:
启动虚拟机来执行程序;
在对所述程序的所述执行期间收集符号信息,以将所述程序中的代码追踪映射到存储对应的本地代码的存储器地址,所述本地代码动态地从所述代码追踪被编译;以及
使得所述符号信息在对所述程序的所述执行之后可用,以对所述程序的所述执行期间采样的评测数据进行分析。
9.根据权利要求8所述的装置,其中所述处理器被配置成执行所述软件指令,以:
检测针对所述程序中的代码追踪的执行次数大于阈值;
将所述代码追踪编译成本地代码;
将所述本地带代码存储在高速缓存中的地址处;以及
生成符号,以将所述追踪映射到所述地址。
10.根据权利要求9所述的装置,其中所述处理器被配置成:
当所述执行次数大于所述阈值时,执行所述高速缓存中的所述本地代码。
11.根据权利要求10所述的装置,其中所述追踪是第一追踪,并且所述处理器被配置成当针对所述第二追踪的执行次数等于或小于所述阈值时,通过解译来执行代码的第二追踪。
12.根据权利要求8所述的装置,其中所述处理器被配置成执行所述软件指令,以在对所述程序的所述执行终止之前生成文件,使得所述文件包括所述符号信息。
13.根据权利要求12所述的装置,其中所述文件被提供给评测器,所述评测器对所述程序的所述执行期间采样的所述评测数据进桁分析。
14.根据权利要求8所述的装置,其中:
所述存储器被配置成存储用于评测器的软件指令;并且
所述处理器被配置成执行用于所述评测器的所述软件指令,以在对所述程序的所述执行的周期性中断期间收集所述评测数据。
15.一种计算机可读介质,所述计算机可读介质存储用于使得处理器执行操作的程序指令,所述操作包括:
在对所述程序的所述执行期间收集符号信息,以将程序中的代码追踪映射到存储对应的本地代码的存储器地址,所述本地代码动态地从所述代码追踪被编译;以及
使得所述符号信息在对所述程序的所述执行之后可用,以对在所述程序的所述执行期间采样的评测数据进行分析。
16.根据权利要求15所述的计算机可读介质,其中所述操作还包括:
在虚拟机对所述程序的所述执行期间收集所述符号信息,以将所述程序中的所述代码追踪映射到存储所述对应的本地代码的所述存储器地址,所述本地代码通过虚拟机动态地从代码的所述追踪被编译。
17.根据权利要求15所述的计算机可读介质,其中所述操作还包括:
检测针对所述程序中的代码追踪的执行次数大于阈值;
将所述代码追踪编译成本地代码;
将所述本地代码存储在高速缓存中的地址处;以及
生成符号,以将所述追踪映射到所述地址。
18.根据权利要求17所述的计算机可读介质,其中所述操作还包括:
当所述执行次数大于所述阈值时,执行所述高速缓存中的所述本地代码;以及
当针对所述追踪的执行的所述次数等于或小于所述阈值时,通过解译来执行代码的所述追踪。
19.根据权利要求15所述的计算机可读介质,其中所述操作还包括:
在对所述程序的所述执行终止之前生成文件,以包括所述符号信息。
20.根据权利要求19所述的计算机可读介质,其中所述操作还包括:
将所述文件提供给评测器,所述评测器对在所述程序的所述执行期间采样的所述评测数据进行分析。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261664427P | 2012-06-26 | 2012-06-26 | |
US61/664,427 | 2012-06-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103605554A true CN103605554A (zh) | 2014-02-26 |
CN103605554B CN103605554B (zh) | 2018-04-13 |
Family
ID=49775558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310269717.1A Expired - Fee Related CN103605554B (zh) | 2012-06-26 | 2013-06-26 | 用于代码性能分析的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9098308B2 (zh) |
CN (1) | CN103605554B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183592A (zh) * | 2014-03-21 | 2015-12-23 | 马维尔国际贸易有限公司 | 用于支持性能分析的方法和装置 |
WO2016070694A1 (zh) * | 2014-11-03 | 2016-05-12 | 广州市动景计算机科技有限公司 | 基于GCC和Chromium的代码跟踪方法及系统 |
CN107193626A (zh) * | 2016-03-15 | 2017-09-22 | 联发科技股份有限公司 | 选择性运行应用内的计算方法的本地机器代码的方法及相关设备 |
CN110249315A (zh) * | 2017-02-02 | 2019-09-17 | 微软技术许可有限责任公司 | 在跟踪重放期间存储器值的有效检索 |
CN110770698A (zh) * | 2017-06-23 | 2020-02-07 | 微软技术许可有限责任公司 | 用于动态代码优化的差异静态分析 |
CN111624933A (zh) * | 2019-02-28 | 2020-09-04 | 发那科株式会社 | 用于顺控程序的追踪的顺控程序处理装置 |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9830193B1 (en) | 2014-09-30 | 2017-11-28 | Amazon Technologies, Inc. | Automatic management of low latency computational capacity |
US9146764B1 (en) | 2014-09-30 | 2015-09-29 | Amazon Technologies, Inc. | Processing event messages for user requests to execute program code |
US9600312B2 (en) | 2014-09-30 | 2017-03-21 | Amazon Technologies, Inc. | Threading as a service |
US9678773B1 (en) | 2014-09-30 | 2017-06-13 | Amazon Technologies, Inc. | Low latency computational capacity provisioning |
US9413626B2 (en) | 2014-12-05 | 2016-08-09 | Amazon Technologies, Inc. | Automatic management of resource sizing |
US9733967B2 (en) | 2015-02-04 | 2017-08-15 | Amazon Technologies, Inc. | Security protocols for low latency execution of program code |
US9588790B1 (en) | 2015-02-04 | 2017-03-07 | Amazon Technologies, Inc. | Stateful virtual compute system |
US9910713B2 (en) | 2015-12-21 | 2018-03-06 | Amazon Technologies, Inc. | Code execution request routing |
US11132213B1 (en) | 2016-03-30 | 2021-09-28 | Amazon Technologies, Inc. | Dependency-based process of pre-existing data sets at an on demand code execution environment |
US10102040B2 (en) | 2016-06-29 | 2018-10-16 | Amazon Technologies, Inc | Adjusting variable limit on concurrent code executions |
US10853115B2 (en) | 2018-06-25 | 2020-12-01 | Amazon Technologies, Inc. | Execution of auxiliary functions in an on-demand network code execution system |
US10649749B1 (en) * | 2018-06-26 | 2020-05-12 | Amazon Technologies, Inc. | Cross-environment application of tracing information for improved code execution |
US11146569B1 (en) | 2018-06-28 | 2021-10-12 | Amazon Technologies, Inc. | Escalation-resistant secure network services using request-scoped authentication information |
US10949237B2 (en) | 2018-06-29 | 2021-03-16 | Amazon Technologies, Inc. | Operating system customization in an on-demand network code execution system |
US11099870B1 (en) | 2018-07-25 | 2021-08-24 | Amazon Technologies, Inc. | Reducing execution times in an on-demand network code execution system using saved machine states |
US11099917B2 (en) | 2018-09-27 | 2021-08-24 | Amazon Technologies, Inc. | Efficient state maintenance for execution environments in an on-demand code execution system |
US11243953B2 (en) | 2018-09-27 | 2022-02-08 | Amazon Technologies, Inc. | Mapreduce implementation in an on-demand network code execution system and stream data processing system |
US11943093B1 (en) | 2018-11-20 | 2024-03-26 | Amazon Technologies, Inc. | Network connection recovery after virtual machine transition in an on-demand network code execution system |
US10929160B1 (en) * | 2018-12-12 | 2021-02-23 | The Mathworks, Inc. | Composite-trace just-in-time compilation |
US11010188B1 (en) | 2019-02-05 | 2021-05-18 | Amazon Technologies, Inc. | Simulated data object storage using on-demand computation of data objects |
US11861386B1 (en) | 2019-03-22 | 2024-01-02 | Amazon Technologies, Inc. | Application gateways in an on-demand network code execution system |
US11119809B1 (en) | 2019-06-20 | 2021-09-14 | Amazon Technologies, Inc. | Virtualization-based transaction handling in an on-demand network code execution system |
US11115404B2 (en) | 2019-06-28 | 2021-09-07 | Amazon Technologies, Inc. | Facilitating service connections in serverless code executions |
US11159528B2 (en) | 2019-06-28 | 2021-10-26 | Amazon Technologies, Inc. | Authentication to network-services using hosted authentication information |
US11190609B2 (en) | 2019-06-28 | 2021-11-30 | Amazon Technologies, Inc. | Connection pooling for scalable network services |
US11119826B2 (en) | 2019-11-27 | 2021-09-14 | Amazon Technologies, Inc. | Serverless call distribution to implement spillover while avoiding cold starts |
US11714682B1 (en) | 2020-03-03 | 2023-08-01 | Amazon Technologies, Inc. | Reclaiming computing resources in an on-demand code execution system |
US11188391B1 (en) | 2020-03-11 | 2021-11-30 | Amazon Technologies, Inc. | Allocating resources to on-demand code executions under scarcity conditions |
US11550713B1 (en) | 2020-11-25 | 2023-01-10 | Amazon Technologies, Inc. | Garbage collection in distributed systems using life cycled storage roots |
US11593270B1 (en) | 2020-11-25 | 2023-02-28 | Amazon Technologies, Inc. | Fast distributed caching using erasure coded object parts |
US11388210B1 (en) | 2021-06-30 | 2022-07-12 | Amazon Technologies, Inc. | Streaming analytics using a serverless compute system |
US11968280B1 (en) | 2021-11-24 | 2024-04-23 | Amazon Technologies, Inc. | Controlling ingestion of streaming data to serverless function executions |
US12015603B2 (en) | 2021-12-10 | 2024-06-18 | Amazon Technologies, Inc. | Multi-tenant mode for serverless code execution |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1228175A (zh) * | 1996-08-20 | 1999-09-08 | 艾利森电话股份有限公司 | 用于测试计算机系统软件的系统和方法 |
CN1234551A (zh) * | 1997-10-06 | 1999-11-10 | 太阳微系统有限公司 | 动态优化字节编码程序的方法和装置 |
CN1270348A (zh) * | 1998-10-21 | 2000-10-18 | 富士通株式会社 | 用于结构仿真的动态优化目标码翻译器和翻译方法 |
US20070006159A1 (en) * | 2005-02-18 | 2007-01-04 | Green Hills Software, Inc. | Post-compile instrumentation of object code for generating execution trace data |
CN101344855A (zh) * | 2007-07-13 | 2009-01-14 | 上海宇梦通信科技有限公司 | 一种基于编译的跟踪代码中特定对象的控制方法及装置 |
CN101515248A (zh) * | 2008-02-21 | 2009-08-26 | 国际商业机器公司 | 面向对象程序的跟踪方法和系统 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6311325B1 (en) * | 1998-10-22 | 2001-10-30 | International Business Machines Corporation | Method and apparatus for profiling processes in a data processing system background of the invention |
US6230313B1 (en) * | 1998-12-23 | 2001-05-08 | Cray Inc. | Parallelism performance analysis based on execution trace information |
GB2367642B (en) * | 2000-05-27 | 2004-05-05 | Ibm | Performance profiling tool |
JP4957017B2 (ja) * | 2006-03-02 | 2012-06-20 | 富士通セミコンダクター株式会社 | 性能チューニング方法及び装置、プログラム及び記憶媒体 |
US8667471B2 (en) * | 2007-03-30 | 2014-03-04 | Sap Ag | Method and system for customizing profiling sessions |
US8356286B2 (en) * | 2007-03-30 | 2013-01-15 | Sap Ag | Method and system for providing on-demand profiling infrastructure for profiling at virtual machines |
US8490073B2 (en) * | 2007-03-30 | 2013-07-16 | International Business Machines Corporation | Controlling tracing within compiled code |
US8381194B2 (en) * | 2009-08-19 | 2013-02-19 | Apple Inc. | Methods and apparatuses for selective code coverage |
-
2013
- 2013-06-25 US US13/926,525 patent/US9098308B2/en active Active
- 2013-06-26 CN CN201310269717.1A patent/CN103605554B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1228175A (zh) * | 1996-08-20 | 1999-09-08 | 艾利森电话股份有限公司 | 用于测试计算机系统软件的系统和方法 |
CN1234551A (zh) * | 1997-10-06 | 1999-11-10 | 太阳微系统有限公司 | 动态优化字节编码程序的方法和装置 |
CN1270348A (zh) * | 1998-10-21 | 2000-10-18 | 富士通株式会社 | 用于结构仿真的动态优化目标码翻译器和翻译方法 |
US20070006159A1 (en) * | 2005-02-18 | 2007-01-04 | Green Hills Software, Inc. | Post-compile instrumentation of object code for generating execution trace data |
CN101344855A (zh) * | 2007-07-13 | 2009-01-14 | 上海宇梦通信科技有限公司 | 一种基于编译的跟踪代码中特定对象的控制方法及装置 |
CN101515248A (zh) * | 2008-02-21 | 2009-08-26 | 国际商业机器公司 | 面向对象程序的跟踪方法和系统 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183592A (zh) * | 2014-03-21 | 2015-12-23 | 马维尔国际贸易有限公司 | 用于支持性能分析的方法和装置 |
CN105183592B (zh) * | 2014-03-21 | 2019-08-16 | 马维尔国际贸易有限公司 | 用于支持性能分析的方法和装置 |
WO2016070694A1 (zh) * | 2014-11-03 | 2016-05-12 | 广州市动景计算机科技有限公司 | 基于GCC和Chromium的代码跟踪方法及系统 |
CN107193626A (zh) * | 2016-03-15 | 2017-09-22 | 联发科技股份有限公司 | 选择性运行应用内的计算方法的本地机器代码的方法及相关设备 |
CN110249315A (zh) * | 2017-02-02 | 2019-09-17 | 微软技术许可有限责任公司 | 在跟踪重放期间存储器值的有效检索 |
CN110249315B (zh) * | 2017-02-02 | 2023-06-20 | 微软技术许可有限责任公司 | 在跟踪重放期间存储器值的有效检索 |
CN110770698A (zh) * | 2017-06-23 | 2020-02-07 | 微软技术许可有限责任公司 | 用于动态代码优化的差异静态分析 |
CN110770698B (zh) * | 2017-06-23 | 2023-10-17 | 微软技术许可有限责任公司 | 用于动态代码优化的差异静态分析 |
CN111624933A (zh) * | 2019-02-28 | 2020-09-04 | 发那科株式会社 | 用于顺控程序的追踪的顺控程序处理装置 |
CN111624933B (zh) * | 2019-02-28 | 2024-02-20 | 发那科株式会社 | 用于顺控程序的追踪的顺控程序处理装置 |
Also Published As
Publication number | Publication date |
---|---|
US9098308B2 (en) | 2015-08-04 |
US20130346952A1 (en) | 2013-12-26 |
CN103605554B (zh) | 2018-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103605554A (zh) | 用于代码性能分析的方法和装置 | |
US8024719B2 (en) | Bounded hash table sorting in a dynamic program profiling system | |
US8478948B2 (en) | Method and system for efficient tracing and profiling of memory accesses during program execution | |
CN105183592B (zh) | 用于支持性能分析的方法和装置 | |
CN110580226B (zh) | 操作系统级程序的目标码覆盖率测试方法、系统及介质 | |
JP6867066B1 (ja) | 動的ステイン分析に基づくメモリ分析方法及び装置 | |
US20100115494A1 (en) | System for dynamic program profiling | |
CN101964036B (zh) | 漏洞检测方法及装置 | |
CN104834859A (zh) | 一种Android应用中恶意行为的动态检测方法 | |
US8769504B2 (en) | Method and apparatus for dynamically instrumenting a program | |
CN102243609A (zh) | 一种基于嵌入式软件的测试分析方法及系统 | |
CN102222041A (zh) | 一种基于嵌入式软件的测试分析系统及方法 | |
CN101377749B (zh) | 存储器数据校验方法、装置、可编程逻辑器件及系统 | |
CN103136107A (zh) | 一种嵌入式程序动态分配内存的变量调试方法 | |
CN103109276A (zh) | 系统测试方法 | |
CN102722438B (zh) | 一种内核调试的方法和设备 | |
Maioli et al. | Discovering the hidden anomalies of intermittent computing | |
KR102165747B1 (ko) | 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법 | |
CN112965845A (zh) | 延迟分析方法、电子设备及存储介质 | |
CN108027762B (zh) | 生成和处理指示处理电路的指令执行的跟踪流的装置和方法 | |
CN102789417B (zh) | 一种移动智能终端上的定向符号执行程序检测系统及方法 | |
CN110457208B (zh) | 符号执行的引导方法、装置、设备及计算机可读存储介质 | |
WO2008146984A1 (en) | Power measurement system using etm interface and method thereof | |
CN106095631B (zh) | 一种基于有限状态机实现的多周期非流水线cpu动态调试方法 | |
CN107526621B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180413 Termination date: 20180626 |