Abstract:
The present invention extends to methods, systems, and computer program products for time-based navigation within resource utilization data. A computer system is configured to present resource utilization data representing performance of computer resources. The resource utilization data is displayed on a diagnostic data trace during the execution of the application. The user can select a desired time range and the resource utilization data within the time range will be displayed at other traces. The diagnostic data trace is still presented so that the user can understand the relation between the selected time range and the overall time length. Further, the user can modify the selected time range by change the extents of the selected time range using resizing tool. The resource utilization data within the modified selected time range, similarly, is also displayed along with the diagnostic data trace.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    Not Applicable. 
       BACKGROUND 
       [0002]    1. Background and Relevant Art 
         [0003]    Computer systems and related technology affect many aspects of society. Indeed, the computer system&#39;s ability to process information has transformed the way we live and work. Computer systems now commonly perform a host of tasks (e.g., word processing, scheduling, accounting, etc.) that prior to the advent of the computer system were performed manually. More recently, computer systems have been coupled to one another and to other electronic devices to form both wired and wireless computer networks over which the computer systems and other electronic devices can transfer electronic data. Accordingly, the performance of many computing tasks are distributed across a number of different computer systems and/or a number of different computing environments. 
         [0004]    During the development, software developers often monitor the hardware execution information of the relevant computer components in order to make sure that the application is working properly and/or to optimize the overall performance accordingly. Some tools for software developers provide a user interface and display the hardware execution information on a time axis. Specifically, the user interface can display the information within a time period chosen by the software developer. 
         [0005]    However, user interfaces for these types of tools can lack the ability to display the relation between the chosen time period and the overall time scale. As a result, it can be difficult to provide the software developer an intuitional way to understand the timing of a certain event during the overall computer performance. 
       BRIEF SUMMARY 
       [0006]    The present invention extends to methods, systems, and computer program products for time-based navigation within resource utilization data. A diagnostic data trace is displayed at a display device. The diagnostic data trace includes resource utilization data. A current visible time range is selected within the diagnostic data trace. Resource utilization data within the current visible time ranges is presented along with the diagnostic data trace at the display device. Each extent of the current visible time range has a resizing control displayed on the diagnostics data trace. 
         [0007]    The current visible time range is modified to create a new visible time range (e.g., in response to selection of the new visible time range). In some embodiments, at least one the extents of the current visible time range is changed to a corresponding extent of the new visible range. Resource utilization data within the new visible time range is displayed along with the diagnostic data trace at the display device. Each extent of the new visible time range has a resizing control displayed on the diagnostics data trace. 
         [0008]    This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. 
         [0009]    Additional features and advantages of the invention will be set forth in the description which follows, and in part will be obvious from the description, or may be learned by the practice of the invention. The features and advantages of the invention may be realized and obtained by means of the instruments and combinations particularly pointed out in the appended claims. These and other features of the present invention will become more fully apparent from the following description and appended claims, or may be learned by the practice of the invention as set forth hereinafter. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0010]    In order to describe the manner in which the above-recited and other advantages and features of the invention can be obtained, a more particular description of the invention briefly described above will be rendered by reference to specific embodiments thereof which are illustrated in the appended drawings. Understanding that these drawings depict only typical embodiments of the invention and are not therefore to be considered to be limiting of its scope, the invention will be described and explained with additional specificity and detail through the use of the accompanying drawings in which: 
           [0011]      FIG. 1  illustrates an example computer architecture that facilitates time-based navigation within resource utilization data; 
           [0012]      FIG. 2  illustrates a flow chart of an example method for time-based navigation within resource utilization data; 
           [0013]      FIG. 3  illustrates a screen shot of an example user interface that facilitates time-based navigation within resource utilization data; and 
           [0014]      FIG. 4  illustrates an example screen shot of the diagnostic data trace displayed with a selected time range. 
       
    
    
     DETAILED DESCRIPTION 
       [0015]    The present invention extends to methods, systems, and computer program products for time-based navigation within resource utilization data. 
         [0016]    A diagnostic data trace is displayed at a display device. The diagnostic data trace includes resource utilization data. A current visible time range is selected within the diagnostic data trace. Resource utilization data within the current visible time ranges is presented along with the diagnostic data trace at the display device. Each extent of the current visible time range has a resizing control displayed on the diagnostics data trace. 
         [0017]    The current visible time range is modified to create a new visible time range (e.g., in response to selection of the new visible time range). In some embodiments, at least one the extents of the current visible time range is changed to a corresponding extent of the new visible range. Resource utilization data within the new visible time range is displayed along with the diagnostic data trace at the display device. Each extent of the new visible time range has a resizing control displayed on the diagnostics data trace. 
         [0018]    Embodiments of the present invention may comprise or utilize a special purpose or general-purpose computer including computer hardware, such as, for example, one or more processors and system memory, as discussed in greater detail below. Embodiments within the scope of the present invention also include physical and other computer-readable media for carrying or storing computer-executable instructions and/or data structures. Such computer-readable media can be any available media that can be accessed by a general purpose or special purpose computer system. Computer-readable media that store computer-executable instructions are computer storage media (devices). Computer-readable media that carry computer-executable instructions are transmission media. Thus, by way of example, and not limitation, embodiments of the invention can comprise at least two distinctly different kinds of computer-readable media: computer storage media (devices) and transmission media. 
         [0019]    Computer storage media (devices) includes RAM, ROM, EEPROM, CD-ROM, solid state drives (“SSDs”) (e.g., based on RAM), Flash memory, phase-change memory (“PCM”), other types of memory, other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer. 
         [0020]    A “network” is defined as one or more data links that enable the transport of electronic data between computer systems and/or modules and/or other electronic devices. When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or a combination of hardwired or wireless) to a computer, the computer properly views the connection as a transmission medium. Transmissions media can include a network and/or data links which can be used to carry or desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer. Combinations of the above should also be included within the scope of computer-readable media. 
         [0021]    Further, upon reaching various computer system components, program code means in the form of computer-executable instructions or data structures can be transferred automatically from transmission media to computer storage media (devices) (or vice versa). For example, computer-executable instructions or data structures received over a network or data link can be buffered in RAM within a network interface module (e.g., a “NIC”), and then eventually transferred to computer system RAM and/or to less volatile computer storage media (devices) at a computer system. Thus, it should be understood that computer storage media (devices) can be included in computer system components that also (or even primarily) utilize transmission media. 
         [0022]    Computer-executable instructions comprise, for example, instructions and data which, when executed at a processor, cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. The computer executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, or even source code. Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the described features or acts described above. Rather, the described features and acts are disclosed as example forms of implementing the claims. 
         [0023]    Those skilled in the art will appreciate that the invention may be practiced in network computing environments with many types of computer system configurations, including, personal computers, desktop computers, laptop computers, message processors, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, mobile telephones, PDAs, tablets, pagers, routers, switches, and the like. The invention may also be practiced in distributed system environments where local and remote computer systems, which are linked (either by hardwired data links, wireless data links, or by a combination of hardwired and wireless data links) through a network, both perform tasks. In a distributed system environment, program modules may be located in both local and remote memory storage devices. 
         [0024]      FIG. 1  illustrates an example computer architecture  100  that facilitates time-based navigation within resource utilization data. Referring to  FIG. 1 , computer architecture  100  includes components  101  ( 101 A- 101 D). The ellipses between  101 C and  101 D represents that that are one or more additional components can exist. Thus, there may be as few as two such components, but there might also be as many as thousands or perhaps more components. Accordingly,  FIG. 1  should only be interpreted as an example of multi-components computer architecture. 
         [0025]    Each of the depicted components may be separate independent computer systems or computer components of a single computer system. For example, components  101  can be GPUs, hard disks, CPUs, or even cores of a CPU. 
         [0026]    Each of the depicted components is physically connected or connected to one another over (or is part of) a network, such as, for example, a Local Area Network (“LAN”), a Wide Area Network (“WAN”), and even the Internet. Accordingly, each of the depicted components as well as any other connected components and their sub-components, can create message related data and exchange message related data (e.g., Internet Protocol (“IP”) datagrams and other higher layer protocols that utilize IP datagrams, such as, Transmission Control Protocol (“TCP”), Hypertext Transfer Protocol (“HTTP”), Simple Mail Transfer Protocol (“SMTP”), etc.) over the network. 
         [0027]    As depicted in  FIG. 1 , computer architecture  100  includes utilization module  103 , navigation module  105 , data storage space  107 , and display device  109 . Components  101  can output raw computing activities  104 . Utilization module  103  is configured to receive raw computing activities  104  from components  101 . Raw computing activities  104  may be any type of computing activities, including reading or writing operations to hard disks, calculations by CPU, or transmissions of data over a network. Upon receiving raw computing activities  104 , utilization module  103  can generate resource utilization data  106  based on raw computing activities  104 . Resource utilization data  106  can indicate different performances of components  101  including executions, synchronizations, input/output operations, sleep time, memory management, preemption, or UI processing. 
         [0028]    In some embodiments, navigation module  105  generates diagnostic data trace  108  and submits diagnostic data trace  108  to display device  109 . Diagnostic data trace  108  can include resource utilization data  106 . In addition, the navigation module  105  can receive different time ranges  102 . A user can select the time range, for example, when the details of the resource utilization data within the time range are of interest. Four time ranges ( 102 A,  102 B,  102 C, and  102 D) are illustrated in  FIG. 1 . However, the ellipses represents that other time ranges can exist. 
         [0029]    In one embodiment, upon receiving time range  102 A, navigation module  105  submits extents  110  of selected time range ( 102 A) together with the diagnostic data trace within selected time range  112  to display device  109 . Once the user chooses another time range, as an example,  102 B, navigation module  105  submits extents  114  of the extents of the newly selected time range ( 102 B) and the diagnostic data trace within newly selected time range  116  to display device  109 . 
         [0030]    In one embodiment, navigation module  105  may communicate with data storage space  107 . Data storage space  107  may store resource utilization data  106 , time ranges  102 , or diagnostic data trace  108  and provides such information upon the request from navigation module  105 . 
         [0031]      FIG. 2  illustrates a flow chart of an example method  200  for time-based navigation within resource utilization data. As method  200  may be performed by navigation module  105  in  FIG. 1 , method  200  will now be described with frequent reference to computer architecture  200  of  FIG. 2 . 
         [0032]    Method  200  includes an act of presenting a diagnostic data trace at a display device, the diagnostic data trace including the resource utilization data (act  201 ). For example, navigation module  105  can display portions of diagnostic data trace  108 . Portions can be evenly spaced and marked with time intervals. In some embodiments, resource utilization data  106  are color coded. Color coding can include assigning different presentation colors to resource utilization data corresponding to different components  101 . For example, the utilization data generated by the CPU may be marked as red and the utilization data generated from the GPU may be marked as green. 
         [0033]    Method  200  includes an act of selecting a current visible time range within diagnostic data trace (act  202 ). For example, a user can select and submit time range  102 A to navigation module  105 . To select the current visible time range, the user may input the start and end value of the current visible time range. For example, the user may simply input “12000” and “12300” to select the time range from 12000 milliseconds to 12300 milliseconds. Alternatively, the user may press the mouse at a desired start position at the diagnostic data trace, drag it to a desired end position, and then release the mouse. 
         [0034]    Method  200  includes an act of presenting resource utilization data within the current visible time range along with the diagnostic data trace at display device, each extent of the current visible time range having a resizing control displayed on the diagnostic data trace (act  203 ). For example, receiving a selected current visible time range  102 A from the user, navigation module  105  presents extents of selected time range  110  and diagnostic data trace within selected time range  112  along with diagnostic data trace  108  at the display device. Each extent of the current visible time range has a resizing control displayed on the diagnostic data trace. As one embodiment, the resizing control may be shaped as a small red rectangle so that the user may easily click the resizing control. 
         [0035]    The diagnostic data trace within the current visible time range is visually distinguished from the diagnostic data trace outside the current visible time range. For example, in one embodiment, the diagnostic data trace within the current visible time range may be filled with red and the diagnostic data trace outside the current visible time range may be filled with light pink (although other combinations of visually distinguishing indicators [color, size, shape, etc.] are also possible). The extents of the current visible time range can also be displayed with marks indicating the start and end value of the extents. 
         [0036]    In some embodiments, when the current visible time range is selected, the resource utilization data corresponding to each of components  101  are displayed in different data traces in greater details. Multiple ticks spaced evenly indicating the time interval and marks indicating the start time and end time of the current visible time range are displayed along the different traces. 
         [0037]    Method  200  includes an act of receiving a selection of a new visible time range (act  204 ). For example, the user may reselect and submit time range  102 B to navigation module  105  since the user&#39;s interest in different portions of the resource utilization data might change over time. 
         [0038]    Method  200  includes an act of modifying the current visible time range in response to the selection of new visible time range (act  205 ). The act of modifying the current visible time range further including an act of changing at least one of the extents of current visible time range to a corresponding extent of the new visible time range (act  206 ) and an act of displaying resource utilization data within new visible time range along with the diagnostic data trace at the display device, each extent of the new visible time range having a resizing control displayed on the diagnostic data trace (act  207 ). For example, when navigation module  105  receives new time range  102 B, navigation module  105  submits extents of selected time range (based on time range  102 B)  114  and diagnostic data trace within selected time range (based on time range  102 B)  116  to display device  109 . In response to the selection of the new visible time range, navigation module  105  may modify the current visible time range. In modifying the current visible time range, based on the requests from the user, navigation module  105  may change one or more of the extents of the current visible time range or pan and zoom the current visible time range. 
         [0039]    In some embodiments, in changing the extents of the current visible time range, the user may click the resizing control of one extent and drag the extent to a desired position. Alternatively, the user may use a keyboard arrow key to move the extent after click the extent. For example, when the user clicks the resizing control of the left extent, the user may use “←” key to change the current visible time range (from 12000 to 12300 milliseconds) to a new visible time range (from 11800 to 12300 milliseconds). 
         [0040]    In some embodiments, in panning the current the visible time range, the user may click an area outside the current visible time range but within the diagnostic data trace to move the center of the current visible time range to the position where clicking occurred. The user may also click an area within the current visible time range and drag the current visible time range to a desired position. Alternatively, the user may also use a keyboard arrow key to move the current visible time range after click the current visible time range. In addition, the user may simply input the start and end value of the new visible time range. For example, the user may input new start value and end value as “11000” and “17000” to select a new visible time range from 11000 to 17000 milliseconds. 
         [0041]    The navigation module then may display the resource utilization data within the new visible time range. Similarly, the new visible time range is displayed along with the diagnostic data trace and each extent of the new visible time range has a resizing control displayed on the diagnostic data trace. 
         [0042]      FIG. 3  illustrates a screen shot of an example user interface  300  at the display device of  FIG. 1  when example computer architecture  100  performs example method  200 . User interface  300  will be described with respect to the acts of Method  200  and elements of computer architecture  100 . 
         [0043]    In some embodiments, as depicted in  FIG. 3 , the user interface may display diagnostic data trace  301  at the top of the screen. Resource utilization data  302  may be displayed in a color (e.g., green) within diagnostic data trace  301 . Upon selection of the current visible time range, rectangular box  303  or other symbols may be displayed to indicate the current visible time range. The rectangular box may be in a color visually distinguishable with the color of the resource utilization data. Each extent of the current visible time range has resizing control  304  that may be in a form of thumb. Meanwhile, the resource utilization data within the current visible time range (i.e., within the rectangular box) may be in a color substantially different from the color of the extents of the current visible time range and the color of the resource utilization data outside the time range. 
         [0044]    Upon determination of the current visible time range, the detail resource utilization data of each corresponding components within the time range may be displayed as multiple traces  307  below diagnostic data trace  301 . In one embodiment, the names and IDs  305  of the components may be displayed beside multiple traces  307 . 
         [0045]    In some embodiments, different performances  306  may be assigned with different presentation colors,  306 A,  306 B,  306 C,  306 D,  306 E,  306 F,  306 G. For example, execution of applications may be assigned with red and synchronizations may be green. 
         [0046]      FIG. 4  illustrates an example screen shot of the diagnostic data trace displayed with a selected time range. As the diagnostic data trace and the selected time range may be generated by navigation module  105 , screen shot  400  will now be described with frequent reference to computer architecture  200  of  FIG. 2 . 
         [0047]    As depicted, resource utilization data may be displayed at a diagnostic data trace. Multiple ticks  403  may be displayed and evenly spaced to indicate the total length of the diagnostic data trace is  100 . 0  seconds and the diagnostic data trace is evenly divided by the ticks into four equal portions. The resource utilization data corresponding to different components  101  may be assigned with different colors,  402 A,  402 B, and  402 C. Although only three colors are showed, this principle described herein may apply to any interface showing more than three different performances. Upon the selection of the current visible time range, current visible time range  404  is displayed at the diagnostic data trace. Each of the extents has a resizing control  406 . Resource utilization data within the time range ( 405 A,  405 B,  405 C) is visually distinguished with the resource utilization data outside the time range. In one embodiment, start time  408  and end time  407  of the current visible time range may be marked. 
         [0048]    The present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.