IP Library › Granted Patent US 8,869,118
Granted Patent B2
US 8,869,118 · App. 13/150,600 · Granted Oct 21, 2014

System aware performance counters

Inventors: Raymond M. Higgs (Poughkeepsie, NY); George P. Kuch (Poughkeepsie, NY); Bruce H. Ratcliff (Red Hook, NY)
Assignee: International Business Machines Corporation
G06F11/3466G06F2201/88G06F11/3419G06F2201/865
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,869,118
App. No.
13/150,600
Granted
Oct 21, 2014
Kind
B2
Abstract

System aware performance counters including a processor for performing a method that includes executing a predefined code segment of an application, the executing on a processor. The executing includes executing an instrumented thread included in the predefined code segment. The method includes performing a first action associated with executing the instrumented thread in the predefined code segment, and registering the instrumented thread. A performance counter associated with the predefined code segment is started. Also, the execution of the predefined code segment is paused and the performance counter is paused. The method further includes performing a second action associated with pausing the executing of the predefined code segment. The executing of the predefined code segment is resumed and the performance counter is resumed responsive to resuming the executing of the predefined code segment. Also, a third action associated with resuming executing the predefined code segment is performed.

Claims (50)

1. A method comprising:

executing a predefined code segment of an application, the executing on a processor and including executing an instrumented thread included in the predefined code segment;

performing at least a first action associated with executing the instrumented thread in the predefined code segment, the performing the at least first action responsive to enabling a performance counter and registering the instrumented thread with a performance counter library;

starting the performance counter associated with the predefined code segment, the starting responsive to executing the instrumented thread;

pausing the execution of the predefined code segment;

pausing the performance counter responsive to pausing the executing of the predefined code segment;

performing at least a second action associated with pausing the executing of the predefined code segment, the performing the at least second action responsive to enabling the performance counter and registering the instrumented thread;

resuming the executing of the predefined code segment; resuming the performance counter responsive to resuming the executing of the predefined code segment; and

performing at least a third action associated with resuming the executing of the predefined code segment, the performing the at least third action responsive to enabling the performance counter and registering the instrumented thread.

2. The method of claim 1 , wherein the registering of the instrumented thread further comprises allocating a control block to the instrumented thread.

3. The method of claim 2 , wherein the registering the instrumented thread further comprises allocating the performance counter to the instrumented thread.

4. The method of claim 2 , further comprising inserting a declarative statement into the instrumented thread, the declarative statement configured to call at least one performance counter in the performance counter library.

5. The method of claim 1 , further comprising:

completing execution of the predefined code segment;

stopping the performance counter responsive to the completing; and

performing at least a fourth action associated with completing the executing of the predefined code segment, the performing the at least fourth action responsive to enabling the performance counter and registering the instrumented thread.

6. The method of claim 1 , wherein the pausing of the performance counter comprises storing state data associated with the performance counter.

7. The method of claim 5 , wherein at least the first, the second, the third, and the fourth action is selected from the group consisting of invalidating or flushing cache, priming cache, waiting for all outstanding memory operations, disabling at least one interrupt, changing power management setting, and adjusting central processor clocks.

8. A system comprising a processor configured to perform a method comprising:

executing a predefined code segment of an application, the executing on a processor and including executing an instrumented thread included in the predefined code segment;

performing at least a first action associated with executing the instrumented thread in the predefined code segment, the performing the at least first action responsive to enabling a performance counter and registering the instrumented thread with a performance counter library;

starting the performance counter associated with the predefined code segment, the starting responsive to executing the instrumented thread;

pausing the execution of the predefined code segment;

pausing the performance counter responsive to pausing the executing of the predefined code segment;

performing at least a second action associated with pausing the executing of the predefined code segment, the performing the at least second action responsive to enabling the performance counter and registering the instrumented thread;

resuming the executing of the predefined code segment; resuming the performance counter responsive to resuming the executing of the predefined code segment; and

performing at least a third action associated with resuming the executing of the predefined code segment, the performing the at least third action responsive to enabling the performance counter and registering the instrumented thread.

9. The system of claim 8 , wherein the registering of the instrumented thread further comprises allocating a control block to the instrumented thread.

10. The system of claim 9 , wherein the registering of the instrumented thread further comprises allocating the performance counter to the instrumented thread.

11. The system of claim 9 , wherein the method further comprises inserting a declarative statement into the instrumented thread, the declarative statement configured to call at least one performance counter in the performance counter library.

12. The system of claim 8 , wherein the method further comprises: completing the executing of the predefined code segment; stopping the performance counter responsive to the completing; and performing at least a fourth action associated with completing the executing of the predefined code segment, the performing the at least fourth action responsive to enabling the performance counter and registering the instrumented thread.

13. The system of claim 8 , wherein the pausing the performance counter comprises storing state data associated with the performance counter.

14. The system of claim 12 , wherein at least the first action, the second action, the third action, and the fourth action is selected from the group consisting of invalidating or flushing cache, priming cache, waiting for all outstanding memory operations, disabling at least one interrupt, changing power management setting, and adjusting central processor clocks.

15. A computer program product comprising a non-transitory tangible storage medium readable by a processing circuit and storing instructions for execution by the processing circuit for performing a method comprising:

executing a predefined code segment of an application, the executing on a processor and including executing an instrumented thread included in the predefined code segment;

performing at least a first action associated with executing the instrumented thread in the predefined code segment, the performing the at least first action responsive to enabling a performance counter and registering the instrumented thread with a performance counter library;

starting the performance counter associated with the predefined code segment, the starting responsive to executing the instrumented thread; pausing the execution of the predefined code segment;

pausing the performance counter responsive to pausing the executing of the predefined code segment;

performing at least a second action associated with pausing the executing of the predefined code segment, the performing the at least second action responsive to enabling the performance counter and registering the instrumented thread;

resuming the executing of the predefined code segment; resuming the performance counter responsive to resuming the executing of the predefined code segment; and

performing at least a third action associated with resuming the executing of the predefined code segment, the performing the at least third action responsive to enabling the performance counter and registering the instrumented thread.

16. The computer program product of claim 15 , wherein the registering of the instrumented thread further comprises allocating a control block to the instrumented thread.

17. The computer program product of claim 16 , wherein the registering of the instrumented thread further comprises allocating the performance counter to the instrumented thread.

18. The computer program product of claim 16 , wherein the method further comprises inserting a declarative statement into the instrumented thread, the declarative statement configured to call at least one performance counter in the performance counter library.

19. The computer program product of claim 15 , wherein the method further comprises:

completing the executing of the predefined code segment;

stopping the performance counter responsive to the completing; and

performing at least a fourth action associated with completing the executing of the predefined code segment, the performing the at least fourth action responsive to enabling the performance counter and registering the instrumented thread.

20. The computer program product of claim 15 , wherein the pausing of the performance counter comprises storing state data associated with the performance counter.

21. The computer program product of claim 19 , wherein at least the first action, at least the second action, at least the third action, and at least the fourth action is selected from the group consisting of invalidating or flushing cache, priming cache, waiting for all outstanding memory operations, disabling at least one interrupt, changing power management setting, and adjusting central processor clocks.

Assignments (2)
CORRECTIVE ASSIGNMENT TO CORRECT THE NAME OF ASSIGNOR BRUCE H. RADCLIFF TO BRUCE H. RATCLIFF PREVIOUSLY RECORDED ON REEL 026370 FRAME 0600. ASSIGNOR(S) HEREBY CONFIRMS THE CORRECT SPELLING OF ASSIGNOR'S NAME TO BE BRUCE H. RATCLIFF. Recorded Aug 1, 2011
From: HIGGS, RAYMOND M.; KUCH, GEORGE P.; RATCLIFF, BRUCE H.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 026680/0157 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2011
From: HIGGS, RAYMOND M.; KUCH, GEORGE P.; RADCLIFF, BRUCE H.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 026370/0600 →
Continuity (1)
Related Publication 20120311544A1 · Dec 6, 2012