System and method for identifying contention of shared resources in a runtime system
First Claim
1. A computer-implemented method of determining a runtime of a thread of an application, the method comprising:
- receiving synchronization events for a first thread of an application executing on a computer system, the synchronization events including at least a first synchronization event and a second synchronization event for the first thread, each synchronization event includes a synchronization event timestamp corresponding to a time at which the synchronization event occurred and an accumulated timestamp corresponding to a time during which a runtime system of the computer system has been executing runtime system operations that include generating at least one stack trace of the first thread;
calculating a first difference between the synchronization event timestamp of the first synchronization event and the synchronization event timestamp of the second synchronization event;
calculating a second difference between the accumulated timestamp of the first synchronization event and the accumulated timestamp of the second synchronization event;
calculating, by at least one processor of a computer system, a runtime of the first thread of the application as a difference between the first difference and the second difference;
providing a first user interface that displays a synchronization snapshot, the synchronization snapshot including a plurality of statistics selections that each causes a different type of display of statistics;
in response to a threads-by-identifier selection of the plurality of statistics selections, providing a second user interface that displays a list of threads including the first thread and corresponding blocking information for each thread in the list, the corresponding blocking information including an identifier of each thread, a blocked time for each thread, and a block count for each thread; and
receiving a selection of a thread from the list of threads, the selection causing presentation of a third user interface including additional blocking statistics for only the selected thread, the additional blocking statistics including a number of times that one or more other threads blocked the selected thread, an identifier for each of the one or more other threads, and a blocked time for each of the one or more other threads.
2 Assignments
0 Petitions
Accused Products
Abstract
A system and computer-implemented method for determining a runtime of a thread of an application. Synchronization events for a first thread of an application executing on the computer system are received, the synchronization events including at least a first synchronization event and a second synchronization event for the first thread. A first difference between a synchronization event timestamp of the first synchronization event and the synchronization event timestamp of the second synchronization event is calculated. A second difference between an accumulated timestamp of the first synchronization event and the accumulated timestamp of the second synchronization event is calculated. A runtime of the first thread of the application is calculated as a difference between the first difference and the second difference.
22 Citations
21 Claims
-
1. A computer-implemented method of determining a runtime of a thread of an application, the method comprising:
-
receiving synchronization events for a first thread of an application executing on a computer system, the synchronization events including at least a first synchronization event and a second synchronization event for the first thread, each synchronization event includes a synchronization event timestamp corresponding to a time at which the synchronization event occurred and an accumulated timestamp corresponding to a time during which a runtime system of the computer system has been executing runtime system operations that include generating at least one stack trace of the first thread; calculating a first difference between the synchronization event timestamp of the first synchronization event and the synchronization event timestamp of the second synchronization event; calculating a second difference between the accumulated timestamp of the first synchronization event and the accumulated timestamp of the second synchronization event; calculating, by at least one processor of a computer system, a runtime of the first thread of the application as a difference between the first difference and the second difference; providing a first user interface that displays a synchronization snapshot, the synchronization snapshot including a plurality of statistics selections that each causes a different type of display of statistics; in response to a threads-by-identifier selection of the plurality of statistics selections, providing a second user interface that displays a list of threads including the first thread and corresponding blocking information for each thread in the list, the corresponding blocking information including an identifier of each thread, a blocked time for each thread, and a block count for each thread; and receiving a selection of a thread from the list of threads, the selection causing presentation of a third user interface including additional blocking statistics for only the selected thread, the additional blocking statistics including a number of times that one or more other threads blocked the selected thread, an identifier for each of the one or more other threads, and a blocked time for each of the one or more other threads. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. A system to determine a runtime of a thread of an application, comprising:
-
at least one processor; memory; and at least one program stored in the memory, the at least one program comprising instructions to perform operations comprising; receiving synchronization events for a first thread of an application executing on a computer system, the synchronization events including at least a first synchronization event and a second synchronization event for the first thread, each synchronization event includes a synchronization event timestamp corresponding to a time at which the synchronization event occurred and an accumulated timestamp corresponding to a time during which a runtime system of the computer system has been executing runtime system operations that include generating at least one stack trace of the first thread; calculating a first difference between the synchronization event timestamp of the first synchronization event and the synchronization event timestamp of the second synchronization event; calculating a second difference between the accumulated timestamp of the first synchronization event and the accumulated timestamp of the second synchronization event; calculating a runtime of the first thread of the application as a difference between the first difference and the second difference; providing a first user interface that displays a synchronization snapshot, the synchronization snapshot including a plurality of statistics selections that each causes a different type of display of statistics; in response to a threads-by-identifier selection of the plurality of statistics selections, providing a second user interface that displays a list of threads including the first thread and corresponding blocking information for each thread in the list, the corresponding blocking information including an identifier of each thread, a blocked time for each thread, and a block count for each thread; and receiving a selection of a thread from the list of threads, the selection causing presentation of a third user interface including additional blocking statistics for only the selected thread, the additional blocking statistics including a number of times that one or more threads blocked the selected thread, an identifier for each of the one or more other threads, and a blocked time for each of the one or more other threads. - View Dependent Claims (17, 18)
-
-
19. A non-transitory computer readable storage medium storing at least one program configured for execution by a computer, the at least one program comprising instructions to cause a machine to perform operations comprising:
-
receiving synchronization events for a first thread of an application executing on a computer system, the synchronization events including at least a first synchronization event and a second synchronization event for the first thread, wherein each synchronization event includes a synchronization event timestamp corresponding to a time at which the synchronization event occurred and an accumulated timestamp corresponding to a time during which a runtime system of the computer system has been executing runtime system operations that include generating at least one stack trace of the first thread; calculating a first difference between the synchronization event timestamp of the first synchronization event and the synchronization event timestamp of the second synchronization event; calculating a second difference between the accumulated timestamp of the first synchronization event and the accumulated timestamp of the second synchronization event; calculating a runtime of the first thread of the application as a difference between the first difference and the second difference; providing a first user interface that displays a synchronization snapshot, the synchronization snapshot including a plurality of statistics selections that each causes a different type of display of statistics; in response to a threads-by-identifier selection of the plurality of statistics selections, providing a second user interface that displays a list of threads including the first thread and corresponding blocking information for each thread in the list, the corresponding blocking information including an identifier of each thread, a blocked time for each thread, and a block count for each thread; and receiving a selection of a thread from the list of threads, the selection causing presentation of a third user interface including additional blocking statistics for only the selected thread, the additional blocking statistics including a number of times that one or more other threads blocked the selected thread, an identifier for each of the one or more other threads, and a blocked time for each of the one or more other threads. - View Dependent Claims (20, 21)
-
Specification