Method and system for SMP profiling using synchronized or nonsynchronized metric variables with support across multiple systems
First Claim
Patent Images
1. A method for monitoring performance of a program being executed on a plurality of processors comprising:
- receiving accumulated profile information, wherein at least a portion of the first accumulated profile information relates to the execution of a thread on any of a predefined group of SMP processors;
retrieving a global last accumulated profile information, wherein the global last accumulated profile information relates to a last update of base metric information for the predefined group of SMP processors;
calculating change profile information from the accumulated profile information and the last accumulated profile information;
identifying a plurality of active application threads running on any of the predefined group of SMP processors; and
updating the base profile information for all active application threads running on any of the predefined group of SMP processors with the change profile information.
1 Assignment
0 Petitions
Accused Products
Abstract
The value of non-discrete metric variables are synchronized at the processor level. When the profiler requests metric information for non-discrete metric variables, the operating system kernel obtains a global value for the requested metric rather than obtaining per-processor metric values for each processor. The global value may be written to trace records. By using a single global per-processor metric for all processors, a single global value of the last metric variable may be used for calculating the resources consumed on all processors since a last recorded event.
108 Citations
20 Claims
-
1. A method for monitoring performance of a program being executed on a plurality of processors comprising:
-
receiving accumulated profile information, wherein at least a portion of the first accumulated profile information relates to the execution of a thread on any of a predefined group of SMP processors;
retrieving a global last accumulated profile information, wherein the global last accumulated profile information relates to a last update of base metric information for the predefined group of SMP processors;
calculating change profile information from the accumulated profile information and the last accumulated profile information;
identifying a plurality of active application threads running on any of the predefined group of SMP processors; and
updating the base profile information for all active application threads running on any of the predefined group of SMP processors with the change profile information. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
setting the global last accumulated profile information equivalent to the accumulated profile information.
-
-
6. The method recited in claim 1 above, wherein the accumulated profile information comprises a value of an accumulated metric variable for a kernel thread running on an identified processor in the predefined group of SMP processors.
-
7. The method recited in claim 6 above, identifying a plurality active application threads running on any of the predefined group of SMP processors comprises tracking each operating system kernel thread running on any of the predefined group of SMP processors and its corresponding active application thread.
-
8. The method recited in claim 7 above, wherein tracking each operating system kernel thread running on any of the predefined group of SMP processors and its corresponding active application thread is accomplished by a table which is updated by one of a postprocessor, operating system kernel and application.
-
9. The method recited in claim 1 above, wherein the profile information relates to the execution of the application thread on a virtual machine.
-
10. The method recited in claim 1 above, wherein the identities of the plurality of active application threads running on any of the predefined group of SMP processors are maintained for each unique processor for each unique system and further wherein the global last accumulated profile information is maintained for all synchronized processors for all synchronized systems.
-
11. A method for monitoring performance of a program being executed on a plurality of processors comprising:
-
synchronizing a global value of a metric variable across a plurality of processors, wherein the global value of a metric variable relates to the consumption of resources of application threads running on any one of the plurality of processors;
receiving an application thread event;
retrieving the global value of a metric variable; and
calculating the consumption of resources of application threads running on any one of the plurality of processors using the global value of a metric variable. - View Dependent Claims (12, 13, 14, 15)
retrieving a global value of last metric variable; and
finding the difference between the global value of a metric variable and the global value of last metric variable, wherein the difference relates to the consumption of resources of each active application thread running on any one of the plurality of processors since an occurrence of a last application thread event.
-
-
13. The method recited in claim 11 above, wherein the global value of a metric variable is further synchronized across a plurality of systems, wherein the plurality of processors are divided between the plurality of systems.
-
14. The method recited in claim 11 above, wherein the value of a metric variable relates to a non-discrete metric.
-
15. The method recited in claim 11 above, wherein the non-discrete metric is one of time, accumulated time, cycle count, and accumulated cycle count.
-
16. A method for monitoring performance of a program being executed on a plurality of processors comprising:
-
launching a first thread of a native code routine on a first processor of the plurality of processors;
receiving first processor accumulated profile information;
retrieving a global processor last accumulated profile information for all processors of the plurality of processors;
calculating delta profile information from the first processor accumulated profile information and the global processor last accumulated profile information;
updating first thread profile information with the delta profile information; and
setting global processor last accumulated profile information equivalent to the first processor accumulated profile information.
-
-
17. A method for monitoring performance of a program being executed on a plurality of processors comprising:
-
reading a trace record which was generated in response to an event, wherein the trace record comprises accumulated metric information, an event identifier and the trace record relates to a specific kernel thread and a unique processor running the specific kernel thread;
retrieving last accumulated metric information, wherein the last accumulated metric information is accumulated metric information from a preceding trace record;
calculating change metric information from the accumulated metric information and the last accumulated metric information;
identifying a plurality of active application threads running on any of the plurality of processors;
updating a base profile information for all active application threads running on any of the plurality of processors with the change metric information; and
updating the identities of the plurality of active application threads running on any of the plurality of processors with the event identifier. - View Dependent Claims (18)
setting the last accumulated metric information equivalent to the accumulated metric information;
examining a next trace record in each of a plurality of trace record files;
comparing each accumulated metric information from each next trace record with the last accumulated metric variable; and
selecting a trace record based on the comparison of the accumulated metric information from each next trace record and the last accumulated metric variable;
reading the selected trace record.
-
-
19. A method for monitoring performance of a program being executed on a plurality of processors comprising:
-
maintaining a list of active threads, wherein the list comprises an active thread identifier for each active thread on each processor of the plurality of processors;
maintaining a single global value of a last accumulated metric variable;
receiving a value of an accumulated metric variable for any of the active thread on each processor of the plurality of processors;
calculating a value of a change in the accumulated metric variable and the global metric variable; and
updating values for base metric variables for all active threads with the value of a change in the accumulated metric variable. - View Dependent Claims (20)
updating the list of active threads with the event-related thread identifier; and
setting the single global value of a last accumulated metric variable equal to the value of the accumulate metric variable.
-
Specification