IP Library Patent Application 12120233
Patent Application
App. No. 12/120,233

RESOURCE CONFLICT PROFILING

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 None
App. No.
12/120,233
Abstract

Analyzing usage patterns of resources by various execution contexts (such as threads) may be difficult due to the volume of information that may be involved. A profiling technique may focus on the detection of resource requests that result in a resource conflict, e.g., a request for access to a resource that is exclusively in use by another resource. The profiling may then involve identifying the user action associated with the execution context that caused the resource conflict (e.g., via a stack walk) and the resource utilized, measuring the delay in the fulfillment of the request, and recording the information in a resource conflict log. The resource requests that are captured and recorded in this manner may be constrained to the information that is helpful in identifying performance bottlenecks and usage patterns, which may lead to redesigned applications of greater performance while interfacing with execution contexts, and vice versa.

Claims (89)

1 . A method of documenting a resource conflict relating to a resource, the method comprising:

upon detecting a request by an execution context for the resource resulting in a resource conflict:

storing a request time, and

identifying a user action associated with the execution context that caused the resource conflict; and

upon detecting availability of the resource after the resource conflict:

calculating a resource conflict duration, and

documenting the resource, the user action, and the resource conflict duration.

2 . The method of claim 1 , the request comprising one of:

a synchronous blocking resource request, and

an asynchronous non-blocking resource request.

3 . The method of claim 1 , the resource shared among at least two execution contexts by an access sharing construct.

4 . The method of claim 3 :

the resource conflict comprising a request for the resource by the execution context during a resource access by a second execution context; and

the availability comprising a completion of the resource access by the second execution context.

5 . The method of claim 3 , the access sharing construct comprising at least one of: a semaphore, a critical section, and a monitor.

6 . The method of claim 1 , the identifying comprising:

performing a stack walk to identify the execution context issuing the request for the resource, and

identifying the user action associated with the execution context identified by the stack walk that caused the resource conflict.

7 . The method of claim 1 :

the method comprising: subscribing to a resource conflict event;

detecting the request comprising: receiving a resource conflict event notification; and

detecting the availability comprising: receiving a resource conflict resolution event notification.

8 . The method of claim 1 , comprising:

upon receiving a request by the execution context for the resource:

detecting availability of the resource, and

upon detecting availability of the resource without a resource conflict, providing the resource to the execution context; and

upon detecting the availability of the resource after the resource conflict, providing the resource to the execution context.

9 . The method of claim 8 , comprising:

upon detecting the request, blocking the execution context; and

upon detecting the availability of the resource after the resource conflict, unblocking the execution context.

10 . The method of claim 8 , comprising:

upon detecting the request by the execution context for the resource, receiving from the execution context a resource request callback; and

the providing comprising: invoking the resource request callback of the execution context.

11 . The method of claim 1 , the documenting comprising: creating a resource conflict record in a resource conflict data store, the resource conflict record comprising the resource, the user action, and the resource conflict duration.

12 . A system for documenting resource conflicts relating to at least one resource, the system comprising:

a resource conflict data store configured to store records of resource conflicts involving a resource, an execution context requesting the resource resulting in a resource conflict, and a resource conflict duration; and

a resource conflict documenting component configured to:

upon detecting a request by an execution context for a resource resulting in a resource conflict:

store a request time, and

identify the execution context; and

upon detecting availability of the resource after the resource conflict:

calculate a resource conflict duration, and

create a resource conflict record in the resource conflict data store.

13 . The system of claim 12 , the resource conflict documenting component comprising:

a stack walking component configured to:

identify the execution context issuing the request for the resource, and

identify the user action associated with the execution context identified by the stack walk that caused the resource conflict.

14 . The system of claim 12 , the resource conflict documenting component comprising:

a resource conflict identifying component configured to:

subscribe to a resource conflict event;

detect the request by receiving a resource conflict event notification; and

detect the availability by receiving a resource conflict resolution event notification.

15 . The system of claim 12 , comprising:

a resource request handling component configured to:

upon receiving a request by the execution context for the resource:

detect availability of the resource, and

upon detecting availability of the resource without a resource conflict, provide the resource to the execution context; and

upon detecting the availability of the resource after the resource conflict, provide the resource to the execution context.

16 . The system of claim 15 , the resource request handling component configured to:

upon detecting the request, block the execution context; and

upon detecting the availability of the resource after the resource conflict, unblock the execution context.

17 . The system of claim 15 , the resource request handling component configured to:

upon detecting the request by the execution context for the resource, receive from the execution context a resource request callback; and

provide the resource to the execution context by invoking the resource request callback of the execution context.

18 . The system of claim 12 , the resource conflict documenting component comprising:

a resource conflict duration calculating component configured to:

upon detecting the request, store a resource availability time; and

upon detecting the availability of the resource after the resource conflict, subtract the request time from the resource availability time.

19 . The system of claim 12 :

the resource conflict documenting component comprising a resource conflict duration timer, and

the resource conflict documenting component configured to:

upon detecting the request, initiate the resource conflict duration timer; and

upon detecting the availability of the resource after the resource conflict, calculate the resource conflict duration according to the resource conflict duration timer.

20 . A method of documenting a resource conflict relating to a resource shared by at least two execution contexts by an access sharing construct comprising at least one of a semaphore, a critical section, and a monitor, the method comprising:

upon receiving a request by the execution context for the resource:

blocking the execution context;

detecting availability of the resource, and

upon detecting availability of the resource without a resource conflict:

providing the resource to the execution context, and

unblocking the execution context;

upon detecting a synchronous blocking resource request by an execution context for the resource resulting in a resource conflict:

storing a request time, and

performing a stack walk to identify the execution context issuing the request for the resource, and

identifying the user action associated with the execution context identified by the stack walk that caused the resource conflict; and

upon detecting availability of the resource after the resource conflict:

calculating a resource conflict duration;

documenting the resource, the user action, and the resource conflict duration by creating a resource conflict record in a resource conflict data store, the resource conflict record comprising the resource, the execution context, and the resource conflict duration;

providing the resource to the execution context; and

unblocking the execution context.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2015
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034766/0509 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 30, 2008
From: CARROLL, STEVEN M; CUNNINGHAM, JOHN A.; WURDACK, RICHARD T.
To: MICROSOFT CORPORATION
Reel/Frame 021310/0161 →