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.
Legal claims defining the scope of protection, as filed with the USPTO.
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.
2. The method recited in claim 1 above, wherein calculating change profile information from the accumulated profile information and the last accumulated profile information is performed by a postprocessor.
3. The method recited in claim 1 above, wherein calculating change profile information from the first accumulated profile information and the last accumulated profile information is performed by an operating system kernel.
4. The method recited in claim 1 above, wherein calculating change profile information from the first accumulated profile information and the last accumulated profile information is performed by an application.
5. The method recited in claim 1 above further comprises: 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.
12. The method recited in claim 11 above, wherein 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 further comprises: 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.
18. The method recited in claim 17 , above, further comprises: 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.
20. The method recited in claim 19 above, wherein receiving a value of an accumulated metric variable for any of the active thread on each processor of the plurality of processors further comprises receiving an event-related thread identifier, and further wherein the method further comprises: 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.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
July 6, 2000
May 11, 2004
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.