IP Library Granted Patent US 8,370,456
Granted Patent B2
US 8,370,456 · App. 11/534,446 · Granted Feb 5, 2013

Intelligent pre-fetching using compound operations

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,370,456
App. No.
11/534,446
Granted
Feb 5, 2013
Kind
B2
Abstract

A system and method for pre-fetching data uses a combination of heuristics to determine likely next data retrieval operations and an evaluation of available resources for executing speculative data operations. When local resources, such as cache memory for storing speculative command results is not available, the compound operation request may not be sent. When resources on a server-side system are insufficient, only the primary command of a compound operation request may be processed and speculative command requests may be rejected. Both local computing resources and network resources may be evaluated when determining whether to build or process a compound operations request.

Claims (44)

1. In a computer data processing environment having at least one processor executing a reader process and a service process, the reader process communicatively coupled to the service process, a method of reducing network traffic between the reader and service processes comprising:

receiving a compound request at the service process comprising a first command for a primary operation and a second command for a speculative secondary operation likely to be requested by the reader process following the first command for the primary operation, the second command having a flag indicating that the second command is speculative;

determining that the second command for the speculative secondary operation is speculative based on the flag indicating that the second command is speculative;

in response to a determination that a condition associated with executing the speculative secondary operation is not satisfied, performing the primary operation and secondary operation was not processed; and

in response to a determination that the condition associated with executing the speculative secondary operation is satisfied;

performing the primary operation;

performing the speculative secondary operation; and

sending the results of the primary operation and the speculative secondary operation.

2. The method of claim 1 , further comprising storing the results of the speculative secondary operation at the reader process in a cache memory.

3. The method of claim 2 , further comprising clearing the cache memory when a file associated with the speculative secondary operation is closed.

4. The method of claim 1 , further comprising determining whether an additional condition associated with executing the speculative secondary operation is satisfied, wherein the additional condition is a size of a result returned from processing the primary operation.

5. The method of claim 1 , wherein the condition is an availability of processing resources at the service process.

6. The method of claim 1 , further comprising determining whether an additional condition associated with executing the speculative secondary operation is satisfied, wherein the additional condition is a result returned by the primary operation.

7. The method of claim 1 , further comprising building the compound request at the reader process using a heuristic to predict the speculative secondary operation based on the primary operation.

8. The method of claim 7 , wherein building the compound request at the reader process comprises building the compound request after evaluating that sufficient cache and processing resources are available to manage a response to the compound request.

9. The method of claim 1 , further comprising building the compound request at an input/output operation above the reader process.

10. The method of claim 1 , further comprising building the compound request at an application above the reader process.

11. The method of claim 1 , wherein the second command comprises a plurality of speculative secondary operations.

12. The method of claim 1 , wherein the speculative secondary operation is an operation for reading data.

13. A computer-readable storage media device having computer-executable instructions for implementing a method comprising:

examining a first command requiring a primary operation on a server;

determining that a second command for a secondary operation is related to the first command for the primary operation;

comparing the second command to a previously filled speculative command to determine whether results that correspond to the second command are cached;

responsive to determining that results that correspond to the second command are not cached, attaching the second command for the secondary operation to the first command and marking the second command for the secondary operation speculative, wherein the marking comprises a flag indicating that the second command is speculative;

sending the first command requiring the primary operation and the second command for the secondary operation to the server;

receiving results from the primary operation and the secondary operation when conditions associated with performing the second operation are satisfied, wherein at least one of the conditions is satisfied prior to performance of the primary operation;

caching the results of the secondary operation; and

supplying the results of secondary operation responsive to comparing a third command to the second command and determining that results that correspond to the third command are cached.

14. The computer-readable storage media device of claim 13 , further comprising determining that resources are available for caching the results of the secondary operation before attaching the second command for the secondary operation to the first command.

15. The computer-readable storage media device of claim 13 , wherein attaching the second command for the secondary operation to the first command is performed at a reader service.

16. The computer-readable storage media device of claim 13 , wherein attaching the second command for the secondary operation to the first command is performed at an input/output service.

17. The computer-readable storage media device of claim 13 , wherein attaching the second command for the secondary operation to the first command is performed at an application.

18. A computer-readable storage media device having computer-executable instructions for implementing a method comprising:

receiving a compound request having a primary operation and a secondary operation, the secondary operation dependent upon a result from the primary operation and having a flag indicating that the secondary operation is speculative;

in response to a determination that a condition associated with executing the secondary operation is not satisfied, performing the primary operation, receiving a first result corresponding to the primary operation, and responding to the compound request with the first result and an indication that the secondary operation was not performed;

in response to a determination that the condition associated with executing the secondary operation is satisfied;

performing the primary operation;

receiving the first result corresponding to the primary operation;

extracting data from the first result;

inserting the data from the first result into the secondary operation;

receiving a second result corresponding to the secondary operation; and

responding to the compound request with the first result and the second result.

19. The computer-readable storage media device of claim 18 , further comprising determining whether resources are available to process the secondary operation before accepting the secondary operation.

20. The computer-readable storage media device of claim 19 , further comprising sending a notification to a calling party that the secondary operation is not accepted when the determining indicates resources are not available to process the secondary operation.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034542/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE SPELLING OF MATHEW GEORGE'S NAME. PREVIOUSLY RECORDED ON REEL 018675 FRAME 0517. ASSIGNOR(S) HEREBY CONFIRMS THE NAME IS SPELLED AS FOLLOWS ON THE RECORDED ASSIGNMENT: MATTHEW GEORGE.. Recorded Nov 8, 2012
From: GANAPATHY, RAMANATHAN; FULLER, JEFFREY C.; GEORGE, MATHEW; KRUSE, DAVID M.
To: MICROSOFT CORPORATION
Reel/Frame 029263/0638 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 26, 2006
From: GANAPATHY, RAMANATHAN; FULLER, JEFFREY C.; GEORGE, MATTHEW; KRUSE, DAVID M.
To: MICROSOFT CORPORATION
Reel/Frame 018675/0517 →