EP1331565B1 - Etablissement de profil d'exécution d'applications en conjonction avec une machine virtuelle - Google Patents
Etablissement de profil d'exécution d'applications en conjonction avec une machine virtuelle Download PDFInfo
- Publication number
- EP1331565B1 EP1331565B1 EP02290195.3A EP02290195A EP1331565B1 EP 1331565 B1 EP1331565 B1 EP 1331565B1 EP 02290195 A EP02290195 A EP 02290195A EP 1331565 B1 EP1331565 B1 EP 1331565B1
- Authority
- EP
- European Patent Office
- Prior art keywords
- application
- profile
- virtual machine
- circuitry arranged
- acquire
- 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.)
- Expired - Lifetime
Links
Images
Classifications
-
- 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
- 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/88—Monitoring involving counting
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Definitions
- This invention relates in general to processing devices and, more particularly, to profiling application execution on devices using a virtual machine.
- a virtual machine is a layer of software that resides between applications and the physical hardware platform and operating system.
- a virtual machine is instrumental in providing portability of applications.
- the JVM defines a virtual platform for which all JAVA programs may be written.
- the virtual platform is the same regardless of the actual hardware executing the JVM. Accordingly, the programmer can write an application directed to the JVM without knowledge of the underlying hardware.
- JAVA programs are compiled into "byte-codes", which can be thought of as the machine language of the JVM.
- the JVM executes the byte-codes just as a processor executes machine code; however, the byte-codes do not directly control the underlying hardware. Instead, they are interpreted by the JVM, which generates the instructions to the underlying hardware.
- the present invention provides a method of and an apparatus for estimating performance for a specified portion of an application, where the specified portion can include all or part of the application, that executes on a target device via a virtual machine interface as set out in the appended claims.
- the present invention provides significant advantages over the prior art.
- an accurate estimation of a performance criteria such as average time, maximum time, or energy consumption, for the application can be provided.
- the application profile can be generated on an application development platform and used for optimizing an application and can be downloaded to the target device for scheduling and other purposes.
- the application profile can also be generated on the target device itself upon the first execution of the application.
- the virtual machine profile can be generated one time on a target device with a specialized virtual machine and used by software development platforms and operating target devices.
- FIGs 1a through 1c illustrate a generalized description of the invention.
- an application profile 10 is generated from an application 12.
- the application profile 10 is a byte-code based profile which indicates how many times each operation (such as a byte-code or a native method) is used during execution of the application 12, or in specified parts of the application 12.
- the application profile 10 may be generated on a development system by the software developer or it may be generated on the target device upon the first execution of the application.
- a JVM profile 14 is generated for a specific hardware platform 16 using a benchmark program 18.
- the JVM profile 14 provides information indicative of a performance characteristic of the underlying target hardware for each particular operation.
- the performance characteristic may be the time necessary to execute each particular operation and/or the energy expended by the hardware platform 16 in executing each particular operation, but also could involve other performance characteristics such as bandwidth occupation of different memory modules, cache misses occurrences, TLB misses and so on.
- Any performance characteristic that can be measured in relation to an operation can be used if a JVM profile 14; for purposes of illustration, however, implementation of the invention will be discussed herein with regard to operation execution time and energy consumption.
- a JVM profile can be generated by the designer of the JVM for a respective hardware platform and used for multiple software development platforms and operating devices.
- the information in the application profile 10 and the information in the JVM profile 14 are combined to generate a performance estimate 20.
- the estimate 20 may be generated on an application development system, to aid the programmer in optimizing the application for the target device, or on an operating target device, to aid in efficient operation of the device.
- the application profile 10 specifies the number of times each possible operation is executed during execution of the execution of application 12.
- a video codec may have a one application profile for receiving a 24-bit color video file and another application profile for receiving an 8-bit color video file.
- the application profile 14 may be generated by the programmer, or may be generated upon the first execution of the application on the host device. By multiplying the number of times each operation is used in execution of the application (as specified in the application profile 10) by the energy/time consumed by the operation (as specified in the JVM profile 14) and summing the results for all such operations, a very accurate estimation of the time/energy used by the application can be generated.
- the time/energy information can be used for a number of purposes.
- Figure 2 illustrates a general state diagram showing the generation of a application profile 10.
- an on command (described in greater detail below) in the application begins the profiling of the application 12 in state 32.
- the execution of each operation in the application 12 increments a counter associated with the particular operation.
- Each executed operation is counted until an off command (described below) is received.
- a save results command causes the values of the counters to be stored in a file in state 34.
- the local variable zone contains input parameters and private data of the method.
- the stack is used to store the input and output data needed to realize the byte-codes.
- a set of byte-codes permits the exchange of data between the local variable zone and the stack. Data is located to a specific index in the local variable zone. Iload realizes the pop of a byte from the stack to obtain the index.
- the index of local variable index is limited to 255 (byte precision).
- the byte-code wide has been introduced to access an index up to 65535.
- the JVM pops two byte values from the stack to determine the index of the data in the local variable zone. Therefore, a wide iload takes more time than an iload.
- the wide byte-code influences two other byte-codes: ret and iinc.
- a wide iinc sequence increments by one the local variable identified using two bytes, and not only one (as it does without wide).
- the ret byte-code is used to end a subroutine. Its action is simple; it pops one byte value on the stack, calculates the return address and modifies the PC of the JAVA method. In order to support more than 255 offsets (for the return address), wide ret sequence will increase the PC modification using a two-byte value. Accordingly, byte-codes that have a wide variant must be separately monitored for wide and normal behavior.
- Invocation byte-codes realize the execution of another method.
- the called method can be composed of JAVA byte-codes or can be a native method.
- its execution time depends directly on the native implementation because as the invocation is synchronous, the time needed to complete the invocation depends on the native method implementation. Accordingly, it is necessary to distinguish invocation opcodes that invokes native methods from the others.
- the content of the application profiles 10 need to provide: (1) one entry for each java byte-code except for wide, (2) one entry for each wide dependant byte-code ( wide load based, wide store based, wide ret, and wide iinc ), (3) one entry for the native invocation byte-code and (4) one entry for each available native method.
- the application profile 10, JVM profile 14 and the real execution time/energy estimation 20 can be generated through the use of several APIs (application program interface).
- the application profile 10 documents the number of times each standard JAVA byte-code (with and without wide ) is executed and the number of times each native method of the JVM is executed. Collectively, the byte-codes and native methods are referred to herein as the "operations". In other virtual machines, there may be different or additional operations.
- the application 12 is executed with a JVM, which is instrumented to count each operation and calculate the profile.
- the JVM which is used to generate the profile is referred to as the "profiling tool”.
- ProfilerApplication APIs are defined in order to generate the application's profile as shown in Table 1. Using this API, it is possible to document the profiling of several code sequences of an application. For example, if two different loops of an application need profiling, the APIs indicate to the profiler JVM which loop is being executed in order to update its profile.
- Table 1 Application Profiler API Constructor Summary ProfilerApplication(int numSequences ) Creation of ProfilerApplication object.
- This constructor creates the JVM memory space needed to generate numSequences byte-code based profiles.
- Method Summary void on(int idSequence ) After this call, each executed operation is counted in the profile of code sequence idSequence. If the profiling of the code sequence was suspended, it is resumed. void off(int idSequence ) After this call, the profiling of code sequence idSequence is suspended. void end(int idSequence ) This call indicates that the profile of the code sequence idSequence is ended. The JVM increments the number of code sequence profiling that will permit the calculation of the average application profile for this code sequence.
- the on and off methods start and stop the profiling for each loop. After twenty iterations, the profiling is ended and the results saved.
- the generated file is:
- the JVM profile 14 contains an execution time/energy estimate for each operation - for JAVA, byte-codes (with and without wide ) and native methods.
- a general state diagram illustrating the generation of time estimates for each operation is shown in Figure 3a .
- a start time is determined in state 42.
- a stop time is determined in state 44.
- An elapsed time is computed in state 46 and the register associated with the particular operation is incremented by the amount of the elapsed time. In the preferred embodiment, maximum and minimum execution times associated with the operation are maintained as well. This sequence is repeated for each operation execution.
- the average elapsed time for each operation is stored in the JVM profile in state 48. As described below in connection with Figure 4 , the criteria for determining an elapsed time may vary depending upon several factors.
- a set of APIs are used that control internal profiling of byte-codes and native methods.
- a specialized JVM is instrumented to record stopping and starting times; typically, this JVM is different than the one used in determining the application profile 10.
- the APIs are shown in Table 2.
- Table 2 JVM Profiler API Constructor Summary ProfilerJvm( ) Creation of ProfilerJvm object.
- Method Summary void on () Activate or Re-activate the JVM profiling void off() Deactivate the JVM profiling void saveResults() Generates a file "jvmProfile.java" which contains the JVM Profile.
- the on call activates profiling and the off call stops profiling. Several sequences of on and off can be done during the application execution.
- the saveResult call generates a file named jvmProfile.java that contains the JVM profile 14.
- a benchmark uses the APIs and executes all the byte-codes (with and without wide) and all the native methods many times. Experimentation using at least 10000 repetitions have been found to produce accurate results. A sample of the benchmark is shown below:
- the benchmark uses two routines BenchLogic() and BenchIntegers() for profiling; BenchLogic() profiles the program control flow operations and BenchIntegers() profiles the arithmetic operations.
- the design of the benchmark is dependent upon the design of the particular JVM. Because the execution characteristics of a particular operation may depend upon a number of factors, such as cache misses and so on, it is up to the designer of the benchmark to account for different critical situations that may arise.
- the benchmark may be composed of some constant fields that permit configuration of the execution context of the byte-codes.
- information on energy consumption can also be stored in the JVM profile 14.
- an operation start indicator begins a determination of the energy being used by the operation in state 52.
- the energy consumption data could be based on resources used by the operation and the time of execution.
- the register associated with the operation is incremented by the estimation of the energy consumed in state 54. In the preferred embodiment, maximum and minimum execution times associated with the operation are maintained as well.
- the energy consumption calculations are performed for each operation.
- the average energy consumption is calculated for each operation and is stored in the JVM profile (state 56).
- ProfilerExecution APIs are implemented as shown in Table 3. After making a new instance of an execution's profiler object, a call to getEstimation(int idSequence) method returns the execution time in nanoseconds of the code sequence idSequence. This call realizes, for each code sequence, the sum of the multiplication of each entry of the application profile 10 by each entry of the JVM profile 14. These APIs can be implemented in pure Java code. Table 3: Profiler Execution APIs Constructor Summary ProfilerExecution() Creation of object ProfilerExecution. Method Summary int getExecutionTime(int idSequence ) Returns the execution time in nanoseconds of code sequence idSequence.
- APIs can be used on the real target or on the host development desktop.
- An example of use of these APIs is shown on below:
- the application uses the estimations to resume its execution only if the estimated time of the two internal loops is less than 100000 nanoseconds.
- the call new MyAppProfile inside the main of the application guaranty that the application's profile class file is linked within the application class files.
- the method getExecutionTime is offered transparently.
- JVM JVM for calculating estimations on time/energy performance
- JVM profile 10 JVM profile 14
- JVM profile 14 C structures are added to JVM for obtaining profiles:
- the profiler JVM counts the number of times of each operation is executed. Therefore, it is necessary to instrument the main interpreter loop. As shown below, before each byte-code execution, a call to profilerExecOpcode procedure counts the current executed byte-code:
- IdActiveSequence indicates the current codeSequence being profiled.
- onOffBoolean indicates if the profile is active or not.
- NumberSequences stores the number of times the profile has been used for a particular code sequence in order to calculate its average profile. Each time a byte-code or a native method is executed, the corresponding entry in sumProfile is incremented by one.
- sumProfile is composed of 270 entries (200 byte-codes without wide, 12 byte-codes with wide support, 4 entries for each native invocation byte-code and finally one entry for each of the native methods of the JVM; in this case, it is assumed that there are 54 native methods, although a particular implementation may use more or less).
- the first special case is native method invocation.
- the time between ( tOpcodeEnd-tOpcodeBegin ) will include the time of the native method execution. Accordingly, in the case of a native method invocation, as the execution time of the native method is ( tNativeEnd-tNativeBegin ), the execution time of a method native invocation byte-code will be ( tOpcodeEnd-tOpcodeBegin ) - ( tNativeEnd-tNativeBegin ) .
- the second special case involves new byte-code and nested interpreter loops.
- another interpreter loop is executed in order to run the ⁇ clinit> method that initializes the object.
- the time before entering the new interpreter level ( tLevelBegin ) and the time at the return from it ( tLevelEnd ) are measured.
- the execution time taken by the new interpreter loop is then ( tLevelEnd-tLevelBegin ) and the execution time of the new byte-code is ( tOpcodeEnd-tOpcodeBegin) - ( tLevelEnd-tLevelBegin ) .
- a return based byte-code is done to return to the previous interpreter loop.
- the execution of the return byte-code is ( tLevelEnd-tOpcodeBegin), with the tOpcodeBegin of the return byte-code interpreter loop level.
- the third special case involves native method invocation and nested interpreter loops.
- During an execution of a native method it is also possible to execute another interpreter loop using JNI (JAVA Native Interface) interface calls.
- JNI Java Native Interface
- the execution time of the native method is ( tNativeEnd-tNativeBegin)-(tLevelEnd-tLevelBegin ).
- an instrumentation of a JVM can be done such that there is one modification in the main interpreter loop, another in the native invocation call and finally one inside the call that launches a new interpreter loop.
- levels of interpreters it is possible to support several nested interpreters.
- Table 4 summarizes the names of the times taken and Table 5 gives the estimated time for a byte-code and a native method according to these times.
- Table 4 Description of measured times Time Designation tOpcodeBegin level Time taken before the byte-code execution in a specific interpreter loop level tOpcodeEnd level Time taken after the byte-code execution in a specific interpreter loop level tLevelBegin level Time taken before entering a new interpreter loop level tLevelEnd level Time taken after the execution of a higher interpreter loop level tNatifBegin level Time taken before the native call in a specific interpreter loop level tNatifEnd level Time taken after the native call in a specific interpreter loop level Table 5: Byte-code estimation times according to measured times Type Corresponding estimation times Native methods (tNatifEnd level - tNatifBegin level ) - (tLevelEnd level - tLevelBegin level ) Byte-codes Except for Return if nested
- the most important advantage of the profiling is the separation of two isolated and independent parts the profiling of an application, i.e., separate application and virtual machine profiling. This allows, for example, optimization work to be done on the application without an identified target hardware platform. On the other hand, work on the JVM can be done for obtaining a better performance, and a better JVM profile 14.
- the application profile 10 and the JVM profile 14 are class files and can be downloaded through a network. From the target hardware's perspective, estimation can be deduced after the download of an application, either through downloading the application profile 10 or by generating an application profile 10 upon the first execution. Further, the host development station can download desired JVM profiles 14 for different hardware platforms. This way, an application designer can optimize its application for several targets.
- Another perspective of this work is to adapt the JVM profile 14 in order to obtain energy consumption estimations of a JAVA application.
- the estimation of energy consumption could be performed using the same principles as for execution time. This is a real discontinuity in embedded application development cycle where a huge instrumentation and lots of tools are needed to obtain these estimations.
- the energy performance (and execution time performance) could be used by the target device for scheduling applications, as described in connection with EP Serial No. 99402655.7, filed on October 25, 1999 , for "Intelligent Power Management for Distributed Processing Systems” ( U.S. Ser. No. 09/696,052, filed October 25, 2000 , for "Intelligent Power Management for Distributed Processing Systems” to Chauvel et al).
- profiling techniques described herein could be adapted to take into account an interpreter-based execution and a JIT one.
- WCET Worst Case Execution Times
- the profiling tool is a JVM that calculates the application profile 10 by the execution of the application
- the application profile can be generated on the fly after the download of the application. Then, after the first execution, an estimation can be delivered.
- the overhead in terms of performance is not too important and will only concern the first execution. In the specific case of stream based applications, in which there are important time variations due to the kind of data received, a dynamic profiling will permit to adjust dynamically the execution time estimation with a small overhead.
Claims (20)
- Procédé d'estimation des performances pour une partie spécifiée d'une application (12), où ladite partie spécifiée peut comprendre tout ou partie de ladite application (12), qui s'exécute sur un dispositif cible par le biais d'une interface de machine virtuelle, ledit procédé comprenant :l'acquisition d'un profil d'application (10) qui spécifie le nombre de fois que chaque opération différente est exécutée pendant l'exécution de ladite partie spécifiée de ladite application (12) dans lequel ledit profil d'application comprend une entrée de données pour chaque octet de code sauf une donnée large, une entrée pour chaque large code d'octet dépendant, une entrée pour chaque code d'octet d'appel natif et une entrée pour chaque procédé natif de la machine virtuelle et dans lequel le profil d'application (10) est un fichier de classe téléchargeable sur un réseau ;l'acquisition d'un profil de machine virtuelle (14) qui spécifie une information indiquant une caractéristique de performance du matériel de dispositif cible (16) pour chaque opération de ladite application (12) ;dans lequel ledit profil de machine virtuelle (14) est un fichier de classe téléchargeable sur un réseau ; etla multiplication du nombre de fois que chaque opération est exécutée pendant l'exécution de ladite partie spécifiée de ladite application comme spécifié dans ledit profil d'application (10) par ladite caractéristique de performance pour cette opération comme spécifié dans ledit profil de machine virtuelle (14) et l'addition des résultats pour toutes les opérations afin de générer une estimation de performance (20) pour ladite partie spécifiée de ladite application (12).
- Procédé selon la revendication 1, dans lequel l'acquisition dudit profil de machine virtuelle (14) comprend :
l'acquisition d'un profil de machine virtuelle (14) qui relie le temps d'exécution moyen à des opérations individuelles. - Procédé selon la revendication 1, dans lequel l'acquisition dudit profil de machine virtuelle comprend :
l'acquisition d'un profil de machine virtuelle (14) qui relie le temps d'exécution maximal à des opérations individuelles. - Procédé selon la revendication 1, dans lequel l'acquisition dudit profil de machine virtuelle comprend :
l'acquisition d'un profil de machine virtuelle (14) qui relie le temps d'exécution minimal à des opérations individuelles. - Procédé selon la revendication 1, dans lequel l'acquisition dudit profil de machine virtuelle comprend :
l'acquisition d'un profil de machine virtuelle (14) qui relie la consommation d'énergie à des opérations individuelles. - Procédé selon la revendication 1, dans lequel l'acquisition dudit profil de machine virtuelle comprend :
la génération d'un profil de machine virtuelle (14) qui mesure ladite caractéristique de performance pendant l'exécution d'un programme de référence (18) sur ledit dispositif cible (16). - Procédé selon la revendication 1, dans lequel l'acquisition dudit profil de machine virtuelle (14) comprend :
le téléchargement d'un profil de machine virtuelle (14) précédemment généré qui mesure ladite caractéristique de performance pendant l'exécution d'un programme de référence (18) sur ledit dispositif cible (16). - Procédé selon une quelconque des revendications 1 à 7, dans lequel l'acquisition dudit profil d'application (10) comprend :
la génération d'un profil d'application qui spécifie le nombre de fois que chaque opération différente est exécutée pendant l'exécution de la partie spécifiée de l'application (12) sur une plateforme de développement d'application et le téléchargement du profil d'application généré sur le dispositif cible (16). - Procédé selon une quelconque des revendications 1 à 7, dans lequel l'acquisition dudit profil d'application comprend :
la génération d'un profil d'application (10) qui spécifie le nombre de fois que chaque opération différente est exécutée pendant l'exécution de la partie spécifiée de l'application (12) à la première exécution de l'application (12) sur le dispositif cible. - Procédé selon l'une quelconque des revendications 8 ou 9, comprenant en outre :
la génération d'une pluralité de profils d'application (10), dans lequel différentes conditions de fonctionnement sont prises en charge par différents profils d'application (10) . - Appareil pour estimer la performance d'une partie spécifiée d'une application (12), où ladite partie spécifiée peut comprendre tout ou partie de ladite application (12), qui s'exécute sur un dispositif cible (16) par le biais d'une interface de machine virtuelle, dont les circuits comprennent des circuits agencés pour acquérir un profil d'application (10) qui spécifie le nombre de fois que chaque opération différente est exécutée pendant l'exécution de ladite partie spécifiée de ladite application (12) dans lequel ledit profil comprend une entrée de données pour chaque octet de code sauf une donnée large, une entrée pour chaque large code d'octet dépendant, une entrée pour chaque code d'octet d'appel natif et une entrée pour chaque procédé natif de la machine virtuelle et dans lequel ledit profil d'application (10) est un fichier de classe téléchargeable sur un réseau ;
des circuits conçu pour acquérir un profil de machine virtuelle (14) qui spécifie des informations indiquant une caractéristique de performance du matériel de dispositif cible (16) pour chaque opération de ladite application (12) dans lequel ledit profil de machine virtuelle (14) est un fichier de classe téléchargeable sur un réseau ; et
des circuits agencés pour multiplier le nombre de fois que chaque opération est exécutée pendant l'exécution de ladite partie spécifiée de ladite application comme spécifié dans ledit profil d'application (10) par la caractéristique de performance pour cette opération comme spécifié dans ledit profil de machine virtuelle (14) et additionner les résultats pour toutes les opérations afin de générer une estimation de performance (20) pour ladite partie spécifiée de ladite application (12). - Appareil selon la revendication 11, dans lequel lesdits circuits agencés pour acquérir un profil de machine virtuelle (14) comprennent des circuits agencés pour acquérir un profil de machine virtuelle (14) qui relie un temps d'exécution moyen à des opérations individuelles.
- Appareil selon la revendication 11, dans lequel lesdits circuits agencés pour acquérir un profil de machine virtuelle (14) comprennent des circuits agencés pour acquérir un profil de machine virtuelle (14) qui relie un temps d'exécution maximal à des opérations individuelles.
- Appareil selon la revendication 11, dans lequel lesdits circuits agencés pour acquérir un profil de machine virtuelle (14) comprennent des circuits agencés pour acquérir un profil de machine virtuelle (14) qui relie un temps d'exécution minimal à des opérations individuelles.
- Appareil selon la revendication 11, dans lequel lesdits circuits agencés pour acquérir un profil de machine virtuelle (14) comprennent des circuits agencés pour acquérir un profil de machine virtuelle (14) qui relie la consommation d'énergie à des opérations individuelles.
- Appareil selon la revendication 11, dans lequel lesdits circuits agencés pour acquérir un profil de machine virtuelle (14) comprennent des circuits agencés pour générer un profil de machine virtuelle (14) qui mesure ladite caractéristique de performance pendant l'exécution d'un programme de référence (18) sur ledit dispositif cible.
- Appareil selon la revendication 11, dans lequel lesdits circuits agencés pour acquérir un profil de machine virtuelle (14) comprennent des circuits agencés pour télécharger un profil de machine virtuelle (14) précédemment généré qui mesure ladite caractéristique de performance pendant l'exécution d'un programme de référence (18) sur ledit dispositif cible.
- Appareil selon l'une quelconque des revendications 11 à 17, dans lequel lesdits circuits agencés pour acquérir un profil d'application (10) comprennent des circuits agencés pour générer un profil d'application (10) qui spécifie le nombre de fois que chaque opération différente est exécutée pendant l'exécution de la partie spécifiée de l'application (12) sur une plateforme de développement d'application et pour télécharger le profil d'application généré sur le dispositif cible (16).
- Appareil selon l'une quelconque des revendications 11 à 17, dans lequel lesdits circuits agencés pour acquérir un profil d'application (10) comprennent des circuits agencés pour générer un profil d'application (10) qui spécifie le nombre de fois que chaque opération différente est exécutée pendant l'exécution de la partie spécifiée de l'application (12) lors de première exécution de l'application (12) sur le dispositif cible.
- Appareil selon l'une quelconque des revendications 18 ou 19, comprenant des circuits agencés pour générer une pluralité de profils d'application (10), dans lequel différentes conditions de fonctionnement sont prises en charge par différents profils d'application (10).
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP02290195.3A EP1331565B1 (fr) | 2002-01-29 | 2002-01-29 | Etablissement de profil d'exécution d'applications en conjonction avec une machine virtuelle |
US10/195,268 US20040010785A1 (en) | 2002-01-29 | 2002-07-15 | Application execution profiling in conjunction with a virtual machine |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP02290195.3A EP1331565B1 (fr) | 2002-01-29 | 2002-01-29 | Etablissement de profil d'exécution d'applications en conjonction avec une machine virtuelle |
US10/195,268 US20040010785A1 (en) | 2002-01-29 | 2002-07-15 | Application execution profiling in conjunction with a virtual machine |
Publications (2)
Publication Number | Publication Date |
---|---|
EP1331565A1 EP1331565A1 (fr) | 2003-07-30 |
EP1331565B1 true EP1331565B1 (fr) | 2018-09-12 |
Family
ID=32313851
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP02290195.3A Expired - Lifetime EP1331565B1 (fr) | 2002-01-29 | 2002-01-29 | Etablissement de profil d'exécution d'applications en conjonction avec une machine virtuelle |
Country Status (2)
Country | Link |
---|---|
US (1) | US20040010785A1 (fr) |
EP (1) | EP1331565B1 (fr) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20240036845A1 (en) * | 2022-07-26 | 2024-02-01 | Red Hat, Inc. | Runtime environment optimizer for jvm-style languages |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6824064B2 (en) | 2000-12-06 | 2004-11-30 | Mobile-Mind, Inc. | Concurrent communication with multiple applications on a smart card |
US7546598B2 (en) * | 2003-09-03 | 2009-06-09 | Sap Aktiengesellschaft | Measuring software system performance using benchmarks |
US7770034B2 (en) * | 2003-12-16 | 2010-08-03 | Intel Corporation | Performance monitoring based dynamic voltage and frequency scaling |
US7904893B2 (en) * | 2004-03-17 | 2011-03-08 | Marvell International Ltd. | Power and/or energy optimized compile/execution |
US7493596B2 (en) * | 2004-06-30 | 2009-02-17 | International Business Machines Corporation | Method, system and program product for determining java software code plagiarism and infringement |
US7647581B2 (en) * | 2004-06-30 | 2010-01-12 | International Business Machines Corporation | Evaluating java objects across different virtual machine vendors |
US20060136877A1 (en) * | 2004-12-22 | 2006-06-22 | International Business Machines Corporation | Method, system and program product for capturing a semantic level state of a program |
WO2006092079A1 (fr) * | 2005-03-03 | 2006-09-08 | Intel Corporation | Recherche de donnees de performance pour des systemes avec compilateurs dynamiques |
US20070079294A1 (en) * | 2005-09-30 | 2007-04-05 | Robert Knight | Profiling using a user-level control mechanism |
US8209681B1 (en) * | 2005-11-08 | 2012-06-26 | Hewlett-Packard Development Company, L.P. | Method of sampling hardware events in computer system |
US7788664B1 (en) * | 2005-11-08 | 2010-08-31 | Hewlett-Packard Development Company, L.P. | Method of virtualizing counter in computer system |
US7975263B2 (en) * | 2006-01-10 | 2011-07-05 | Intel Corporation | Method and apparatus for generating run time profiles for program compilation |
US8959515B2 (en) * | 2006-01-18 | 2015-02-17 | International Business Machines Corporation | Task scheduling policy for limited memory systems |
EP1845444B1 (fr) * | 2006-04-13 | 2010-05-19 | Microsoft Corporation | Système d'exécution virtuel pour dispositifs à ressources limitées |
US7804435B2 (en) * | 2006-08-31 | 2010-09-28 | Ati Technologies Ulc | Video decoder with reduced power consumption and method thereof |
US9582060B2 (en) * | 2006-08-31 | 2017-02-28 | Advanced Silicon Technologies Llc | Battery-powered device with reduced power consumption based on an application profile data |
US7992136B2 (en) * | 2006-10-18 | 2011-08-02 | International Business Machines Corporation | Method and apparatus for automatic application profiling |
WO2009022302A1 (fr) * | 2007-08-15 | 2009-02-19 | Nxp B.V. | Optimisation de points de fonctionnement de processeur basée sur un profil |
US20090113403A1 (en) * | 2007-09-27 | 2009-04-30 | Microsoft Corporation | Replacing no operations with auxiliary code |
US9594578B2 (en) * | 2012-02-28 | 2017-03-14 | Red Hat, Inc. | Hardware implementation of a virtual machine interpreter |
CN104937550B (zh) * | 2013-01-15 | 2019-03-26 | 英派尔科技开发有限公司 | 以函数为目标的虚拟机切换 |
US9471347B2 (en) | 2013-01-31 | 2016-10-18 | International Business Machines Corporation | Optimization of virtual machine sizing and consolidation |
US9542179B2 (en) * | 2013-09-06 | 2017-01-10 | Texas Instruments Incorporated | System and method for energy aware program development |
EP2927763B1 (fr) * | 2014-04-04 | 2019-06-19 | Abb Ag | Système et procédé pour une opération optimisée de solutions en temps réel intégrées en automatisation industrielle |
US20170185292A1 (en) * | 2015-12-23 | 2017-06-29 | Intel Corporation | Memory Management of High-Performance Memory |
FR3067482A1 (fr) * | 2017-06-12 | 2018-12-14 | Inria Institut National De Recherche En Informatique Et En Automatique | Dispositif de caracterisation et/ou de modelisation de temps d'execution pire-cas |
US10509721B2 (en) | 2017-11-09 | 2019-12-17 | Microsoft Technology Licensing, Llc | Performance counters for computer memory |
US20200394329A1 (en) * | 2019-06-15 | 2020-12-17 | Cisco Technology, Inc. | Automatic application data collection for potentially insightful business values |
US11429507B2 (en) * | 2020-06-10 | 2022-08-30 | General Electric Company | Performance benchmarking for real-time software and hardware |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6126329A (en) * | 1993-06-08 | 2000-10-03 | Rational Software Coporation | Method and apparatus for accurate profiling of computer programs |
US5903758A (en) * | 1997-02-24 | 1999-05-11 | Sun Microsystems, Inc. | Method and apparatus for auditing dynamically linked procedure calls |
US6053492A (en) * | 1997-03-03 | 2000-04-25 | Newsome; John R. | Apparatus for sequentially feeding cards to inserter in a magazine binding line |
US20020059562A1 (en) * | 2000-09-26 | 2002-05-16 | Yutaka Haga | Apparatus for collecting profiles of programs |
US20020069263A1 (en) * | 2000-10-13 | 2002-06-06 | Mark Sears | Wireless java technology |
US7007270B2 (en) * | 2001-03-05 | 2006-02-28 | Cadence Design Systems, Inc. | Statistically based estimate of embedded software execution time |
US6857119B1 (en) * | 2001-09-25 | 2005-02-15 | Oracle International Corporation | Techniques for modifying a compiled application |
US6983455B2 (en) * | 2002-04-10 | 2006-01-03 | Sun Microsystems, Inc. | Mechanism for profiling computer code |
-
2002
- 2002-01-29 EP EP02290195.3A patent/EP1331565B1/fr not_active Expired - Lifetime
- 2002-07-15 US US10/195,268 patent/US20040010785A1/en not_active Abandoned
Non-Patent Citations (1)
Title |
---|
ZHANG XIAOLAN ET AL: "HBench:Java: An Application-Specific Benchmarking Framework for Java Virtual Machines", PROCEEDINGS OF THE ACM 2000 CONFERENCE ON JAVA GRANDE (JAVA 2000). SAN FRANCISCO, CALIFORNIA, USA, JUNE 03-04, 2000,, no. 62-70, 3 June 2000 (2000-06-03), XP007902228, ISBN: 978-1-58113-288-5 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20240036845A1 (en) * | 2022-07-26 | 2024-02-01 | Red Hat, Inc. | Runtime environment optimizer for jvm-style languages |
Also Published As
Publication number | Publication date |
---|---|
US20040010785A1 (en) | 2004-01-15 |
EP1331565A1 (fr) | 2003-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1331565B1 (fr) | Etablissement de profil d'exécution d'applications en conjonction avec une machine virtuelle | |
US9858183B2 (en) | Determining a benefit of reducing memory footprint of a Java application | |
US6374369B1 (en) | Stochastic performance analysis method and apparatus therefor | |
Shirazi | Java performance tuning | |
US7194732B2 (en) | System and method for facilitating profiling an application | |
US7401324B1 (en) | Method and apparatus for performing time measurements during instrumentation-based profiling | |
Kim et al. | Physical experimentation with prefetching helper threads on Intel's hyper-threaded processors | |
US7293260B1 (en) | Configuring methods that are likely to be executed for instrument-based profiling at application run-time | |
Froyd et al. | Low-overhead call path profiling of unmodified, optimized code | |
US8307375B2 (en) | Compensating for instrumentation overhead using sequences of events | |
Kulkarni | JIT compilation policy for modern machines | |
US8271999B2 (en) | Compensating for instrumentation overhead using execution environment overhead | |
Chung et al. | Aneprof: Energy profiling for android java virtual machine and applications | |
Binder et al. | Platform‐independent profiling in a virtual execution environment | |
Binder | Portable and accurate sampling profiling for Java | |
US7684971B1 (en) | Method and system for improving simulation performance | |
Whaley et al. | Achieving accurate and context‐sensitive timing for code optimization | |
Agesen et al. | Mixed-mode bytecode execution | |
Krintz et al. | Overlapping execution with transfer using non-strict execution for mobile programs | |
Binder | A portable and customizable profiling framework for Java based on bytecode instruction counting | |
Sarimbekov et al. | Complete and platform-independent calling context profiling for the Java virtual machine | |
Zhang et al. | HBench: Java: an application-specific benchmarking framework for Java virtual machines | |
Binder et al. | A quantitative evaluation of the contribution of native code to Java workloads | |
Radhakrishnan et al. | Execution characteristics of just-in-time compilers | |
Binder et al. | Exact and portable profiling for the jvm using bytecode instruction counting |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
17P | Request for examination filed |
Effective date: 20020221 |
|
AK | Designated contracting states |
Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LI LU MC NL PT SE TR |
|
AX | Request for extension of the european patent |
Extension state: AL LT LV MK RO SI |
|
AKX | Designation fees paid |
Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LI LU MC NL PT SE TR |
|
17Q | First examination report despatched |
Effective date: 20070404 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: EXAMINATION IS IN PROGRESS |
|
GRAP | Despatch of communication of intention to grant a patent |
Free format text: ORIGINAL CODE: EPIDOSNIGR1 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: GRANT OF PATENT IS INTENDED |
|
INTG | Intention to grant announced |
Effective date: 20180417 |
|
RIN1 | Information on inventor provided before grant (corrected) |
Inventor name: ROUTEAU, JEAN-PAUL Inventor name: LASSERRE, SERGE Inventor name: LESOT, JEAN PHILIPPE Inventor name: D'INVERNO, DOMINIQUE Inventor name: PARAIN, FREDERIC Inventor name: BANATRE, MICHEL Inventor name: CHAUVEL, GERARD Inventor name: CABILLIC, GILBERT |
|
GRAS | Grant fee paid |
Free format text: ORIGINAL CODE: EPIDOSNIGR3 |
|
GRAA | (expected) grant |
Free format text: ORIGINAL CODE: 0009210 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE PATENT HAS BEEN GRANTED |
|
AK | Designated contracting states |
Kind code of ref document: B1 Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LI LU MC NL PT SE TR |
|
REG | Reference to a national code |
Ref country code: GB Ref legal event code: FG4D |
|
REG | Reference to a national code |
Ref country code: CH Ref legal event code: EP |
|
REG | Reference to a national code |
Ref country code: IE Ref legal event code: FG4D |
|
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R096 Ref document number: 60249603 Country of ref document: DE |
|
REG | Reference to a national code |
Ref country code: AT Ref legal event code: REF Ref document number: 1041403 Country of ref document: AT Kind code of ref document: T Effective date: 20181015 |
|
REG | Reference to a national code |
Ref country code: NL Ref legal event code: MP Effective date: 20180912 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: SE Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180912 Ref country code: FI Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180912 Ref country code: GR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20181213 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: ES Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180912 |
|
REG | Reference to a national code |
Ref country code: AT Ref legal event code: MK05 Ref document number: 1041403 Country of ref document: AT Kind code of ref document: T Effective date: 20180912 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: NL Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180912 Ref country code: IT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180912 Ref country code: AT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180912 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: PT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190112 |
|
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R097 Ref document number: 60249603 Country of ref document: DE |
|
PLBE | No opposition filed within time limit |
Free format text: ORIGINAL CODE: 0009261 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: NO OPPOSITION FILED WITHIN TIME LIMIT |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: DK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180912 |
|
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R119 Ref document number: 60249603 Country of ref document: DE |
|
26N | No opposition filed |
Effective date: 20190613 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: MC Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180912 |
|
REG | Reference to a national code |
Ref country code: CH Ref legal event code: PL |
|
GBPC | Gb: european patent ceased through non-payment of renewal fee |
Effective date: 20190129 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: LU Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20190129 |
|
REG | Reference to a national code |
Ref country code: BE Ref legal event code: MM Effective date: 20190131 |
|
REG | Reference to a national code |
Ref country code: IE Ref legal event code: MM4A |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: FR Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20190131 Ref country code: DE Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20190801 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: BE Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20190131 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: CH Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20190131 Ref country code: GB Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20190129 Ref country code: LI Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20190131 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: IE Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20190129 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: TR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180912 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: CY Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20180912 |