IP Library Granted Patent US 7,137,120
Granted Patent B2
US 7,137,120 · App. 10/022,982 · Granted Nov 14, 2006

Dynamic diagnostic program for determining thread wait time

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 7,137,120
App. No.
10/022,982
Granted
Nov 14, 2006
Kind
B2
Abstract

Diagnostic data, such as a time increment corresponding to how long a thread waits to access a shared resource, is stored within a predetermined location in a data structure, such as a hash bucket in a hash table. The location is preferably correlated to the resource such that a display of the diagnostic data may be tailored to reflect a user-specified relationship between the data and resource.

Claims (47)

1. A method of analyzing program execution within an operating system of a multithreaded environment, comprising:

accumulating diagnostic data pertaining to a thread accessing a resource, the execution of a thread being predicated upon the thread's access to the resource within the multithreaded environment; and

storing the diagnostic data within a data structure at a location in the data structure correlated to the resource;

detecting a locking occurrence associated with the thread;

calculating a time increment corresponding to a duration that the thread remains locked; and

using the time increment to analyze the program execution.

2. The method according to claim 1 , wherein the diagnostic data includes data selected from at least one of: a time measurement, program code executed by the thread, an invocation stack, and pointer data.

3. The method according to claim 1 , wherein the data structure comprises a hash bucket.

4. The method according to claim 1 , further comprising determining the resource.

5. The method according to claim 4 , wherein determining the resource includes reading contents of a task dispatcher.

6. The method according to claim 1 , further comprising storing information identifying the resource.

7. The method according to claim 1 , further comprising matching an identifier corresponding to the resource to a correlative identifier corresponding to the data structure.

8. The method according to claim 7 , further comprising reassigning the identifier to a second resource.

9. The method according to claim 7 , further comprising assigning the correlative identifier to the data structure.

10. The method according to claim 1 , further comprising storing the time increment within the data structure.

11. The method according to claim 1 , further comprising recording the time corresponding to the locking occurrence.

12. The method according to claim 1 , further comprising detecting a removal of the locking occurrence.

13. The method according to claim 12 , further comprising recording a time instance corresponding to the removal of the locking occurrence.

14. The method according to claim 1 , further comprising recording program data relating to code executed by the thread prior to the locking occurrence.

15. The method according to claim 14 , further comprising retrieving the program data from an invocation stack.

16. The method according to claim 1 , further comprising displaying the diagnostic data.

17. A method of analyzing program execution within a computer system having a plurality of threads accessing a plurality of resources, comprising:

detecting a locking occurrence associated with a thread of the plurality of threads;

calculating a time increment reflective of a duration the thread waits for access to a resource of the plurality of resources, the execution of the thread being predicated upon the thread's access to the resource;

storing the time increment within a hash bucket of a plurality of hash buckets comprising a hash array, each hash bucket being correlated to the resource; and

using the time increment to analyze the program execution.

18. The method according to claim 17 , further comprising reallocating the plurality of resources to the plurality of hash buckets to group the diagnostic data with a different scheme.

19. An apparatus comprising:

at least one processor configured to execute a plurality of threads;

a memory; and

program code resident in the memory and configured to execute on the at least one processor, the program code configured to accumulate diagnostic data pertaining to a thread accessing a resource, the execution of a thread being predicated upon the thread's access to the resource, to store the diagnostic data within a data structure at a location in the data structure correlated to the resource, wherein the program code initiates a detection of a locking occurrence associated with the thread and calculates a time increment corresponding to a duration that the thread remains locked, and facilitates use of the time increment to analyze the program execution.

20. The apparatus according to claim 19 , wherein the diagnostic data includes data selected from a group consisting of at least one of: a time measurement, program code executed by the thread, an invocation stack and pointer data.

21. The apparatus according to claim 19 , wherein the data structure comprises a hash bucket.

22. The apparatus according to claim 19 , wherein the program code initiates a determination of the resource.

23. The apparatus according to claim 19 , wherein the program code initiates storing information identifying the resource.

24. The apparatus according to claim 19 , further comprising matching an identifier corresponding to the resource to a correlative identifier corresponding to the data structure.

25. The apparatus according to claim 24 , wherein the program code initiates reassigning the identifier to a second resource.

26. The apparatus according to claim 24 , wherein the program code initiates assigning the correlative identifier to the data structure.

27. The apparatus according to claim 19 , wherein the program code initiates storing the time increment within the data structure.

28. The apparatus according to claim 19 , wherein the program code initiates recording a time corresponding to the locking occurrence.

29. The apparatus according to claim 19 , wherein the program code initiates detecting a removal of the locking occurrence.

30. The apparatus according to claim 29 , wherein the program code initiates recording a time instance corresponding to the removal of the locking occurrence.

31. The apparatus according to claim 19 , wherein the program code initiates recording program data relating to code executed by the thread prior to the locking occurrence.

32. The apparatus according to claim 31 , wherein the program code initiates retrieval of the program data from an invocation stack.

33. The apparatus according to claim 19 , wherein the program code initiates a display of the diagnostic data.

34. A program product, stored in a computer storage media, said program product comprising:

program code executable by a computer for analyzing program execution within an operating system of a multithreaded environment, wherein the program code is configured to accumulate diagnostic data pertaining to a thread accessing a resource, the execution of a thread being predicated upon the thread's access to the resource, and to store the diagnostic data within a block of the memory correlated to the resource, wherein the program code initiates a detection of a locking occurrence associated with the thread and calculates a time increment corresponding to a duration that the thread remains locked, and facilitates use of the time increment to analyze the program execution.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 13, 2015
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: LINKEDIN CORPORATION
Reel/Frame 035201/0479 →