IP Library Granted Patent US 7,080,212
Granted Patent B1
US 7,080,212 · App. 10/750,101 · Granted Jul 18, 2006

Closed loop adaptive prestage method, system, and product for prestaging cache blocks

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,080,212
App. No.
10/750,101
Granted
Jul 18, 2006
Kind
B1
Abstract

A method, system, and computer program product are disclosed for dynamically determining and adjusting a number of data blocks to be prestaged in a cache included in the storage device. The storage device receives and processes input/output (I/O) requests. Information about the I/O requests and about the processing of the requests by the storage device is accumulated. The information is then used to dynamically adjust a prestaging policy as the storage device receives and processes requests. The prestaging policy defines a current number of data blocks to be prestaged in the cache.

Claims (61)

1. A method in a storage device for dynamically determining and adjusting a number of data blocks to be prestaged in a cache included in said storage device, said method comprising the steps of:

receiving and processing a plurality of input/output (I/O) requests by said storage device;

accumulating information about said plurality of I/O requests and said processing of future I/O requests by said storage device;

utilizing said accumulated information to dynamically adjust a prestaging policy as said storage device receives and processes said plurality of requests, said prestaging policy defining a current number of data blocks to be prestaged in said cache; and

wherein said accumulating information further includes determining an average number of contiguous sequential blocks accessed for each one of said plurality of I/O requests.

2. The method according to claim 1 , wherein said receiving and processing a plurality of input/output (I/O) requests by said storage device further comprises receiving and processing a plurality of contiguous, sequential input/output (I/O) requests by said storage device.

3. The method according to claim 1 , wherein said accumulating information further includes;

determining a percentage of previously prestaged data blocks that were actually referenced.

4. The method according to claim 1 , wherein said accumulating information further includes:

determining a current utilization of said storage device.

5. The method according to claim 1 , further comprising:

determining a percentage of previously prestaged data blocks that were actually referenced;

determining an adjusted prestage count utilizing said determined average number and said percentage of previously prestaged data blocks that were actually referenced; and

utilizing said adjusted prestage count to dynamically adjust said prestaging policy.

6. The method according to claim 5 , further comprising:

determining said adjusted prestage count by multiplying said average number by said percentage of previously prestaged data block that were actually referenced.

7. The method according to claim 5 , further comprising:

determining a current utilization of said storage device;

dynamically adjusting said prestaging policy by determining a new number of data blocks to be prestaged utilizing said current utilization and said adjusted prestage count.

8. The method according to claim 7 , wherein said determining said new number of data blocks further comprises:

determining a percentage of time said storage device is being utilized;

converting said percentage into a fraction; and

determining said new number of data blocks by:

dividing said fraction by 0.6 to produce a first result;

subtracting said first result from 2 to produce a second result; and

multiplying said adjusted prestage count by said second result to produce said new number of data blocks.

9. A data processing system including a storage device for dynamically determining and adjusting a number of data blocks to be prestaged in a cache included in said storage device, said system comprising:

said system including a CPU executing code for receiving and processing a plurality of input/output (I/O) requests by said storage device;

said CPU executing code for accumulating information about said plurality of I/O requests and said processing of said plurality of I/O requests by said storage device;

said CPU executing code for utilizing said accumulated information to dynamically adjust a prestaging policy as said storage device receives and processes future I/O requests, said prestaging policy defining a current number of data blocks to be prestaged in said cache; and

wherein said CPU executing code for accumulate information further includes said CPU executing code for determining an average number of contiguous sequential blocks accessed for each one of said plurality of I/O requests.

10. The system according to claim 9 , wherein said CPU executing code for receiving and processing a plurality of input/output (I/O) requests by said storage device further comprises said CPU executing code for receiving and processing a plurality of contiguous, sequential input/output (I/O) requests by said storage device.

11. The system according to claim 9 , wherein said CPU executing code for accumulating information further includes:

said CPU executing code f& determining a percentage of previously prestaged data blocks that were actually referenced.

12. The system according to claim 9 , wherein said CPU executing code for accumulating information further includes:

said CPU executing code for determining a current utilization of said storage device.

13. The system according to claim 9 , further comprising:

said CPU executing code for determining a percentage of previously prestaged data blocks that were actually referenced;

said CPU executing code for determining an adjusted prestage count utilizing said determined average number and said percentage of previously prestage data blocks that were actually referenced; and

said CPU executing code for utilizing said adjusted prestage count to dynamically adjust said prestaging policy.

14. The system according to claim 13 , further comprising:

said CPU executing code for determining said adjusted prestage count by multiplying said average number by said percentage of previously prestaged data block that were actually referenced.

15. The system according to claim 13 , further comprising:

said CPU executing code for determining a current utilization of said storage device; and

said CPU executing code for dynamically adjusting said prestaging policy by determining a new number of data blocks to be prestaged utilizing said current utilization and said adjusted prestage count.

16. The system according to claim 15 , wherein said CPU executing code for determining said new number of data blocks further comprises:

said CPU executing code for determining a percentage of time said storage device is being utilized;

said CPU executing code for converting said percentage into a fraction; and

said CPU executing code for determining said new number of data blocks by:

dividing said fraction by 0.6 to produce a first result;

subtracting said first result from 2 to produce a second result; and

multiplying said adjusted prestage count by said second result to produce said new number of data blocks.

17. A computer program product for dynamically determining and adjusting a number of data blocks to be prestaged in a cache included in a storage device, said product comprising:

instruction means for receiving and processing a plurality of input/output (I/O) requests by said storage device;

instruction means for accumulating information about said plurality of I/O requests and said processing of said plurality of I/O requests by said storage device;

instruction means for utilizing said accumulated information to dynamically adjust a prestaging policy as said storage device receives and processes further I/O requests, said prestaging policy defining a current number of data blocks to be prestaged in said cache; and

wherein said instruction means for accumulating information further includes instruction means for determining an average number of contiguous sequential blocks accessed for each one of said plurality of I/O requests.

18. The product according to claim 17 , further comprising:

instruction means for determining a percentage of previously prestaged data blocks that were actually referenced;

instruction means for determining an adjusted prestage count utilizing said determined average number and said percentage of previously prestaged data blocks that were actually referenced; and

instruction means for utilizing said adjusted prestage count to dynamically adjust said prestaging policy.

Assignments (3)
MERGER Recorded Feb 4, 2016
From: STORAGE TECHNOLOGY CORPORATION
To: SUN MICROSYSTEMS, INC.
Reel/Frame 037692/0820 →
MERGER AND CHANGE OF NAME Recorded Feb 4, 2016
From: SUN MICROSYSTEMS, INC.; ORACLE USA, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037694/0966 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 29, 2003
From: HSU, SHIH-LI; SINHA, AMAR NATH
To: STORAGE TECHNOLOGY CORPORATION
Reel/Frame 014880/0050 →