US20080162272A1 - Methods and apparatus to collect runtime trace data associated with application performance - Google Patents

Methods and apparatus to collect runtime trace data associated with application performance Download PDF

Info

Publication number
US20080162272A1
US20080162272A1 US11/618,350 US61835006A US2008162272A1 US 20080162272 A1 US20080162272 A1 US 20080162272A1 US 61835006 A US61835006 A US 61835006A US 2008162272 A1 US2008162272 A1 US 2008162272A1
Authority
US
United States
Prior art keywords
value
performance
function
trace data
trace
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
Application number
US11/618,350
Other versions
US8141051B2 (en
Inventor
Eric Jian Huang
Hu Chen
Wenguang Chen
Robert Kuhn
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Priority to US11/618,350 priority Critical patent/US8141051B2/en
Publication of US20080162272A1 publication Critical patent/US20080162272A1/en
Assigned to INTEL CORPORATION, A DELAWARE CORPORATION reassignment INTEL CORPORATION, A DELAWARE CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: CHEN, WENGUANG, HUANG, ERIC JIAN, KUHN, ROBERT, CHEN, HU
Application granted granted Critical
Publication of US8141051B2 publication Critical patent/US8141051B2/en
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3409Recording 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring

Definitions

  • the present disclosure relates generally to processor systems and, more particularly, to methods and apparatus to collect runtime trace data associated with application performance.
  • a trace data collector is a process that typically runs in parallel with an application to be monitored and collects the trace data corresponding to executed processes or functions of the application.
  • Trace data includes information associated with execution behavior or performance of the processes or functions, which can be stored in a data structure or file and can be subsequently analyzed by a programmer and/or an analyzer application to determine whether software changes can or should be made to the application or to portions of the application.
  • FIG. 1 depicts an example system configured to collect runtime trace data associated with application performance.
  • FIG. 2 is an example execution timeline showing a plurality of functions executed during a plurality of time periods associated with collecting trace data.
  • FIGS. 3A and 3B depict a flowchart representative of an example method that may be used to implement the example systems and apparatus of FIG. 1 .
  • FIG. 4 is a block diagram of an example processor system that may execute the method represented by FIGS. 3A and 3B to implement the example systems and apparatus of FIG. 1 .
  • the example methods and apparatus described herein may be used to collect runtime trace data associated with application performance.
  • the example methods and apparatus described herein may be used to selectively collect trace data associated with execution of an application (e.g., a software or application process) based on deviations or differences in performance between a recent execution performance indicator of the application and a historical execution performance indicator of the application.
  • an application e.g., a software or application process
  • the example methods and apparatus described herein are configured to determine a historical execution performance criteria value (i.e., a historical performance criteria value) and a recent execution performance criteria value (i.e., a recent performance criteria value) for each of a plurality of functions associated with executing the application.
  • the historical performance criteria value for each function is indicative of the performance (e.g., the average performance) of that function over a plurality of executions (e.g., a plurality of loops) of the function.
  • the recent performance criteria value for each function is indicative of the performance of that function during the most recent execution of the function. For each function, a corresponding recent performance criteria value is calculated based on performance data collected during the recent execution of that function.
  • a corresponding historical performance criteria value can be calculated by averaging a recent performance criteria value of the function with a historical performance criteria value associated with prior executions of the function.
  • the historical performance criteria value can be calculated using any other statistical processing techniques including, for example, determining a geometric mean of the recent performance criteria value and a previously calculated historical performance criteria value.
  • the example methods and apparatus described herein are configured to use an adaptive data collection scheme to collect trace data associated with the execution of an application. That is, the example methods and apparatus can be used to collect trace data only when certain predetermined (e.g., user-specified) performance criteria thresholds are exceeded.
  • a user may set one or more performance criteria thresholds during a configuration phase.
  • Example criteria include cycles per instruction (CPI), memory bandwidth utilization, cache miss rate (e.g., L2 cache miss rate), rate of context switches (e.g., operating system context switches), etc.
  • an application may be divided into a plurality of software segments (e.g., functions, routines, processes, etc.).
  • a software segment may contain one or more functions or processes.
  • Each software segment may be assigned one or more performance criteria thresholds.
  • the example methods and apparatus can perform adaptive collection of trace data for each application segment.
  • the example methods and apparatus determine a difference between a recent and a historical performance criteria value associated with the segment to determine a difference or a standard deviation value. The difference value is then compared to a corresponding maximum performance criteria variability threshold (and/or a minimum performance criteria variability threshold) of the application segment.
  • the example methods and apparatus are configured to collect trace data associated with the execution of the application and store the same for subsequent analysis when the difference value is greater than the maximum performance criteria variability threshold (or less than the minimum performance criteria variability threshold).
  • the example methods and apparatus described herein can be configured to collect trace data based on differences between recent performance criteria values and user-specified or compiler-specified performance criteria values. That is, instead of using historical performance criteria values indicative of a historical execution performance of a function or software segment, a user or a compiler may specify performance criteria values that trigger collection of trace data if the difference between a recent performance criteria value and a corresponding user-specified or compiler-specified performance criteria value exceeds a maximum threshold value (or is less than a minimum threshold value). For example, during a compilation process, a compiler may determine that a particular sequence of instructions are likely to require relatively more processor resources than other instruction sequences because of, for example, the quantity of floating-point instructions in the particular sequence.
  • the compiler may provide a compiler-specified performance criteria value indicating that no more than seventy percent of a processor load during execution of that sequence of instruction should be due to executing the floating-point instruction. In this manner, trace data collection will be triggered during execution if a recent performance criteria value corresponding to that sequence of instructions indicates that floating-point instruction executions are creating a processor load greater than seventy percent.
  • the example methods and apparatus described herein may additionally or alternatively be configured to collect trace data based on performance criteria associated with hardware performance and/or operating system performance.
  • some operating systems and some hardware are configured to share runtime performance information for use by, for example, performance monitors (e.g., trace data collection applications).
  • the operating system runtime performance information may include, for example, page file usage, memory utilization, processor resource utilization, etc.
  • the hardware performance information may include, for example, bus usage information, processor/circuit board temperature, network interface utilization, etc.
  • the example methods and apparatus are preferably, but not necessarily, used in connection with a multiprocessor system network (e.g., a cluster) in which each of a plurality of network nodes (e.g., a plurality of processor systems communicatively coupled to each other via a network) executes a portion or a process of a distributed application.
  • a distributed application is an application having a plurality of processes that are executed by a plurality of networked nodes. During execution of the distributed application, the network nodes communicate messages to each other indicating the execution status of their respective application processes.
  • the network node When a network node determines that another network node exhibits an abnormality or a substantial difference in performance relative to its own performance, the network node broadcasts a message to all other network nodes requesting the nodes to collect trace data associated with the execution of their respective application processes. The trace data can then be subsequently analyzed.
  • FIG. 1 depicts an example system 100 configured to collect runtime trace data associated with application performance.
  • the example system 100 includes a network node A 102 communicatively coupled to a network node B 104 via a network 106 .
  • Each of the nodes 102 and 104 may be implemented using, for example, a processor system such as the example processor system 410 of FIG. 4 .
  • the node A 102 executes an application process A 108 and the node B 104 executes an application process B 110 .
  • execution of the processes 108 and 110 collectively implements a distributed application.
  • Each of the network nodes 102 and 104 is provided with a plurality of elements represented in FIG. 1 by blocks that are configured to monitor performance of the processes 108 and 110 and selectively collect trace data associated with the execution of the processes 108 and 110 based on the monitored performance.
  • blocks in the network node B 104 corresponding to the blocks of the network node A 102 are substantially similar or identical to the blocks of the network node A 102 .
  • the node A 102 To collect performance data, generate historical and recent performance criteria values, and monitor performance based on threshold values associated with execution of the process A 108 , the node A 102 is provided with a performance monitor 112 (e.g., a performance monitor daemon). To collect trace data, the node A 102 is provided with a trace collector 114 .
  • the trace collector 114 may be implemented using, for example, the Intel® Trace Collector manufactured and sold by Intel Corporation of Santa Clara, Calif.
  • the performance monitor 112 and the trace collector 114 are configured to collect respective data associated with the execution of each of a plurality of software segments (e.g., functions, subroutines, etc.) associated with the process A 108 .
  • the performance monitor 112 is configured to generate and/or update one or more historical performance criteria values for each function representative of the overall (e.g., average) performance of a plurality of historical executions of that function and one or more recent performance criteria values representative of the performance for the most recent execution of the function.
  • the performance monitor 112 stores the historical performance criteria values associated with the process A 108 in a historical performance data buffer 116 .
  • the performance monitor 112 collects performance data and the trace collector 114 collects trace data during relatively short, repeating time periods.
  • the trace collector 114 is configured to collect trace data during relatively longer time periods when the performance monitor 112 detects that the difference between a historical and a recent performance criteria value has met or exceeded a maximum performance criteria variability threshold value (or has met or fallen below a minimum performance criteria variability threshold value).
  • the trace collector 114 can store the trace data collected over the relatively longer time period in, for example, a non-volatile memory for subsequent analysis.
  • an execution timeline 200 shows a plurality of functions Fn 1 -Fn 7 executed by the node A 102 in connection with the process A 108 , a plurality of relatively short time periods 204 , and a relatively long time period 206 .
  • Some or all of the functions Fn 1 -Fn 7 may be executed one time or repeatedly executed multiple times.
  • the functions Fn 1 and Fn 2 are shown as being executed two times.
  • the functions Fn 1 -Fn 7 are shown as a linear sequence of functions, in other example implementations, the function Fn 1 -Fn 7 or other monitored functions may include nested functions that are called from within other functions and that return control to the calling functions before execution of a subsequent function.
  • the function Fn 1 may have an instruction that calls a function Fn 10 (not shown), and when the function Fn 10 finishes executing, the function Fn 10 returns control to the calling function Fn 1 before the function Fn 2 is executed.
  • a user can specify the length of the time periods 204 and 206 during a configuration phase.
  • the time periods 204 have a duration that spans a plurality of the functions Fn 1 -Fn 7 .
  • the performance monitor 112 collects performance data associated with the functions Fn 1 -Fn 7 and the trace collector 114 collects trace data associated with the functions Fn 1 -Fn 7 .
  • the performance monitor 112 At the end of each time period T j 204 , the performance monitor 112 generates one or more recent performance criteria values for the recently executed functions (e.g., the functions Fn 1 , Fn 2 , and Fn 3 ) based on the performance data collected during the time period 204 .
  • the performance monitor 112 can generate a recent performance criterion value for a software segment that contains one or more functions (e.g., one or more of the functions Fn 1 , Fn 2 , Fn 3 ) or one or more processes or routines within a particular function.
  • the performance monitor 112 can generate the performance criterion values by, for example, averaging the performance data or using any other statistical processing technique to process the performance data.
  • Each of the functions Fn 1 -Fn 7 is separated from a temporally neighboring or adjacent function by an exit/entry event such as, for example, the exit/entry event 208 separating the function Fn 2 from the function Fn 3 .
  • the exit/entry event 208 indicates a function exit point or event for the function Fn 2 and a function entry point or event for the function Fn 3 .
  • the trace collector 114 is configured to store information in association with collected trace data indicative of the occurrence of function exit events and/or function entry events (e.g., the exit/entry event 208 ) to, for example, facilitate analyzing the trace data to determine the functions with which the trace data is associated.
  • the performance monitor 112 may be configured to generate the performance criteria values in response to a function exit event (e.g., the exit/entry event 208 ).
  • the performance monitor 112 determines a difference value or a standard deviation value indicative of a difference between the recent and historical performance criteria values corresponding to the function Fn 2 . To determine whether to collect trace data for a relatively longer time period (e.g., the time period 206 ), the performance monitor 112 compares the difference value to a threshold value specified by, for example, a user during a runtime configuration.
  • the performance monitor 112 copies any trace data collected thus far during a current one of the time periods 204 in a data structure or file (e.g., in a non-volatile memory) and causes the trace collector 114 to collect additional trace data during the time period 206 and store the collected trace data for subsequent analysis.
  • the performance monitor 112 sets a flag 118 to indicate that the performance monitor 112 has determined that the difference between a recent and a historical performance criteria value has exceeded (or fallen below) a threshold value (e.g., identified an abnormality in the performance of the process A 108 ) and that trace data associated with execution of the process A 108 should be collected for subsequent analysis.
  • a threshold value e.g., identified an abnormality in the performance of the process A 108
  • the time period 206 spans more of the functions Fn 1 -Fn 7 than does each of the time periods 204 .
  • trace data associated with one or more functions of interest e.g., the function Fn 2
  • the trace collector 114 collects trace data associated with the functions Fn 1 -Fn 7 including trace data associated with at least one execution of the function of interest Fn 2 .
  • the node A 102 is provided with a circular buffer 120 .
  • the performance monitor 112 is configured to store performance data collected during each time period 204 in the circular buffer 120 .
  • the node B 104 includes a performance monitor 132 , a trace collector 134 , a historical performance data buffer 136 , a flag 138 , and a circular buffer 140 , each of which is substantially similar or identical to a respective one of the performance monitor 112 , the trace collector 114 , the historical performance data buffer 116 , the flag 118 , and the circular buffer 120 of the node A 102 .
  • a network node may have to stall execution of its process until it receives such information from another network node, which may be executing a respective process, for example, relatively slower.
  • the node A 102 is provided with parallel performance indicators 142 .
  • the parallel performance indicators 142 may be generated by the performance monitor 112 or a parallel performance daemon (not shown) and include performance information associated with execution of the application process 108 .
  • the parallel performance indicators 142 include, for example, performance criteria values substantially similar or identical to those described above.
  • the parallel performance indicators 142 may include performance information indicative of the parallel execution performance of a distributed application. That is, the parallel performance indicators 142 may be used to quantify the parallel execution performance of a distributed application that includes a plurality of processes, each of which is executed by a different node. For example, in the illustrated example of FIG.
  • the application process A 108 and the application process B 110 may be processes of a distributed application, and the parallel performance indicators 142 may be used to monitor the performance of the application process A 108 .
  • the parallel performance indicators 142 may include criteria indicative of, for example, load balance, stall time required to wait for inter-node messages, etc.
  • the parallel performance indicators 142 may be used to measure the performance of inter-node communications using criteria indicative of, for example, message latency, asynchronous communication metrics (e.g., delay between data requests and data receipts), etc.
  • the node B 104 also includes parallel performance indicators 144 .
  • the nodes 102 and 104 can exchange one or more of the parallel performance indicators 142 and 144 via the network 106 using time stamped performance messages 146 .
  • each of the parallel performance indicators 142 and 144 can analyze the performance information to determine whether another node is, for example, lagging in performance.
  • the performance monitors 112 and 132 may be configured to analyze the received parallel performance indicators using, for example, techniques substantially similar or identical to those described above in connection with the historical and recent performance criteria values.
  • each node can determine whether to request the other nodes to collect trace data associated with their executions of respective processes. If the performance monitor 112 determines that the node B 104 is lagging in performance, the performance monitor 112 communicates a trace on/off message 148 to the node B 104 to set the flag 138 of the node B 104 which, in turn, causes the trace collector 134 to collect trace data for a duration of time substantially similar or identical to the time period 206 of FIG. 1 .
  • the nodes 102 and 104 may be configured to use a message passing interface (MPI) protocol to communicate the messages 146 and 148 via the network 106 .
  • MPI message passing interface
  • a node that detects a performance lag in another node may be configured to broadcast the trace on/off message 148 to all other network nodes to cause all of the network nodes to collect trace data for a particular time period (e.g., the time period 206 of FIG. 2 ).
  • a particular time period e.g., the time period 206 of FIG. 2
  • the receiving node is configured to determine the time at which the broadcasting node sent the trace on/off message 148 based on assumed or actual network communication delays (e.g., due to communication bitrate or other latency factors).
  • the receiving node uses the calculated sending time to determine the earliest, previously collected trace data that the node needs to copy from its circular buffer (e.g., the circular buffer 140 of FIG. 1 ) to its message trace (e.g., the message trace 164 ).
  • the receiving node may be configured to assume worst-case conditions (e.g., highest delay times, highly loaded network bus) when estimating the sending time of the trace on/off message 148 .
  • worst-case conditions e.g., highest delay times, highly loaded network bus
  • each of the nodes 102 and 104 includes a local clock (LCLK) 150 and 152 , respectively, to provide the timestamps in the time stamped messages 146 .
  • LCLK local clock
  • each of the nodes 102 and 104 is configured to adjust its local clock 150 and 152 based on the timestamps in the time stamped performance messages 146 to substantially ensure that time-dependant information in the messages 146 is interpreted correctly by each of the nodes 102 and 104 .
  • the performance monitor 132 needs to be able to relatively accurately determine when the node A 102 was executing the particular function based on the time indicated by its own local clock 152 . If the times of the local clocks 150 and 152 differ, the performance monitor 132 may incorrectly interpret the timestamps in the time stamped performance message 146 .
  • the node A 102 embeds a sender timestamp derived from the local clock 150 in the time stamped performance message 146 .
  • the node B 104 compares the sender timestamp (i.e., the received timestamp) with its local clock 152 . If the sender timestamp is later than the current time of the local clock 152 , the node B 104 adjusts its local clock 152 towards the sender timestamp received via the message 146 .
  • the nodes 102 and 104 may adjust global clocks 154 and 156 , which the performance monitors 112 and 132 can use for parallel performance analyses.
  • the node B 104 is configured to account for the estimated transfer duration required to transmit the message 146 from the node A 102 to the node B 104 .
  • the estimated transfer duration can be determined by dividing the bit length of the message 146 by the bitrate of the network 106 . Additionally or alternatively, the estimated transfer duration can be determined based on historical transfer durations. To take into account the transfer duration, the node B 104 compares the time of the local clock 152 with the sum of the sender timestamp and the transfer duration.
  • the node B 104 adjusts the local clock 152 (or the global clock 156 ) to have a time equal to the summed value.
  • the node A 102 communicates its collected trace data to the postmortem merge process 162 via a message trace 164 and the node B 104 communicates its collected trace data to the postmortem merge process 162 via a message trace 166 .
  • the message trace 164 contains trace data collected by the trace collector 114 in association with the execution of the functions Fn 1 -Fn 7 of FIG. 2
  • the message trace 166 contains trace data collected by the trace collector 134 .
  • the postmortem merge process 162 receives the message traces 164 and 166 and message traces from other network nodes and merges the trace data for subsequent analyses.
  • the nodes 102 and 104 can also communicate the message traces 164 and 166 to a dynamic trace processor 168 configured to analyze the collected trace data in real time.
  • FIGS. 3A and 3B depict a flowchart representative of an example method that may be used to implement the example systems and apparatus of FIG. 1 to collect runtime trace data associated with application performance.
  • the example method of FIGS. 3A and 3B may be implemented using machine readable instructions comprising a program for execution by a processor (e.g., the processor 412 of FIG. 4 ).
  • the program may be embodied in software stored on a tangible medium (e.g., a CD-ROM, a floppy disk, a hard drive, etc.) or a memory associated with the processor 412 and/or embodied in firmware and/or dedicated hardware in a well-known manner.
  • a tangible medium e.g., a CD-ROM, a floppy disk, a hard drive, etc.
  • a memory associated with the processor 412 and/or embodied in firmware and/or dedicated hardware in a well-known manner.
  • a compiler obtains source code 302 (block 304 ) and compiles and links the source code 302 (block 306 ) to generate one or more application binary file(s) 308 .
  • the compiler imports trace data collection functions from an adaptive trace filtering (ATF) library 310 , which enables the adaptive collection of trace data and the collection of performance data described above in connection with FIG. 1 .
  • a plurality of network nodes (or a cluster of network nodes) load respective ones of the application binary files 308 into their local memories (block 312 ). For example, in the illustrated example of FIG. 1 , the node A 102 loads a binary file corresponding to the application process A 108 .
  • the performance monitor 112 receives from, for example, an ATF configuration file 316 , user-specified types (e.g., criteria types) of performance and trace data to be collected (block 314 ), user specified performance threshold values (e.g., criteria threshold values) (block 318 ), user-specified time periods 204 and 206 ( FIG. 2 ), and/or any other user-specified information to implement adaptive or selective collection of trace data based on application performance.
  • the node A 102 then executes the application process A 108 (block 320 ), and the performance monitor 112 collects performance data and trace data and stores the same in the circular buffer 120 ( FIG. 1 ) (block 322 ) during the time periods T j 204 ( FIG.
  • the performance monitor 112 determines whether the time period T j 204 has expired (block 324 ). If the time period Tj 204 has not expired, the performance monitor 112 continues to collect and store performance and trace data and monitor for the expiration of the time period Tj 204 while the node A 102 continues to execute the process A 108 .
  • the performance monitor 112 determines whether it has received a time stamped performance message 146 from another node (block 326 ). When the performance monitor 112 does not receive a time stamped performance message 146 (block 326 ), the node A 102 continues to execute the process A 108 and the performance monitor 112 continues to monitor receipt of any time stamped performance messages 146 from other nodes (block 326 ) while it collects and stores performance data and trace data (block 322 ).
  • the performance monitor 112 When the performance monitor 112 receives a time stamped performance message 146 from another node (block 326 ) or when the time period T j 204 has expired (block 324 ), the performance monitor 112 determines a recent performance criteria value (block 328 ) ( FIG. 3B ). The performance monitor 112 then generates a standard deviation value (or a difference value) (block 330 ) indicative of the deviation between the recent performance criteria value and a historical performance criteria value corresponding to the most recently executed function (e.g., the function Fn 2 of FIG. 2 corresponding to the exit event 208 detected at block 324 ).
  • a standard deviation value or a difference value
  • the performance monitor 112 compares the standard deviation value to a corresponding threshold value to determine if the threshold has been exceeded (block 332 ). If the threshold has been exceeded (block 332 ), the parallel performance indicator 142 broadcasts the trace on message 148 to other nodes (block 334 ) such as, for example, the node B 104 . If the threshold has not been exceeded (block 332 ), the performance monitor 112 determines whether it has received a trace on message 148 ( FIG. 1 ) from another node (block 336 ).
  • the trace collector 114 copies the trace data recently collected during the time period T j 204 from the circular buffer 120 and stores the same in the message trace 164 ( FIG. 1 ) (block 338 ).
  • the trace collector 114 stores information in the message trace 164 indicating which performance criteria threshold that has been exceeded (block 340 ). The information of the exceeded performance criteria threshold can facilitate subsequent analysis of the collected trace data.
  • the trace collector 114 collects additional trace data and stores the same in the message trace 164 (block 342 ) during the time period T k 206 ( FIG. 2 ).
  • the trace collector 114 continues to store and collect the additional trace data until the end of the time period T k 206 has been reached (block 344 ), at which point the trace collector 114 stops collecting the additional trace data (block 346 ).
  • the performance monitor 112 determines whether it should continue to monitor execution of the process A 108 (block 350 ). If the performance monitor 112 determines that it should continue to monitor execution of the process A 108 or if the performance monitor 112 determines that it has not received a trace on message from another node (block 336 ), control returns to block 320 to monitor execution of the process A 108 . Otherwise, if the performance monitor 112 determines that it should not continue to monitor execution of the process A 108 (block 350 ), the example method of FIGS. 3A and 3B is ended.
  • FIG. 4 is a block diagram of an example processor system 410 that may execute the method represented by FIG. 4 to implement the example systems and apparatus of FIG. 1 .
  • the processor system 410 includes a processor 412 that is coupled to an interconnection bus 414 .
  • the processor 412 may be any suitable processor, processing unit or microprocessor.
  • the system 410 may be a multi-processor system and, thus, may include one or more additional processors that are identical or similar to the processor 412 and that are communicatively coupled to the interconnection bus 414 .
  • the processor 412 of FIG. 4 is coupled to a chipset 418 , which includes a memory controller 420 and an input/output (I/O) controller 422 .
  • a chipset typically provides I/O and memory management functions as well as a plurality of general purpose and/or special purpose registers, timers, etc. that are accessible or used by one or more processors coupled to the chipset 418 .
  • the memory controller 420 performs functions that enable the processor 412 (or processors if there are multiple processors) to access a system memory 424 and a mass storage memory 425 .
  • the system memory 424 may include any desired type of volatile and/or non-volatile memory such as, for example, static random access memory (SRAM), dynamic random access memory (DRAM), flash memory, read-only memory (ROM), etc.
  • the mass storage memory 425 may include any desired type of mass storage device including hard disk drives, optical drives, tape storage devices, etc.
  • the I/O controller 422 performs functions that enable the processor 412 to communicate with peripheral input/output (I/O) devices 426 and 428 and a network interface 430 via an I/O bus 432 .
  • the I/O devices 426 and 428 may be any desired type of I/O device such as, for example, a keyboard, a video display or monitor, a mouse, etc.
  • the network interface 430 may be, for example, an Ethernet device, an asynchronous transfer mode (ATM) device, an 802.11 device, etc. that enables the processor system 410 to communicate with other processor systems. While the memory controller 420 and the I/O controller 422 are depicted in FIG. 4 as separate functional blocks within the chipset 418 , the functions performed by these blocks may be integrated within a single semiconductor circuit or may be implemented using two or more separate integrated circuits.
  • ATM asynchronous transfer mode

Abstract

Methods, apparatus, and articles of manufacture to perform runtime trace filtering associated with application performance analysis are disclosed. A disclosed example method involves generating a first performance value based on first performance data associated with a first function of a first application process. A difference value is generated based on the first performance value and a historical performance value associated with the first function. The difference value is compared to a threshold value, and first trace data associated with execution of the first application process is collected based on the comparison of the difference value to the threshold value.

Description

    FIELD OF THE DISCLOSURE
  • The present disclosure relates generally to processor systems and, more particularly, to methods and apparatus to collect runtime trace data associated with application performance.
  • BACKGROUND
  • Software development often involves runtime performance monitoring or testing to determine whether improvements can be or should be made to software. Execution behaviors or performance characteristics are often exhibited differently when applications are fully executed than when the applications are stepped through line-by-line during a programming phase. To enable monitoring software segments (e.g., functions, processes, etc.) during runtime, performance monitoring and/or testing often involves using a trace data collector to collect trace data associated with real-time execution of processes or functions. A trace data collector is a process that typically runs in parallel with an application to be monitored and collects the trace data corresponding to executed processes or functions of the application. Trace data includes information associated with execution behavior or performance of the processes or functions, which can be stored in a data structure or file and can be subsequently analyzed by a programmer and/or an analyzer application to determine whether software changes can or should be made to the application or to portions of the application.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 depicts an example system configured to collect runtime trace data associated with application performance.
  • FIG. 2 is an example execution timeline showing a plurality of functions executed during a plurality of time periods associated with collecting trace data.
  • FIGS. 3A and 3B depict a flowchart representative of an example method that may be used to implement the example systems and apparatus of FIG. 1.
  • FIG. 4 is a block diagram of an example processor system that may execute the method represented by FIGS. 3A and 3B to implement the example systems and apparatus of FIG. 1.
  • DETAILED DESCRIPTION
  • The example methods and apparatus described herein may be used to collect runtime trace data associated with application performance. In particular, the example methods and apparatus described herein may be used to selectively collect trace data associated with execution of an application (e.g., a software or application process) based on deviations or differences in performance between a recent execution performance indicator of the application and a historical execution performance indicator of the application.
  • The example methods and apparatus described herein are configured to determine a historical execution performance criteria value (i.e., a historical performance criteria value) and a recent execution performance criteria value (i.e., a recent performance criteria value) for each of a plurality of functions associated with executing the application. The historical performance criteria value for each function is indicative of the performance (e.g., the average performance) of that function over a plurality of executions (e.g., a plurality of loops) of the function. The recent performance criteria value for each function is indicative of the performance of that function during the most recent execution of the function. For each function, a corresponding recent performance criteria value is calculated based on performance data collected during the recent execution of that function. Also, for each function, a corresponding historical performance criteria value can be calculated by averaging a recent performance criteria value of the function with a historical performance criteria value associated with prior executions of the function. In addition to or instead of averaging, the historical performance criteria value can be calculated using any other statistical processing techniques including, for example, determining a geometric mean of the recent performance criteria value and a previously calculated historical performance criteria value.
  • The example methods and apparatus described herein are configured to use an adaptive data collection scheme to collect trace data associated with the execution of an application. That is, the example methods and apparatus can be used to collect trace data only when certain predetermined (e.g., user-specified) performance criteria thresholds are exceeded. A user may set one or more performance criteria thresholds during a configuration phase. Example criteria include cycles per instruction (CPI), memory bandwidth utilization, cache miss rate (e.g., L2 cache miss rate), rate of context switches (e.g., operating system context switches), etc. In some example implementations, an application may be divided into a plurality of software segments (e.g., functions, routines, processes, etc.). A software segment may contain one or more functions or processes. Each software segment may be assigned one or more performance criteria thresholds. In this manner, the example methods and apparatus can perform adaptive collection of trace data for each application segment. During a runtime phase, to determine when an application segment has exceeded a performance criteria threshold, the example methods and apparatus determine a difference between a recent and a historical performance criteria value associated with the segment to determine a difference or a standard deviation value. The difference value is then compared to a corresponding maximum performance criteria variability threshold (and/or a minimum performance criteria variability threshold) of the application segment. The example methods and apparatus are configured to collect trace data associated with the execution of the application and store the same for subsequent analysis when the difference value is greater than the maximum performance criteria variability threshold (or less than the minimum performance criteria variability threshold).
  • In some example implementations, the example methods and apparatus described herein can be configured to collect trace data based on differences between recent performance criteria values and user-specified or compiler-specified performance criteria values. That is, instead of using historical performance criteria values indicative of a historical execution performance of a function or software segment, a user or a compiler may specify performance criteria values that trigger collection of trace data if the difference between a recent performance criteria value and a corresponding user-specified or compiler-specified performance criteria value exceeds a maximum threshold value (or is less than a minimum threshold value). For example, during a compilation process, a compiler may determine that a particular sequence of instructions are likely to require relatively more processor resources than other instruction sequences because of, for example, the quantity of floating-point instructions in the particular sequence. To monitor the performance of a process during execution of the identified sequence of instructions, the compiler may provide a compiler-specified performance criteria value indicating that no more than seventy percent of a processor load during execution of that sequence of instruction should be due to executing the floating-point instruction. In this manner, trace data collection will be triggered during execution if a recent performance criteria value corresponding to that sequence of instructions indicates that floating-point instruction executions are creating a processor load greater than seventy percent.
  • In other example implementations, in addition to or instead of using user-specified performance criteria values, compiler-specified performance criteria values, and/or historical performance criteria values, the example methods and apparatus described herein may additionally or alternatively be configured to collect trace data based on performance criteria associated with hardware performance and/or operating system performance. For example, some operating systems and some hardware are configured to share runtime performance information for use by, for example, performance monitors (e.g., trace data collection applications). The operating system runtime performance information may include, for example, page file usage, memory utilization, processor resource utilization, etc. The hardware performance information may include, for example, bus usage information, processor/circuit board temperature, network interface utilization, etc.
  • The example methods and apparatus are preferably, but not necessarily, used in connection with a multiprocessor system network (e.g., a cluster) in which each of a plurality of network nodes (e.g., a plurality of processor systems communicatively coupled to each other via a network) executes a portion or a process of a distributed application. As used herein, a distributed application is an application having a plurality of processes that are executed by a plurality of networked nodes. During execution of the distributed application, the network nodes communicate messages to each other indicating the execution status of their respective application processes. When a network node determines that another network node exhibits an abnormality or a substantial difference in performance relative to its own performance, the network node broadcasts a message to all other network nodes requesting the nodes to collect trace data associated with the execution of their respective application processes. The trace data can then be subsequently analyzed.
  • FIG. 1 depicts an example system 100 configured to collect runtime trace data associated with application performance. In the illustrated example, the example system 100 includes a network node A 102 communicatively coupled to a network node B 104 via a network 106. Each of the nodes 102 and 104 may be implemented using, for example, a processor system such as the example processor system 410 of FIG. 4. In the illustrated example, the node A 102 executes an application process A 108 and the node B 104 executes an application process B 110. In the illustrated example, execution of the processes 108 and 110 collectively implements a distributed application.
  • Each of the network nodes 102 and 104 is provided with a plurality of elements represented in FIG. 1 by blocks that are configured to monitor performance of the processes 108 and 110 and selectively collect trace data associated with the execution of the processes 108 and 110 based on the monitored performance. For purposes of discussion, in general, only the blocks of the network node A 102 will be described in detail. In the illustrated example, blocks in the network node B 104 corresponding to the blocks of the network node A 102 are substantially similar or identical to the blocks of the network node A 102.
  • To collect performance data, generate historical and recent performance criteria values, and monitor performance based on threshold values associated with execution of the process A 108, the node A 102 is provided with a performance monitor 112 (e.g., a performance monitor daemon). To collect trace data, the node A 102 is provided with a trace collector 114. The trace collector 114 may be implemented using, for example, the Intel® Trace Collector manufactured and sold by Intel Corporation of Santa Clara, Calif. In the illustrated example, the performance monitor 112 and the trace collector 114 are configured to collect respective data associated with the execution of each of a plurality of software segments (e.g., functions, subroutines, etc.) associated with the process A 108. In the illustrated example, the performance monitor 112 is configured to generate and/or update one or more historical performance criteria values for each function representative of the overall (e.g., average) performance of a plurality of historical executions of that function and one or more recent performance criteria values representative of the performance for the most recent execution of the function. The performance monitor 112 stores the historical performance criteria values associated with the process A 108 in a historical performance data buffer 116.
  • In the illustrated example, the performance monitor 112 collects performance data and the trace collector 114 collects trace data during relatively short, repeating time periods. In addition, the trace collector 114 is configured to collect trace data during relatively longer time periods when the performance monitor 112 detects that the difference between a historical and a recent performance criteria value has met or exceeded a maximum performance criteria variability threshold value (or has met or fallen below a minimum performance criteria variability threshold value). The trace collector 114 can store the trace data collected over the relatively longer time period in, for example, a non-volatile memory for subsequent analysis.
  • Turning briefly to FIG. 2, an execution timeline 200 shows a plurality of functions Fn1-Fn7 executed by the node A 102 in connection with the process A 108, a plurality of relatively short time periods 204, and a relatively long time period 206. Some or all of the functions Fn1-Fn7 may be executed one time or repeatedly executed multiple times. In the illustrated example, the functions Fn1 and Fn2 are shown as being executed two times. Although the functions Fn1-Fn7 are shown as a linear sequence of functions, in other example implementations, the function Fn1-Fn7 or other monitored functions may include nested functions that are called from within other functions and that return control to the calling functions before execution of a subsequent function. For example, in the illustrated example of FIG. 2, the function Fn1 may have an instruction that calls a function Fn10 (not shown), and when the function Fn10 finishes executing, the function Fn10 returns control to the calling function Fn1 before the function Fn2 is executed.
  • A user can specify the length of the time periods 204 and 206 during a configuration phase. In the illustrated example, the time periods 204 have a duration that spans a plurality of the functions Fn1-Fn7. During the time periods 204, the performance monitor 112 collects performance data associated with the functions Fn1-Fn7 and the trace collector 114 collects trace data associated with the functions Fn1-Fn7. At the end of each time period T j 204, the performance monitor 112 generates one or more recent performance criteria values for the recently executed functions (e.g., the functions Fn1, Fn2, and Fn3) based on the performance data collected during the time period 204. In the illustrated example, the performance monitor 112 can generate a recent performance criterion value for a software segment that contains one or more functions (e.g., one or more of the functions Fn1, Fn2, Fn3) or one or more processes or routines within a particular function. In some example implementations, the performance monitor 112 can generate the performance criterion values by, for example, averaging the performance data or using any other statistical processing technique to process the performance data.
  • Each of the functions Fn1-Fn7 is separated from a temporally neighboring or adjacent function by an exit/entry event such as, for example, the exit/entry event 208 separating the function Fn2 from the function Fn3. The exit/entry event 208 indicates a function exit point or event for the function Fn2 and a function entry point or event for the function Fn3. The trace collector 114 is configured to store information in association with collected trace data indicative of the occurrence of function exit events and/or function entry events (e.g., the exit/entry event 208) to, for example, facilitate analyzing the trace data to determine the functions with which the trace data is associated. In some example implementations, instead of generating the recent performance criteria values based on the expiration of the time period Tj 204, the performance monitor 112 may be configured to generate the performance criteria values in response to a function exit event (e.g., the exit/entry event 208).
  • The performance monitor 112 then determines a difference value or a standard deviation value indicative of a difference between the recent and historical performance criteria values corresponding to the function Fn2. To determine whether to collect trace data for a relatively longer time period (e.g., the time period 206), the performance monitor 112 compares the difference value to a threshold value specified by, for example, a user during a runtime configuration. If the difference value exceeds a maximum threshold value (or falls below a minimum threshold value), the performance monitor 112 copies any trace data collected thus far during a current one of the time periods 204 in a data structure or file (e.g., in a non-volatile memory) and causes the trace collector 114 to collect additional trace data during the time period 206 and store the collected trace data for subsequent analysis. In the illustrated example of FIG. 1, the performance monitor 112 sets a flag 118 to indicate that the performance monitor 112 has determined that the difference between a recent and a historical performance criteria value has exceeded (or fallen below) a threshold value (e.g., identified an abnormality in the performance of the process A 108) and that trace data associated with execution of the process A 108 should be collected for subsequent analysis.
  • As shown in FIG. 2, the time period 206 spans more of the functions Fn1-Fn7 than does each of the time periods 204. In this manner, trace data associated with one or more functions of interest (e.g., the function Fn2) is relatively more likely to be captured during the time period 206 when the functions Fn1-Fn7 are executed in a repeating or recursive fashion. In the illustrated example, if the function of interest is the function Fn2, the trace collector 114 collects trace data associated with the functions Fn1-Fn7 including trace data associated with at least one execution of the function of interest Fn2.
  • Returning to FIG. 1, to store the trace data collected by the trace collector 114 during each time period 204, the node A 102 is provided with a circular buffer 120. In addition, the performance monitor 112 is configured to store performance data collected during each time period 204 in the circular buffer 120.
  • Briefly referring to the blocks of the node B 104, the node B 104 includes a performance monitor 132, a trace collector 134, a historical performance data buffer 136, a flag 138, and a circular buffer 140, each of which is substantially similar or identical to a respective one of the performance monitor 112, the trace collector 114, the historical performance data buffer 116, the flag 118, and the circular buffer 120 of the node A 102.
  • Programmers are often interested in monitoring the performance of a distributed application that includes a plurality of processes (e.g., the application processes 108 and 110) executed by a plurality of network nodes. Some processes executed by particular network nodes may depend on information (e.g., variable values, messages, etc.) generated by processes executed by other network nodes. A network node may have to stall execution of its process until it receives such information from another network node, which may be executing a respective process, for example, relatively slower. In the illustrated example, to enable other nodes to monitor performance of its process execution, the node A 102 is provided with parallel performance indicators 142.
  • In the illustrated example, the parallel performance indicators 142 may be generated by the performance monitor 112 or a parallel performance daemon (not shown) and include performance information associated with execution of the application process 108. In some example implementations, the parallel performance indicators 142 include, for example, performance criteria values substantially similar or identical to those described above. Additionally, the parallel performance indicators 142 may include performance information indicative of the parallel execution performance of a distributed application. That is, the parallel performance indicators 142 may be used to quantify the parallel execution performance of a distributed application that includes a plurality of processes, each of which is executed by a different node. For example, in the illustrated example of FIG. 1, the application process A 108 and the application process B 110 may be processes of a distributed application, and the parallel performance indicators 142 may be used to monitor the performance of the application process A 108. To measure parallel execution performance, the parallel performance indicators 142 may include criteria indicative of, for example, load balance, stall time required to wait for inter-node messages, etc. In addition, the parallel performance indicators 142 may be used to measure the performance of inter-node communications using criteria indicative of, for example, message latency, asynchronous communication metrics (e.g., delay between data requests and data receipts), etc.
  • In the illustrated example, the node B 104 also includes parallel performance indicators 144. The nodes 102 and 104 can exchange one or more of the parallel performance indicators 142 and 144 via the network 106 using time stamped performance messages 146. In this manner, each of the parallel performance indicators 142 and 144 can analyze the performance information to determine whether another node is, for example, lagging in performance. The performance monitors 112 and 132 may be configured to analyze the received parallel performance indicators using, for example, techniques substantially similar or identical to those described above in connection with the historical and recent performance criteria values.
  • Based on the analysis of performance indicators from other nodes, each node can determine whether to request the other nodes to collect trace data associated with their executions of respective processes. If the performance monitor 112 determines that the node B 104 is lagging in performance, the performance monitor 112 communicates a trace on/off message 148 to the node B 104 to set the flag 138 of the node B 104 which, in turn, causes the trace collector 134 to collect trace data for a duration of time substantially similar or identical to the time period 206 of FIG. 1. The nodes 102 and 104 may be configured to use a message passing interface (MPI) protocol to communicate the messages 146 and 148 via the network 106. When two or more nodes are communicatively coupled and configured to execute related application processes (e.g., processes of a distributed application), a node that detects a performance lag in another node may be configured to broadcast the trace on/off message 148 to all other network nodes to cause all of the network nodes to collect trace data for a particular time period (e.g., the time period 206 of FIG. 2). To ensure that all or substantially all trace data of interest is saved, when a node receives a broadcasted trace on/off message 148, the receiving node is configured to determine the time at which the broadcasting node sent the trace on/off message 148 based on assumed or actual network communication delays (e.g., due to communication bitrate or other latency factors). The receiving node then uses the calculated sending time to determine the earliest, previously collected trace data that the node needs to copy from its circular buffer (e.g., the circular buffer 140 of FIG. 1) to its message trace (e.g., the message trace 164). To ensure that all trace data of interest is collected and stored, the receiving node may be configured to assume worst-case conditions (e.g., highest delay times, highly loaded network bus) when estimating the sending time of the trace on/off message 148. Thus, to ensure storing sufficient trace data associated with parallel performance monitoring, circular buffers used to monitor parallel execution performance can be configured to be relatively larger than circular buffers used for monitoring only local execution performance.
  • In the illustrated example, each of the nodes 102 and 104 includes a local clock (LCLK) 150 and 152, respectively, to provide the timestamps in the time stamped messages 146. Preferably, but not necessarily, each of the nodes 102 and 104 is configured to adjust its local clock 150 and 152 based on the timestamps in the time stamped performance messages 146 to substantially ensure that time-dependant information in the messages 146 is interpreted correctly by each of the nodes 102 and 104. For example, if one of the parallel performance indicators 142 in the time stamped performance message 146 indicates that the node A 102 is executing a particular function of the process A 108 at a particular time, the performance monitor 132 needs to be able to relatively accurately determine when the node A 102 was executing the particular function based on the time indicated by its own local clock 152. If the times of the local clocks 150 and 152 differ, the performance monitor 132 may incorrectly interpret the timestamps in the time stamped performance message 146.
  • In the illustrated example, the node A 102 embeds a sender timestamp derived from the local clock 150 in the time stamped performance message 146. After receiving the time stamped performance message 146, the node B 104 compares the sender timestamp (i.e., the received timestamp) with its local clock 152. If the sender timestamp is later than the current time of the local clock 152, the node B 104 adjusts its local clock 152 towards the sender timestamp received via the message 146. Alternatively, instead of adjusting the local clocks 150 and 152 based on sender timestamps, the nodes 102 and 104 may adjust global clocks 154 and 156, which the performance monitors 112 and 132 can use for parallel performance analyses.
  • For purposes of comparing the sender timestamp with the time of the local clock 152, the node B 104 is configured to account for the estimated transfer duration required to transmit the message 146 from the node A 102 to the node B 104. The estimated transfer duration can be determined by dividing the bit length of the message 146 by the bitrate of the network 106. Additionally or alternatively, the estimated transfer duration can be determined based on historical transfer durations. To take into account the transfer duration, the node B 104 compares the time of the local clock 152 with the sum of the sender timestamp and the transfer duration. If the time of the local clock 152 is less than the summed value and if the calculated transfer duration is less than or equal to a minimum transfer duration value (which may be specified by a user or determined based on historical transfer times), the node B 104 adjusts the local clock 152 (or the global clock 156) to have a time equal to the summed value.
  • During a postmortem merge process 162, the node A 102 communicates its collected trace data to the postmortem merge process 162 via a message trace 164 and the node B 104 communicates its collected trace data to the postmortem merge process 162 via a message trace 166. The message trace 164 contains trace data collected by the trace collector 114 in association with the execution of the functions Fn1-Fn7 of FIG. 2, and the message trace 166 contains trace data collected by the trace collector 134. The postmortem merge process 162 receives the message traces 164 and 166 and message traces from other network nodes and merges the trace data for subsequent analyses. In some example implementations, the nodes 102 and 104 can also communicate the message traces 164 and 166 to a dynamic trace processor 168 configured to analyze the collected trace data in real time.
  • FIGS. 3A and 3B depict a flowchart representative of an example method that may be used to implement the example systems and apparatus of FIG. 1 to collect runtime trace data associated with application performance. In some example implementations, the example method of FIGS. 3A and 3B may be implemented using machine readable instructions comprising a program for execution by a processor (e.g., the processor 412 of FIG. 4). The program may be embodied in software stored on a tangible medium (e.g., a CD-ROM, a floppy disk, a hard drive, etc.) or a memory associated with the processor 412 and/or embodied in firmware and/or dedicated hardware in a well-known manner. Further, although the example program is described with reference to the flowchart of FIGS. 3A and 3B, persons of ordinary skill in the art will readily appreciate that many other methods of implementing the example systems and apparatus of FIG. 1 may alternatively be used. For example, the order of execution of the blocks may be changed, and/or some of the blocks described may be changed, eliminated, or combined. Further, operations of two or more blocks may be performed in parallel or serially.
  • Initially, a compiler obtains source code 302 (block 304) and compiles and links the source code 302 (block 306) to generate one or more application binary file(s) 308. In the illustrated example, the compiler imports trace data collection functions from an adaptive trace filtering (ATF) library 310, which enables the adaptive collection of trace data and the collection of performance data described above in connection with FIG. 1. A plurality of network nodes (or a cluster of network nodes) load respective ones of the application binary files 308 into their local memories (block 312). For example, in the illustrated example of FIG. 1, the node A 102 loads a binary file corresponding to the application process A 108.
  • The performance monitor 112 (FIG. 1) receives from, for example, an ATF configuration file 316, user-specified types (e.g., criteria types) of performance and trace data to be collected (block 314), user specified performance threshold values (e.g., criteria threshold values) (block 318), user-specified time periods 204 and 206 (FIG. 2), and/or any other user-specified information to implement adaptive or selective collection of trace data based on application performance. The node A 102 then executes the application process A 108 (block 320), and the performance monitor 112 collects performance data and trace data and stores the same in the circular buffer 120 (FIG. 1) (block 322) during the time periods Tj 204 (FIG. 2) based on the types of performance and trace data received at block 314. While collecting and storing performance and trace data (block 322), the performance monitor 112 determines whether the time period T j 204 has expired (block 324). If the time period Tj 204 has not expired, the performance monitor 112 continues to collect and store performance and trace data and monitor for the expiration of the time period Tj 204 while the node A 102 continues to execute the process A 108.
  • Also, while collecting and storing performance and trace data (block 322), the performance monitor 112 determines whether it has received a time stamped performance message 146 from another node (block 326). When the performance monitor 112 does not receive a time stamped performance message 146 (block 326), the node A 102 continues to execute the process A 108 and the performance monitor 112 continues to monitor receipt of any time stamped performance messages 146 from other nodes (block 326) while it collects and stores performance data and trace data (block 322).
  • When the performance monitor 112 receives a time stamped performance message 146 from another node (block 326) or when the time period T j 204 has expired (block 324), the performance monitor 112 determines a recent performance criteria value (block 328) (FIG. 3B). The performance monitor 112 then generates a standard deviation value (or a difference value) (block 330) indicative of the deviation between the recent performance criteria value and a historical performance criteria value corresponding to the most recently executed function (e.g., the function Fn2 of FIG. 2 corresponding to the exit event 208 detected at block 324).
  • The performance monitor 112 then compares the standard deviation value to a corresponding threshold value to determine if the threshold has been exceeded (block 332). If the threshold has been exceeded (block 332), the parallel performance indicator 142 broadcasts the trace on message 148 to other nodes (block 334) such as, for example, the node B 104. If the threshold has not been exceeded (block 332), the performance monitor 112 determines whether it has received a trace on message 148 (FIG. 1) from another node (block 336). If the trace on message 148 has been received (block 336) or after the parallel performance indicator 142 broadcasts the trace on message 148 to other nodes (block 334), the trace collector 114 copies the trace data recently collected during the time period T j 204 from the circular buffer 120 and stores the same in the message trace 164 (FIG. 1) (block 338). In addition, the trace collector 114 stores information in the message trace 164 indicating which performance criteria threshold that has been exceeded (block 340). The information of the exceeded performance criteria threshold can facilitate subsequent analysis of the collected trace data. Also, the trace collector 114 collects additional trace data and stores the same in the message trace 164 (block 342) during the time period Tk 206 (FIG. 2). The trace collector 114 continues to store and collect the additional trace data until the end of the time period T k 206 has been reached (block 344), at which point the trace collector 114 stops collecting the additional trace data (block 346). The performance monitor 112 then determines whether it should continue to monitor execution of the process A 108 (block 350). If the performance monitor 112 determines that it should continue to monitor execution of the process A 108 or if the performance monitor 112 determines that it has not received a trace on message from another node (block 336), control returns to block 320 to monitor execution of the process A 108. Otherwise, if the performance monitor 112 determines that it should not continue to monitor execution of the process A 108 (block 350), the example method of FIGS. 3A and 3B is ended.
  • FIG. 4 is a block diagram of an example processor system 410 that may execute the method represented by FIG. 4 to implement the example systems and apparatus of FIG. 1. As shown in FIG. 4, the processor system 410 includes a processor 412 that is coupled to an interconnection bus 414. The processor 412 may be any suitable processor, processing unit or microprocessor. Although not shown in FIG. 4, the system 410 may be a multi-processor system and, thus, may include one or more additional processors that are identical or similar to the processor 412 and that are communicatively coupled to the interconnection bus 414.
  • The processor 412 of FIG. 4 is coupled to a chipset 418, which includes a memory controller 420 and an input/output (I/O) controller 422. As is well known, a chipset typically provides I/O and memory management functions as well as a plurality of general purpose and/or special purpose registers, timers, etc. that are accessible or used by one or more processors coupled to the chipset 418. The memory controller 420 performs functions that enable the processor 412 (or processors if there are multiple processors) to access a system memory 424 and a mass storage memory 425.
  • The system memory 424 may include any desired type of volatile and/or non-volatile memory such as, for example, static random access memory (SRAM), dynamic random access memory (DRAM), flash memory, read-only memory (ROM), etc. The mass storage memory 425 may include any desired type of mass storage device including hard disk drives, optical drives, tape storage devices, etc. The I/O controller 422 performs functions that enable the processor 412 to communicate with peripheral input/output (I/O) devices 426 and 428 and a network interface 430 via an I/O bus 432. The I/ O devices 426 and 428 may be any desired type of I/O device such as, for example, a keyboard, a video display or monitor, a mouse, etc. The network interface 430 may be, for example, an Ethernet device, an asynchronous transfer mode (ATM) device, an 802.11 device, etc. that enables the processor system 410 to communicate with other processor systems. While the memory controller 420 and the I/O controller 422 are depicted in FIG. 4 as separate functional blocks within the chipset 418, the functions performed by these blocks may be integrated within a single semiconductor circuit or may be implemented using two or more separate integrated circuits.
  • Although certain methods, apparatus, and articles of manufacture have been described herein, the scope of coverage of this patent is not limited thereto. To the contrary, this patent covers all methods, apparatus, and articles of manufacture fairly falling within the scope of the appended claims either literally or under the doctrine of equivalents.

Claims (27)

1. A method, comprising:
generating a first performance value based on first performance data associated with a first function of a first application process;
generating a difference value based on the first performance value and a historical performance value associated with the first function;
comparing the difference value to a threshold value; and
collecting first trace data associated with execution of the first application process based on the comparison of the difference value to the threshold value.
2. A method as defined in claim 1, further comprising collecting the first performance data associated with an execution of the first function and generating the first performance value by determining a value associated with the first performance data.
3. A method as defined in claim 1, further comprising generating the historical performance value based on performance data associated with executing the first function a plurality of times prior to generating the first performance value.
4. A method as defined in claim 1, further comprising, prior to collecting the first trace data, collecting the first performance data and other trace data associated with an execution of the first function for a first predetermined duration of time and collecting the first trace data for a second predetermined duration of time.
5. A method as defined in claim 1, wherein each of the first performance value and the historical performance value comprises a cycles per instruction value, a memory bandwidth value, a cache miss rate value, or a rate of context switches value.
6. A method as defined in claim 1, wherein the first trace data includes at least one of a cycles per instruction value, a memory bandwidth value, a cache miss rate value, or a rate of context switches value.
7. A method as defined in claim 1, wherein generating the first performance value includes generating the first performance value in response to exiting the first function.
8. A method as defined in claim 1, further comprising:
collecting the first performance data via a first network node;
generating the first performance value via the first network node based on the first performance data;
collecting second performance data via a second network node;
generating the historical performance value via the second network node based on the second performance data;
generating via the second network node the difference value;
comparing via the second network node the difference value to the threshold value; and
collecting via the first network node the first trace data in response to receiving at the first network node a message indicating to collect the first trace data.
9. A method as defined in claim 1, further comprising collecting the first performance data associated with the first function executing on a plurality of network nodes.
10. A method as defined in claim 9, wherein the first performance data is collected during runtime.
11. A method as defined in claim 1, wherein the historical performance value is associated with the first function executing on a plurality of network nodes.
12. A method as defined in claim 1, wherein the first performance data is collected during runtime.
13. A method as defined in claim 1, wherein comparing the difference value to the threshold value is performed during runtime.
14. A method as defined in claim 1, wherein knowledge of operation of other application processes is not used in generating the difference value.
15. A machine accessible medium having instructions stored thereon that, when executed, cause a machine to:
generate a first performance value based on first performance data associated with a first function of a first application process;
generate a difference value based on the first performance value and a historical performance value associated with the first function;
compare the difference value to a threshold value; and
collect first trace data associated with execution of the first application process based on the comparison of the difference value to the threshold value.
16. A machine accessible medium as defined in claim 15 having instructions stored thereon that, when executed, cause the machine to collect the first performance data associated with an execution of the first function and generate the first performance value by determining a value associated with the first performance data.
17. A machine accessible medium as defined in claim 15 having instructions stored thereon that, when executed, cause the machine to generate the historical performance value based on performance data associated with executing the first function a plurality of times prior to generating the first performance value.
18. A machine accessible medium as defined in claim 15 having instructions stored thereon that, when executed, cause the machine to collect the first performance data and other trace data associated with an execution of the first function for a first predetermined duration of time prior to collecting the first trace data and to collect the first trace data for a second predetermined duration of time.
19. A machine accessible medium as defined in claim 15, wherein each of the first performance value and the historical performance value comprises a cycles per instruction value, a memory bandwidth value, a cache miss rate value, or a rate of context switches value.
20. A machine accessible medium as defined in claim 15, wherein the first trace data includes at least one of a cycles per instruction value, a memory bandwidth value, a cache miss rate value, or a rate of context switches value.
21. A machine accessible medium as defined in claim 15 having instructions stored thereon that, when executed, cause the machine to generate the first performance value in response to exiting the first function.
22. A machine accessible medium as defined in claim 15 having instructions stored thereon that, when executed, cause the machine to collect the first performance data associated with the first function executing on a plurality of network nodes.
23. A machine accessible medium as defined in claim 22, wherein the first performance data is collected during runtime.
24. A machine accessible medium as defined in claim 15, wherein the historical performance value is associated with the first function executing on a plurality of network nodes.
25. A machine accessible medium as defined in claim 15, wherein the first performance data is collected during runtime.
26. A machine accessible medium as defined in claim 15, wherein comparing the difference value to the threshold value is performed during runtime.
27. A machine accessible medium as defined in claim 15, wherein knowledge of operation of other application processes is not used in generating the difference value.
US11/618,350 2006-12-29 2006-12-29 Methods and apparatus to collect runtime trace data associated with application performance Active 2030-08-05 US8141051B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/618,350 US8141051B2 (en) 2006-12-29 2006-12-29 Methods and apparatus to collect runtime trace data associated with application performance

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/618,350 US8141051B2 (en) 2006-12-29 2006-12-29 Methods and apparatus to collect runtime trace data associated with application performance

Publications (2)

Publication Number Publication Date
US20080162272A1 true US20080162272A1 (en) 2008-07-03
US8141051B2 US8141051B2 (en) 2012-03-20

Family

ID=39585285

Family Applications (1)

Application Number Title Priority Date Filing Date
US11/618,350 Active 2030-08-05 US8141051B2 (en) 2006-12-29 2006-12-29 Methods and apparatus to collect runtime trace data associated with application performance

Country Status (1)

Country Link
US (1) US8141051B2 (en)

Cited By (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090164980A1 (en) * 2007-12-21 2009-06-25 Albert Rossmann Cluster Application Trace
US20100251160A1 (en) * 2009-03-26 2010-09-30 Microsoft Corporation Measurement and reporting of performance event rates
US20100281308A1 (en) * 2009-04-29 2010-11-04 Freescale Semiconductor, Inc. Trace messaging device and methods thereof
US20100281304A1 (en) * 2009-04-29 2010-11-04 Moyer William C Debug messaging with selective timestamp control
US20110145814A1 (en) * 2009-12-10 2011-06-16 Empire Technology Development Llc Hypervisor driver management in virtual machine environments
US20110219270A1 (en) * 2010-03-03 2011-09-08 Fujitsu Limited Method and apparatus for logging system characteristic data
US20120124428A1 (en) * 2010-11-17 2012-05-17 Zeng Thomas M Method and system for testing software on programmable devices
US20120143795A1 (en) * 2010-12-03 2012-06-07 Microsoft Corporation Cross-trace scalable issue detection and clustering
US20120324290A1 (en) * 2011-06-20 2012-12-20 International Business Machines Corporation Key Based Cluster Log Coalescing
CN102999314A (en) * 2011-09-23 2013-03-27 微软公司 Immediate delay tracker tool
US20130159790A1 (en) * 2011-12-19 2013-06-20 Fujitsu Limited Failure detection method and failure detection system
US20140013306A1 (en) * 2013-04-20 2014-01-09 Concurix Corporation Computer Load Generator Marketplace
US20140019985A1 (en) * 2013-01-25 2014-01-16 Concurix Corporation Parallel Tracing for Performance and Detail
US20140324646A1 (en) * 2007-11-09 2014-10-30 Ebay Inc. Transaction data representations using an adjacency matrix
US20140325062A1 (en) * 2007-11-27 2014-10-30 Microsoft Corporation Data-driven profiling for distributed applications
US8886888B2 (en) * 2013-01-29 2014-11-11 Hitachi, Ltd. Storage system
US20140344556A1 (en) * 2013-05-15 2014-11-20 Nvidia Corporation Interleaved instruction debugger
US20150127994A1 (en) * 2013-11-05 2015-05-07 Texas Instruments Incorporated Trace Data Export to Remote Memory Using Remotely Generated Reads
US20150127993A1 (en) * 2013-11-05 2015-05-07 Texas Instruments Incorporated Trace Data Export to Remote Memory Using Memory Mapped Write Transactions
US9135015B1 (en) 2014-12-25 2015-09-15 Centipede Semi Ltd. Run-time code parallelization with monitoring of repetitive instruction sequences during branch mis-prediction
US9208066B1 (en) * 2015-03-04 2015-12-08 Centipede Semi Ltd. Run-time code parallelization with approximate monitoring of instruction sequences
US20160140019A1 (en) * 2014-11-19 2016-05-19 International Business Machines Corporation Event summary mode for tracing systems
US20160140014A1 (en) * 2014-11-14 2016-05-19 Cavium, Inc. Apparatus and method for distributed instruction trace in a processor system
US9348595B1 (en) 2014-12-22 2016-05-24 Centipede Semi Ltd. Run-time code parallelization with continuous monitoring of repetitive instruction sequences
US20160306670A1 (en) * 2015-04-15 2016-10-20 International Business Machines Corporation Dynamically choosing data to collect in a system
US9519568B2 (en) 2012-12-31 2016-12-13 Nvidia Corporation System and method for debugging an executing general-purpose computing on graphics processing units (GPGPU) application
US9715390B2 (en) 2015-04-19 2017-07-25 Centipede Semi Ltd. Run-time parallelization of code execution based on an approximate register-access specification
WO2018236476A1 (en) * 2017-06-23 2018-12-27 New Relic, Inc. Adaptive application performance analysis
US10241884B2 (en) * 2016-02-09 2019-03-26 Fujitsu Limited Information processing apparatus and method for collecting performance data
US10296346B2 (en) 2015-03-31 2019-05-21 Centipede Semi Ltd. Parallelized execution of instruction sequences based on pre-monitoring
US10296350B2 (en) 2015-03-31 2019-05-21 Centipede Semi Ltd. Parallelized execution of instruction sequences
US10402306B2 (en) * 2016-05-17 2019-09-03 Futurewei Technologies, Inc. Parallel tracing
US10466986B2 (en) * 2018-03-30 2019-11-05 Oracle International Corporation Optimized recompilation using hardware tracing
CN110431530A (en) * 2017-03-23 2019-11-08 微软技术许可有限责任公司 Measurement and the expected of log are collected
US10990366B2 (en) * 2017-10-06 2021-04-27 Chicago Mercantile Exchange Inc. Dynamic tracer message logging based on bottleneck detection
US11061801B1 (en) * 2019-12-23 2021-07-13 X Development Llc Data logger for a real-time robotic control system
US11409634B2 (en) * 2019-11-14 2022-08-09 Cisco Technology, Inc. Retroactive tracing in a distributed system
US11494287B2 (en) * 2018-03-30 2022-11-08 Oracle International Corporation Scalable execution tracing for large program codebases

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8473924B1 (en) * 2008-12-19 2013-06-25 Symantec Corporation Enabling efficient use of an endpoint
US8793694B2 (en) * 2009-02-26 2014-07-29 International Business Machines Corporation Policy driven autonomic performance data collection
US8453123B2 (en) 2010-07-16 2013-05-28 International Business Machines Corporation Time-based trace facility
US8502710B2 (en) * 2011-09-13 2013-08-06 BlueStripe Software, Inc. Methods and computer program products for providing a compressed circular buffer for efficient storage of network performance data
US9519564B1 (en) * 2012-09-28 2016-12-13 EMC IP Holding Company LLC Trace saving intervals
US10795802B2 (en) 2015-11-19 2020-10-06 Honeywell International Inc. Systems and methods for a real time embedded trace
US10445136B1 (en) * 2017-06-01 2019-10-15 Amazon Technologies, Inc. Randomized subrequest selection using request-specific nonce
US10740219B2 (en) * 2018-04-27 2020-08-11 Workman Nydegger Selectively tracing portions of computer process execution
US10747645B2 (en) * 2018-04-27 2020-08-18 Microsoft Technology Licensing, Llc Selectively tracing portions of computer process execution

Citations (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5450349A (en) * 1992-10-27 1995-09-12 Digital Equipment Corporation Computer system performance evaluation system and method
US20010042172A1 (en) * 2000-02-09 2001-11-15 Evelyn Duesterwald Secondary trace build from a cache of translations in a caching dynamic translator
US6338159B1 (en) * 1997-12-12 2002-01-08 International Business Machines Corporation System and method for providing trace information
US20020049801A1 (en) * 2000-05-19 2002-04-25 International Business Machines Corporation Remote tracing of data processing nodes in an asynchronous messaging network
US20020066081A1 (en) * 2000-02-09 2002-05-30 Evelyn Duesterwald Speculative caching scheme for fast emulation through statically predicted execution traces in a caching dynamic translator
US20020087949A1 (en) * 2000-03-03 2002-07-04 Valery Golender System and method for software diagnostics using a combination of visual and dynamic tracing
US6470492B2 (en) * 1999-05-14 2002-10-22 Hewlett-Packard Company Low overhead speculative selection of hot traces in a caching dynamic translator
US20040068560A1 (en) * 2002-10-02 2004-04-08 Yossi Oulu System and methods for monitoring application server performance
US6728949B1 (en) * 1997-12-12 2004-04-27 International Business Machines Corporation Method and system for periodic trace sampling using a mask to qualify trace data
US6728955B1 (en) * 1999-11-05 2004-04-27 International Business Machines Corporation Processing events during profiling of an instrumented program
US20040210877A1 (en) * 2001-03-14 2004-10-21 International Business Machines Corporation Method of providing open access to application profiling data
US6901582B1 (en) * 1999-11-24 2005-05-31 Quest Software, Inc. Monitoring system for monitoring the performance of an application
US7086064B1 (en) * 2000-05-27 2006-08-01 International Business Machines Corporation Performance profiling tool
US7096249B2 (en) * 2002-03-29 2006-08-22 Intel Corporation Method and system for distributing applications
US20060212242A1 (en) * 2005-03-17 2006-09-21 Levine Frank E Event tracing with time stamp compression and history buffer based compression
US7228534B2 (en) * 2003-06-14 2007-06-05 Intel Corporation Optimizing performance of a program or a computer system
US20080127120A1 (en) * 2006-10-31 2008-05-29 Sun Microsystems, Inc. Method and apparatus for identifying instructions associated with execution events in a data space profiler
US20080155339A1 (en) * 2006-10-25 2008-06-26 Gary S Lowe Automated tracing
US7421681B2 (en) * 2003-10-09 2008-09-02 International Business Machines Corporation Method and system for autonomic monitoring of semaphore operation in an application
US7644142B2 (en) * 2006-05-04 2010-01-05 Intel Corporation Methods and apparatus to perform process placement for distributed applications

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6850920B2 (en) 2001-05-01 2005-02-01 The Regents Of The University Of California Performance analysis of distributed applications using automatic classification of communication inefficiencies

Patent Citations (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5450349A (en) * 1992-10-27 1995-09-12 Digital Equipment Corporation Computer system performance evaluation system and method
US6338159B1 (en) * 1997-12-12 2002-01-08 International Business Machines Corporation System and method for providing trace information
US6728949B1 (en) * 1997-12-12 2004-04-27 International Business Machines Corporation Method and system for periodic trace sampling using a mask to qualify trace data
US6470492B2 (en) * 1999-05-14 2002-10-22 Hewlett-Packard Company Low overhead speculative selection of hot traces in a caching dynamic translator
US6728955B1 (en) * 1999-11-05 2004-04-27 International Business Machines Corporation Processing events during profiling of an instrumented program
US6901582B1 (en) * 1999-11-24 2005-05-31 Quest Software, Inc. Monitoring system for monitoring the performance of an application
US20020066081A1 (en) * 2000-02-09 2002-05-30 Evelyn Duesterwald Speculative caching scheme for fast emulation through statically predicted execution traces in a caching dynamic translator
US6785801B2 (en) * 2000-02-09 2004-08-31 Hewlett-Packard Development Company, L.P. Secondary trace build from a cache of translations in a caching dynamic translator
US20010042172A1 (en) * 2000-02-09 2001-11-15 Evelyn Duesterwald Secondary trace build from a cache of translations in a caching dynamic translator
US20020087949A1 (en) * 2000-03-03 2002-07-04 Valery Golender System and method for software diagnostics using a combination of visual and dynamic tracing
US20020049801A1 (en) * 2000-05-19 2002-04-25 International Business Machines Corporation Remote tracing of data processing nodes in an asynchronous messaging network
US6836881B2 (en) * 2000-05-19 2004-12-28 International Business Machines Corporation Remote tracing of data processing nodes in an asynchronous messaging network
US7086064B1 (en) * 2000-05-27 2006-08-01 International Business Machines Corporation Performance profiling tool
US20040210877A1 (en) * 2001-03-14 2004-10-21 International Business Machines Corporation Method of providing open access to application profiling data
US7007269B2 (en) * 2001-03-14 2006-02-28 International Business Machines Corporation Method of providing open access to application profiling data
US7096249B2 (en) * 2002-03-29 2006-08-22 Intel Corporation Method and system for distributing applications
US6792460B2 (en) * 2002-10-02 2004-09-14 Mercury Interactive Corporation System and methods for monitoring application server performance
US20040068560A1 (en) * 2002-10-02 2004-04-08 Yossi Oulu System and methods for monitoring application server performance
US7228534B2 (en) * 2003-06-14 2007-06-05 Intel Corporation Optimizing performance of a program or a computer system
US7421681B2 (en) * 2003-10-09 2008-09-02 International Business Machines Corporation Method and system for autonomic monitoring of semaphore operation in an application
US20060212242A1 (en) * 2005-03-17 2006-09-21 Levine Frank E Event tracing with time stamp compression and history buffer based compression
US7369954B2 (en) * 2005-03-17 2008-05-06 International Business Machines Corporation Event tracing with time stamp compression and history buffer based compression
US7644142B2 (en) * 2006-05-04 2010-01-05 Intel Corporation Methods and apparatus to perform process placement for distributed applications
US20080155339A1 (en) * 2006-10-25 2008-06-26 Gary S Lowe Automated tracing
US20080127120A1 (en) * 2006-10-31 2008-05-29 Sun Microsystems, Inc. Method and apparatus for identifying instructions associated with execution events in a data space profiler

Cited By (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140324646A1 (en) * 2007-11-09 2014-10-30 Ebay Inc. Transaction data representations using an adjacency matrix
US20140325062A1 (en) * 2007-11-27 2014-10-30 Microsoft Corporation Data-driven profiling for distributed applications
US10050848B2 (en) * 2007-11-27 2018-08-14 Microsoft Technology Licensing, Llc Data-driven profiling for distributed applications
US20090164980A1 (en) * 2007-12-21 2009-06-25 Albert Rossmann Cluster Application Trace
US8572581B2 (en) * 2009-03-26 2013-10-29 Microsoft Corporation Measurement and reporting of performance event rates
US20100251160A1 (en) * 2009-03-26 2010-09-30 Microsoft Corporation Measurement and reporting of performance event rates
US20100281308A1 (en) * 2009-04-29 2010-11-04 Freescale Semiconductor, Inc. Trace messaging device and methods thereof
US20100281304A1 (en) * 2009-04-29 2010-11-04 Moyer William C Debug messaging with selective timestamp control
US8201025B2 (en) 2009-04-29 2012-06-12 Freescale Semiconductor, Inc. Debug messaging with selective timestamp control
US8286032B2 (en) * 2009-04-29 2012-10-09 Freescale Semiconductor, Inc. Trace messaging device and methods thereof
US20110145814A1 (en) * 2009-12-10 2011-06-16 Empire Technology Development Llc Hypervisor driver management in virtual machine environments
US8327358B2 (en) * 2009-12-10 2012-12-04 Empire Technology Development Llc Hypervisor driver management in virtual machine environments
US8381042B2 (en) * 2010-03-03 2013-02-19 Fujitsu Limited Method and apparatus for logging system characteristic data
US20110219270A1 (en) * 2010-03-03 2011-09-08 Fujitsu Limited Method and apparatus for logging system characteristic data
US20120124428A1 (en) * 2010-11-17 2012-05-17 Zeng Thomas M Method and system for testing software on programmable devices
US8538897B2 (en) * 2010-12-03 2013-09-17 Microsoft Corporation Cross-trace scalable issue detection and clustering
US20120143795A1 (en) * 2010-12-03 2012-06-07 Microsoft Corporation Cross-trace scalable issue detection and clustering
US20120324290A1 (en) * 2011-06-20 2012-12-20 International Business Machines Corporation Key Based Cluster Log Coalescing
US8683268B2 (en) * 2011-06-20 2014-03-25 International Business Machines Corporation Key based cluster log coalescing
CN102999314A (en) * 2011-09-23 2013-03-27 微软公司 Immediate delay tracker tool
US20130081001A1 (en) * 2011-09-23 2013-03-28 Microsoft Corporation Immediate delay tracker tool
US20130159790A1 (en) * 2011-12-19 2013-06-20 Fujitsu Limited Failure detection method and failure detection system
US9141452B2 (en) * 2011-12-19 2015-09-22 Fujitsu Limited Failure detection method and failure detection system
US9519568B2 (en) 2012-12-31 2016-12-13 Nvidia Corporation System and method for debugging an executing general-purpose computing on graphics processing units (GPGPU) application
CN105283849A (en) * 2013-01-25 2016-01-27 肯赛里克斯公司 Parallel tracing for performance and detail
US9207969B2 (en) * 2013-01-25 2015-12-08 Microsoft Technology Licensing, Llc Parallel tracing for performance and detail
US20140019985A1 (en) * 2013-01-25 2014-01-16 Concurix Corporation Parallel Tracing for Performance and Detail
US8886888B2 (en) * 2013-01-29 2014-11-11 Hitachi, Ltd. Storage system
US20140013306A1 (en) * 2013-04-20 2014-01-09 Concurix Corporation Computer Load Generator Marketplace
US20140344556A1 (en) * 2013-05-15 2014-11-20 Nvidia Corporation Interleaved instruction debugger
US9471456B2 (en) * 2013-05-15 2016-10-18 Nvidia Corporation Interleaved instruction debugger
US20150127994A1 (en) * 2013-11-05 2015-05-07 Texas Instruments Incorporated Trace Data Export to Remote Memory Using Remotely Generated Reads
US20150127993A1 (en) * 2013-11-05 2015-05-07 Texas Instruments Incorporated Trace Data Export to Remote Memory Using Memory Mapped Write Transactions
US9684583B2 (en) * 2013-11-05 2017-06-20 Texas Instruments Incorporated Trace data export to remote memory using memory mapped write transactions
US9639447B2 (en) * 2013-11-05 2017-05-02 Texas Instruments Incorporated Trace data export to remote memory using remotely generated reads
US20160140014A1 (en) * 2014-11-14 2016-05-19 Cavium, Inc. Apparatus and method for distributed instruction trace in a processor system
US9703669B2 (en) * 2014-11-14 2017-07-11 Cavium, Inc. Apparatus and method for distributed instruction trace in a processor system
US20160140019A1 (en) * 2014-11-19 2016-05-19 International Business Machines Corporation Event summary mode for tracing systems
US20160139961A1 (en) * 2014-11-19 2016-05-19 International Business Machines Corporation Event summary mode for tracing systems
US9348595B1 (en) 2014-12-22 2016-05-24 Centipede Semi Ltd. Run-time code parallelization with continuous monitoring of repetitive instruction sequences
US9135015B1 (en) 2014-12-25 2015-09-15 Centipede Semi Ltd. Run-time code parallelization with monitoring of repetitive instruction sequences during branch mis-prediction
US9208066B1 (en) * 2015-03-04 2015-12-08 Centipede Semi Ltd. Run-time code parallelization with approximate monitoring of instruction sequences
US10296346B2 (en) 2015-03-31 2019-05-21 Centipede Semi Ltd. Parallelized execution of instruction sequences based on pre-monitoring
US10296350B2 (en) 2015-03-31 2019-05-21 Centipede Semi Ltd. Parallelized execution of instruction sequences
US20160306669A1 (en) * 2015-04-15 2016-10-20 International Business Machines Corporation Dynamically choosing data to collect in a system
US20160306670A1 (en) * 2015-04-15 2016-10-20 International Business Machines Corporation Dynamically choosing data to collect in a system
US9852042B2 (en) * 2015-04-15 2017-12-26 International Business Machines Corporation Dynamically choosing data to collect in a system
US9864670B2 (en) * 2015-04-15 2018-01-09 International Business Machines Corporation Dynamically choosing data to collect in a system
US9715390B2 (en) 2015-04-19 2017-07-25 Centipede Semi Ltd. Run-time parallelization of code execution based on an approximate register-access specification
US10241884B2 (en) * 2016-02-09 2019-03-26 Fujitsu Limited Information processing apparatus and method for collecting performance data
US10402306B2 (en) * 2016-05-17 2019-09-03 Futurewei Technologies, Inc. Parallel tracing
CN110431530A (en) * 2017-03-23 2019-11-08 微软技术许可有限责任公司 Measurement and the expected of log are collected
WO2018236476A1 (en) * 2017-06-23 2018-12-27 New Relic, Inc. Adaptive application performance analysis
US10289520B2 (en) 2017-06-23 2019-05-14 New Relic, Inc. Adaptive application performance analysis
US10990366B2 (en) * 2017-10-06 2021-04-27 Chicago Mercantile Exchange Inc. Dynamic tracer message logging based on bottleneck detection
US11520569B2 (en) 2017-10-06 2022-12-06 Chicago Mercantile Exchange Inc. Dynamic tracer message logging based on bottleneck detection
US10466986B2 (en) * 2018-03-30 2019-11-05 Oracle International Corporation Optimized recompilation using hardware tracing
US11347617B2 (en) 2018-03-30 2022-05-31 Oracle International Corporation Optimized recompilation using hardware tracing
US11494287B2 (en) * 2018-03-30 2022-11-08 Oracle International Corporation Scalable execution tracing for large program codebases
US11816014B2 (en) 2018-03-30 2023-11-14 Oracle International Corporation Optimized recompilation using hardware tracing
US11409634B2 (en) * 2019-11-14 2022-08-09 Cisco Technology, Inc. Retroactive tracing in a distributed system
US11061801B1 (en) * 2019-12-23 2021-07-13 X Development Llc Data logger for a real-time robotic control system
US11550693B2 (en) 2019-12-23 2023-01-10 Intrinsic Innovation Llc Data logger for a real-time robotic control system

Also Published As

Publication number Publication date
US8141051B2 (en) 2012-03-20

Similar Documents

Publication Publication Date Title
US8141051B2 (en) Methods and apparatus to collect runtime trace data associated with application performance
Van Dongen et al. Evaluation of stream processing frameworks
US7882160B2 (en) Low latency optimization for generational garbage collection
US7904894B2 (en) Automatically optimize performance of package execution
US8423972B2 (en) Collecting profile-specified performance data on a multithreaded data processing system
US7594128B2 (en) Systems and methods to determine processor utilization
US8402463B2 (en) Hardware threads processor core utilization
US8949642B2 (en) Method for dynamically distributing one or more services in a network comprising of a plurality of computers by deriving a resource capacity required based on a past chronological progression of a resource demand
US9582284B2 (en) Performance of processors is improved by limiting number of branch prediction levels
Zacheilas et al. Maximizing determinism in stream processing under latency constraints
KR20020097156A (en) Method of and system for determining a best-case response time of a periodic task
US8364829B2 (en) System and method for ascribing resource consumption to activity in a causal path of a node of a distributed computing system
US11119788B2 (en) Serialization floors and deadline driven control for performance optimization of asymmetric multiprocessor systems
US9176783B2 (en) Idle transitions sampling with execution context
Bai et al. Analyzing software rejuvenation techniques in a virtualized system: Service provider and user views
Fu et al. FARMS: Efficient mapreduce speculation for failure recovery in short jobs
Endo et al. Improving interactive performance using TIPME
Çavdar et al. Quantifying the brown side of priority schedulers: Lessons from big clusters
US20080271041A1 (en) Program processing method and information processing apparatus
US7698705B1 (en) Method and system for managing CPU time consumption
Rao et al. Online measurement of the capacity of multi-tier websites using hardware performance counters
Huh et al. Accommodating QoS prediction in an adaptive resource management framework
US10216606B1 (en) Data center management systems and methods for compute density efficiency measurements
Betti et al. A global operating system for HPC clusters
Toussaint et al. Chasing Linux jitter sources for uncompressed video

Legal Events

Date Code Title Description
AS Assignment

Owner name: INTEL CORPORATION, A DELAWARE CORPORATION, CALIFOR

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:HUANG, ERIC JIAN;CHEN, HU;CHEN, WENGUANG;AND OTHERS;REEL/FRAME:021814/0052;SIGNING DATES FROM 20061228 TO 20061230

Owner name: INTEL CORPORATION, A DELAWARE CORPORATION, CALIFOR

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:HUANG, ERIC JIAN;CHEN, HU;CHEN, WENGUANG;AND OTHERS;SIGNING DATES FROM 20061228 TO 20061230;REEL/FRAME:021814/0052

STCF Information on status: patent grant

Free format text: PATENTED CASE

FPAY Fee payment

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8

FEPP Fee payment procedure

Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY