Computer programs produce many information records about a program's execution, including procedure call stacks, procedure call-times, events and exceptions, as well as log entries and performance metrics. A visualization of the information records may provide the information in a digestible manner to users such as software performance engineers.
The following detailed description references the drawings, wherein:
Computer programs produce many information records about a program's execution, including procedure call stacks, procedure call-times, events and exceptions, as well as log entries and performance metrics. A visualization of the information records may provide the information in a digestible manner to users such as software performance engineers.
With the increased complexity of computer programs, many programs may create a vast amount of data. This vast amount of program transaction data may present too much information for some customers to digest or even for some manufacturers, suppliers, distributers or other related parties of the item to view and analyze in a meaningful way.
Examples disclosed herein provide a tool that visualizes various aspects of computer program transactions. The examples disclosed herein enable obtaining a transaction record of a computer program. The transaction record may include a call stack of a plurality of procedure calls and a self-time of each procedure call. The examples enable generating a graphical representation of the transaction record having a plurality of two-dimensional shapes aligned with a first axis and a second axis. Each two-dimensional shape represents a procedure call, and a first dimension of each shape represents a call-time of each procedure call while a second dimension of each shape represents the self-time of each procedure call. The shapes are positioned in the graphical representation to reflect relative positions within the call stack. In this manner, examples may provide various program transaction data without overwhelming a user.
Referring now to the drawings,
The various components (e.g., components 129, 130, or 140) depicted in
Computer program transaction visualizations system 110 may comprise an obtain transaction record engine 121 and graphical representation engine 122. In some examples, computer program transaction visualizations system 110 may include additional or alternative engines. The term “engine”, as used herein, may refer to a combination of hardware and programming that performs a designated function. For example, the hardware of each engine, for example, may include one or both of a processor and a machine-readable storage medium, while the programming is instructions or code stored on the machine-readable storage medium and executable by the processor to perform the designated function. In addition or as an alternative, each engine may include one or more hardware devices including electronic circuitry for implementing the functionality described below.
Obtain transaction record engine 121 may obtain a transaction record of a computer program. The transaction record may include a call stack of a plurality of procedure calls and a self-time of each procedure call of the plurality of procedure calls. The computer program may refer to any computer application or collection of instructions executable by a computer.
A transaction record may be data associated with the execution of a transaction. A transaction may be an operation of a computer program. Each transaction may include a plurality of procedures, which may be a section of a computer program that performs a specific task. Procedure may be used interchangeably with routine, subroutine, and function. In some examples, a computer program may be a single thread application, which may generate a single trail of procedures for a transaction record of a transaction of the program.
A transaction record may include a call stack of a plurality of procedures. A call stack may be a stack data structure that stores information about the procedures of a computer program. Call stack may be used interchangeably with execution stack, control stack, call-time stack, or machine-stack. A call stack may be used for various related purposes, but a primary purpose of a call stack is to track the start and finish of procedures as well as the call-times of procedures. For example, procedures of a transactions may be nested in a stack structure, where a parent procedure higher in the stack may call upon execution of a child procedure. If, for example, a procedure “DrawSquare” calls upon a procedure “DrawLine” from four different places, the call stack of this transaction maintains where “DrawLine” is to return when its execution is completed.
A transaction record may include a self-time of each procedure call of a plurality of procedure calls. Self-time may be a duration during which a particular procedure is the active procedure—that is when the particular procedure has been called but is yet to complete execution and there is not execution of any child procedures (procedures branched from the particular procedure on the call stack). Self-time of a procedure may be expressed either as absolute time in time units or relative time to other procedures or both.
In some examples, the transaction record may further include an event indicator. An event indicator may indicate a particular procedure call that caused the event. Furthermore, an event indicator may indicate a particular point in a call-time of the particular procedure call when the event occurred. The time indicated by the event indicator may be absolute time or a relative runtime in relation to the execution of the transaction. Example events may include exceptions, faults, anomalies, log entries, or user-defined events such as when a particular metric meets a threshold. As an example, an event may be triggered when computing resources reach a certain limit or when a bug is detected in the procedure.
Graphical representation engine 122 may generate a graphical representation of a transaction record. For example, a graphical representation of a transaction record may be displayed via a user interface on a client computing device (e.g., client computing device 140A. Example user interfaces for displaying a graphical representation of a transaction record are illustrated in
A graphical representation of a transaction record may include a plurality of two-dimensional shapes. The plurality of two-dimensional shapes is illustrated in graphical representation 500 of
Each two-dimensional shape may represent a procedure call of a plurality of procedure calls in a transaction record. For example, in
Each two-dimensional shape representing a procedure call may have a first dimension that represents a call-time of each procedure call. For example, in the example of
For example, a first procedure call represented by a first elliptical arc 531 may begin execution at point 511 of the horizontal call-time axis. The first procedure call may terminate at point 511′, and the time in between the two points may be the call-time of the first procedure call. For further examples, the begin execution points of the procedure calls represented by elliptical arc 532A, 533A, 534A, 532B, 533B, and 534B are represented by points 512A, 513A, 514A, 512B, 513B, and 514B, respectively. The termination points of these procedure calls are omitted from
Furthermore, each two-dimensional shape representing a procedure call may have a second dimension that represents a self-time of each procedure call. For example, in the example of
Moreover, a plurality of two-dimensional shapes may be positioned within a graphical representation to reflect relative positions within a call stack. For instance, for the example of
In the example of
Furthermore in some examples, different two-dimensional shapes representing procedure calls associated with different functions may be shown with different colors or shades. Relatedly, shapes representing procedure calls associated with the same function may be shown with the same colors or shades. This is illustrated in
In some examples, a graphical representation of a transaction record may include an event indicator. The event indicator may be marked along a first axis of the graphical representation, where the event indicator indicates an occurrence of an event. As discussed previously, events may include exceptions, faults, anomalies, log entries, or user-defined events such as when a particular metric meets a threshold. As an example, an event may be triggered when computing resources hit a limit or when a bug is detected in the procedure.
An event indicator is illustrated in graphical representation 600 of
Furthermore, in some examples, a graphical representation of a transaction record may include a log entry of the plurality of procedure calls. A log entry may be a record or list of activities, functions, results, or other data created as a result of the execution of the computer program transaction. In response to the selection, by a user, of a portion of a two-dimensional shape representing a portion of a particular procedure call, the graphical representation may show a portion of the log entry corresponding to the selected portion of the particular procedure call.
This is illustrated with respect to graphical representation 700 of
Additionally or as an alternative, a graphical representation of a transaction record may, in some examples, include a graph overlaid on the plurality of two-dimensional shapes. The graph may represent a metric over time, and the graph and the plurality of two-dimensional shapes may correlate with respect to the first axis. The metric over time may include various examples, including, for example, processor performance over time, memory usage, and equipment temperature to name a few.
This is illustrated with respect to graphical representation 800 of
In performing their respective functions, engines 121 and 122 may access data storage 129 and/or other suitable database(s). Data storage 129 may represent any memory accessible to computer program transaction visualizations system 110 that can be used to store and retrieve data. Data storage 129 and/or other database may comprise random access memory (RAM), read-only memory (ROM), electrically-erasable programmable read-only memory (EEPROM), cache memory, floppy disks, hard disks, optical disks, tapes, solid state drives, flash drives, portable compact disks, and/or other storage media for storing computer-executable instructions and/or data. Computer program transaction visualizations system 110 may access data storage 129 locally or remotely via network 50 or other networks.
Data storage 129 may include a database to organize and store data. Database 129 may be, include, or interface to, for example, relational database. Other databases, including file-based (e.g., comma or tab separated files), or query formats, platforms, or resources such as OLAP (On Line Analytical Processing), SQL (Structured Query Language), a SAN (storage area network), or others may also be used, incorporated, or accessed. The database may reside in a single or multiple physical device(s) and in a single or multiple physical location(s). The database may store a plurality of types of data and/or files and associated data or file description, administrative information, or any other data.
In the foregoing discussion, engines 121 and 122 were described as combinations of hardware and programming. Engines 121 and 122 may be implemented in a number of fashions. Referring to
In
Processor 210 may be at least one central processing unit (CPU), microprocessor, and/or other hardware device suitable for retrieval and execution of instructions stored in machine-readable storage medium 220. Processor 210 may fetch, decode, and execute program instructions 221, 222, and/or other instructions. As an alternative or in addition to retrieving and executing instructions, processor 210 may include at least one electronic circuit comprising a number of electronic components for performing the functionality of at least one of instructions 221, 222, and/or other instructions.
Machine-readable storage medium 220 may be any electronic, magnetic, optical, or other physical storage device that contains or stores executable instructions. In some implementations, machine-readable storage medium 220 may be a non-transitory storage medium, where the term “non-transitory” does not encompass transitory propagating signals. Machine-readable storage medium 220 may be implemented in a single device or distributed across devices. Likewise, processor 210 may represent any number of processors capable of executing instructions stored by machine-readable storage medium 220. Processor 210 may be integrated in a single device or distributed across devices. Further, machine-readable storage medium 220 may be fully or partially integrated in the same device as processor 210, or it may be separate but accessible to that device and processor 210.
In one example, the program instructions may be part of an installation package that when installed can be executed by processor 210 to implement computer program transaction visualizations system 110. In this case, machine-readable storage medium 220 may be a portable medium such as a floppy disk, CD, DVD, or flash drive or a memory maintained by a server from which the installation package can be downloaded and installed. In another example, the program instructions may be part of an application or applications already installed. Here, machine-readable storage medium 220 may include a hard disk, optical disk, tapes, solid state drives, RAM, ROM, EEPROM, or the like.
In an operation 410, method 400 may include obtaining a transaction record of a computer program. As explained in examples herein, a transaction record may include a call stack of a plurality of procedure calls, a self-time of each procedure call of the plurality of procedure calls, and an event indicator indicating the occurrence of an event. Referring to
In an operation 420, method 400 may include generating a graphical representation of the transaction record. A graphical representation of the transaction record may, among other things, include a plurality of two-dimensional shapes, such as elliptical arcs, that represent a plurality of procedure calls of a program transaction, and call-times and self-times of the procedure calls. Referring to
In an operation 430, method 400 may include receiving an identified event. A event may include exceptions, faults, anomalies, log entries, or user-defined events such as when a particular metric meets a threshold. As an example, an event may be triggered when computing resources hit a limit or when a bug is detected in the procedure. Referring to
In an operation 440, method 400 may include marking an event indicator along the first axis of the graphical representation. An event indicator may be marked along a first axis to indicate an occurrence of an event. For instance, an event indicator may indicate when during the call-time of a transaction that an event occurred. Furthermore, an event indicator may indicate a particular procedure call of a plurality of procedure calls that caused the events. Referring to
In an operation 450, method 400 may include receiving data of a metric over time. The metric over time may include various examples, including, for example, processor performance over time, memory usage, and equipment temperature to name a few. Referring to
In an operation 460, method 400 may include overlaying a graph representing the metric over time on the plurality of two-dimensional shapes. The graph may indicate a metric over time that is correlated with the shapes representing the execution of procedure calls. Referring to
In an operation 470, method 400 may include receiving a selection of a portion of a particular procedure call of a plurality procedure calls. For example, a user, may select a portion of a two-dimensional shape representing a portion of a particular procedure call to view detailed information about the selected portion. Referring to
In an operation 480, method 400 may include showing a portion of a log entry of the plurality of procedure calls. For example, a portion of the log entry may be shown that correlates to the selected portion of the particular procedure calls received in operation 470. Referring to
Furthermore, referring back to
The foregoing disclosure describes a number of example embodiments for generating recommended inputs for changing an outcome of a predictive model. The disclosed examples may include systems, devices, computer-readable storage media, and methods for generating recommended inputs. For purposes of explanation, certain examples are described with reference to the components illustrated in
Further, the sequence of operations described in connection with
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting. As used herein, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. The term “plurality,” as used herein, is defined as two or more than two. The term “another,” as used herein, is defined as at least a second or more. The term “coupled,” as used herein, is defined as connected, whether directly without any intervening elements or indirectly with at least one intervening elements, unless otherwise indicated. Two elements can be coupled mechanically, electrically, or communicatively linked through a communication channel, pathway, network, or system. The term “and/or” as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. It will also be understood that, although the terms first, second, third, etc. may be used herein to describe various elements, these elements should not be limited by these terms, as these terms are only used to distinguish one element from another unless stated otherwise or the context indicates otherwise. As used herein, the term “includes” means includes but not limited to, the term “including” means including but not limited to. The term “based on” means based at least in part on.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2016/018382 | 2/18/2016 | WO | 00 |
Publishing Document | Publishing Date | Country | Kind |
---|---|---|---|
WO2017/142535 | 8/24/2017 | WO | A |
Number | Name | Date | Kind |
---|---|---|---|
5794047 | Meier | Aug 1998 | A |
6014514 | Sistare | Jan 2000 | A |
6282701 | Wygodny et al. | Aug 2001 | B1 |
7995062 | Zhang | Aug 2011 | B2 |
8438427 | Beck et al. | May 2013 | B2 |
9146836 | Rapp et al. | Sep 2015 | B2 |
20040075690 | Cirne | Apr 2004 | A1 |
20080209406 | O'Callahan | Aug 2008 | A1 |
20100235815 | Maybee | Sep 2010 | A1 |
20120137273 | Meijler et al. | May 2012 | A1 |
20120260236 | Basak et al. | Oct 2012 | A1 |
20140282418 | Wood et al. | Sep 2014 | A1 |
20150293761 | Rabin | Oct 2015 | A1 |
Entry |
---|
International Search Report & Written Opinion received in PCT Application No. PCT/US2016/018382, dated Nov. 16, 2016, 15 pages. |
Karam, G., Visualization Using Timelines, ResearchGate, Jan. 1994, 2 pages. |
Trumper, J. et al. “Understanding Complex Multithreaded Software Systems By Using Trace Visualization,” Proceedings of the 5th International Symposium on Software Visualization, ACM, 2010, 10 pages, available at https://www.cs.swarthmore.edu/˜bylvisa1/cs97/f13/Papers/p133-trumper.pdf. |
Diehl, S. et al., “Multivariate Graphs in Software Engineering,” (Research Paper), Feb. 18, 2014, 23 pages, available at http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.708.4465&rep=rep1&type=pdf. |
Trumper, J. et al., “Multiscale Visual Comparison of Execution Traces,” 2013 21st International Conference on Program Comprehension (ICPC), IEEE, 2013, 3 pages, available at http://ieeexplore.ieee.org/document/6613833/. |
Number | Date | Country | |
---|---|---|---|
20200356404 A1 | Nov 2020 | US |