IP Library Granted Patent US 9,189,407
Granted Patent B2
US 9,189,407 · App. 13/403,015 · Granted Nov 17, 2015

Pre-fetching in a storage system

Inventors: Efraim Zeidner (Haifa, IL); Leo Corry (Ramat Gan, IL)
Assignee: INFINIDAT LTD.
G06F12/0868G06F12/0862G06F9/30047G06F9/383G06F11/3452G06F2212/262Y02B60/1225Y02B60/165
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 9,189,407
App. No.
13/403,015
Granted
Nov 17, 2015
Kind
B2
Abstract

A storage system, a non-transitory computer readable medium and a method of pre-fetching. The method may include determining, by a pre-fetch module of the storage system, to fetch a certain data portion from a data storage device of the storage system to a cache memory of the storage system; wherein the certain data portion belongs to a certain statistical segment that belongs to at least one logical volume; determining, by a pre-fetch module of the storage system, to pre-fetch at least one additional data portion to the cache memory based upon input/output (I/O) activity statistics associated with the certain statistical segment; wherein the I/O activity statistics comprises timing information related to I/O activities; fetching the certain data portion; and pre-fetching the at least one additional data portion if it is determined to pre-fetch the at least one additional data portions.

Claims (72)

1. A method of pre-fetching, comprising:

determining, by a pre-fetch module of a storage system, to fetch a certain data portion that was requested by a host computer coupled to the storage system, from a data storage device of the storage system to a cache memory of the storage system; wherein the certain data portion belongs to a certain statistical segment that belongs to at least one logical volume;

determining, by a pre-fetch module of the storage system, to pre-fetch at least one additional data portion that was not requested by the host computer, to the cache memory based upon input/output (I/O) activity statistics associated with the certain statistical segment;

wherein the I/O activity statistics associated with the certain statistical segment comprises timing information related to I/O activities associated with the certain statistical segment;

wherein one or more additional data portions of the at least one additional data portion belong to an additional statistical segment that differs from the certain statistical segment;

wherein I/O activity statistics associated with the additional statistical segment comprises timing information related to I/O activities associated with the additional statistical segment;

wherein the I/O activity statistics associated with the certain statistical segment is represented by an activity vector of the certain statistical segment;

wherein the I/O activity statistics associated with the additional statistical segment is represented by an activity vector of the additional statistical segment;

wherein a distance between the activity vector of the certain statistical segment and the activity vector of the additional statistical segment is less than a similarity threshold;

fetching the certain data portion; and

pre-fetching the at least one additional data portion if it is determined to pre-fetch the at least one additional data portions.

2. The method according to claim 1 wherein the certain statistical segment belongs to a certain logical volume of the at least one logical volume.

3. The method according to claim 2 wherein the additional statistical segment belongs to an additional logical volume that differs from the certain logical volume.

4. The method according to claim 2 wherein the additional statistical segment belongs to the certain logical volume.

5. The method according to claim 1 , wherein the certain data portion and all of the at least one additional data portion belong to the certain statistical segment.

6. The method according to claim 1 , wherein one or more additional data portions of the at least one additional data portion belong to an additional statistical segment that differs from the certain statistical segment.

7. The method according to claim 6 , wherein the determining to pre-fetch the at least one additional data portion is further responsive to I/O activity statistics of the additional statistical segment.

8. The method according to claim 1 , comprising updating the similarity threshold.

9. The method according to claim 1 , wherein the I/O activity statistics associated with the certain statistical segment represent a frequency of I/O activities associated with the certain statistical segment.

10. The method according to claim 1 , wherein the I/O activity statistics associated with the certain statistical segment represent types of I/O activities associated with the certain statistical segment.

11. The method according to claim 1 , wherein the I/O activity statistics associated with the certain statistical segment represent types and frequency of I/O activities associated with the certain statistical segment.

12. The method according to claim 1 , wherein the activity vector of the certain statistical segment comprises an activity counter field, an activity timestamp field, a defragmentation level field and a defragmentation frequency field.

13. The method according to claim 1 , wherein the certain data portion and the at least one additional data portion are all the data portions of the certain statistical segment.

14. The method according to claim 1 , wherein the certain data portion and the at least one additional data portion are a subset of all the data portions of the certain statistical segment.

15. The method according to claim 1 , wherein the I/O activity statistics that is associated with the certain statistical segment is indicative of a number of I/O accesses to the certain statistical segment during a current activity period;

wherein the method comprises determining, by the pre-fetch module to pre-fetch the at least one additional data portion of the certain statistical segment to the cache memory if the number of I/O accesses to the certain statistical segment during the current activity period is below an activity threshold.

16. The method according to claim 1 , wherein the I/O activity statistics that is associated with the certain statistical segment is indicative of a number of I/O accesses to the certain statistical segment during a current activity period;

wherein the method comprises determining, by the pre-fetch module to pre-fetch at least one additional data portion of the certain statistical segment to the cache memory if the number of I/O accesses to the certain statistical segment during the current activity period is above an activity threshold.

17. The method according to claim 1 , wherein the I/O activity statistics that is associated with the certain statistical segment is indicative of a number of I/O accesses to the certain statistical segment during a current activity period;

wherein the method comprises determining, by the pre-fetch module, to pre-fetch the at least one additional data portion of the certain statistical segment to the cache memory if the number of I/O accesses to the certain statistical segment during the current activity period belongs to a certain range of I/O activity levels out of multiple different I/O activity levels.

18. The method according to claim 1 , wherein the I/O activity statistics that is associated with the certain statistical segment is indicative of a number of I/O accesses to the certain statistical segment during a current activity period;

wherein the method comprises determining not to pre-fetch the at least one additional data portion of the certain statistical segment if the number of I/O accesses to the certain statistical segment during the current activity period is above an activity threshold.

19. The method according to claim 1 , wherein the I/O activity statistics that is associated with the certain statistical segment is indicative of a number of I/O accesses to the certain statistical segment during a current activity period;

wherein the method comprises determining not to pre-fetch the at least one additional data portion of the certain statistical segment if the number of I/O accesses to the certain statistical segment during the current activity period is below an activity threshold.

20. The method according to claim 1 , wherein each virtual bucket out of multiple virtual buckets maintains a list of statistical segments accessed during a time interval, wherein different virtual buckets of the multiple virtual buckets maintain lists of statistical segments accessed during different time intervals; and wherein the method comprises maintaining the multiple virtual buckets.

21. The method according to claim 20 , comprising determining to pre-fetch additional data portions that belong to at least one additional statistical segment that is listed in a certain virtual bucket in which the certain statistical segment is listed; wherein the certain virtual buckets belongs to the multiple virtual buckets.

22. The method according to claim 20 , comprising determining to pre-fetch additional data portions that belong to at least one additional statistical segment that is listed in a certain virtual bucket that is proximate to a virtual bucket in which the certain statistical segment is listed; wherein the certain virtual buckets belongs to the multiple virtual buckets.

23. A storage device, comprising:

a cache memory;

at least one data storage device that differs from the cache memory;

an I/O activity statistical module arranged to generate I/O activity statistics for each statistical segment out of multiple statistical segments of a virtual unit space;

a fetch module arranged to determine to fetch a certain data portion that was requested by a host computer coupled to the storage system, from a data storage device; wherein the certain data portion belongs to a certain statistical segment that belongs to at least one logical volume;

and to fetch the certain data portion;

a pre-fetch module arranged

to determine to pre-fetch at least one additional data portion that was not requested by the host computer, to the cache memory based upon an input/output (I/O) activity pattern associated with the certain statistical segment;

wherein the I/O activity statistics associated with the certain statistical segment comprises timing information related to I/O activities associated with the certain statistical segment;

wherein one or more additional data portions of the at least one additional data portion belong to an additional statistical segment that differs from the certain statistical segment;

wherein I/O activity statistics associated with the additional statistical segment comprises timing information related to I/O activities associated with the additional statistical segment;

wherein the I/O activity statistics associated with the certain statistical segment is represented by an activity vector of the certain statistical segment;

wherein the I/O activity statistics associated with the additional statistical segment is represented by an activity vector of the additional statistical segment;

wherein a distance between the activity vector of the certain statistical segment and the activity vector of the additional statistical segment is less than a similarity threshold;

and

to pre-fetch the at least one additional data portion if it is determined to pre-fetch the at least one additional data portions.

24. The storage system according to claim 23 , wherein the certain data portion and all of the at least one additional data portion belong to the certain statistical segment.

25. The storage system according to claim 23 , wherein one or more additional data portions belong to an additional statistical segment that differs from the certain statistical segment.

26. The storage system according to claim 25 , wherein the pre-fetch module is arranged to determine to pre-fetch the at least one additional data portion in response to I/O activity statistics of the additional statistical segment.

27. The storage system according to claim 23 , wherein the storage system is arranged to update the similarity threshold.

28. The storage system according to claim 23 , wherein the I/O activity statistics associated with the certain statistical segment represent a frequency of I/O activities associated with the certain statistical segment.

29. The storage system according to claim 23 , wherein the I/O activity statistics associated with the certain statistical segment represent types of I/O activities associated with the certain statistical segment.

30. The storage system according to claim 23 , wherein the I/O activity statistics associated with the certain statistical segment represent types and frequency of I/O activities associated with the certain statistical segment.

31. The storage system according to claim 23 , wherein the activity vector of the certain statistical segment comprises an activity counter field, an activity timestamp field, a defragmentation level field and a defragmentation frequency field.

32. The storage system according to claim 23 , wherein the certain data portion and the at least one additional data portion are all the data portions of the certain statistical segment.

33. The storage system according to claim 23 , wherein the certain data portion and the at least one additional data portion are a subset of all the data portions of the certain statistical segment.

34. The storage system according to claim 23 , wherein the I/O activity statistics that is associated with the certain statistical segment is indicative of a number of I/O accesses to the certain statistical segment during a current activity period; wherein the pre-fetch module is arranged to determine to pre-fetch the at least one additional data portion of the certain statistical segment to the cache memory if the number of I/O accesses to the certain statistical segment during the current activity period is below an activity threshold.

35. The storage system according to claim 23 , wherein the I/O activity statistics that is associated with the certain statistical segment is indicative of a number of I/O accesses to the certain statistical segment during a current activity period; wherein the pre-fetch module is arranged to determine to pre-fetch at least one additional data portion of the certain statistical segment to the cache memory if the number of I/O accesses to the certain statistical segment during the current activity period is above an activity threshold.

36. The storage system according to claim 23 , wherein the I/O activity statistics that is associated with the certain statistical segment is indicative of a number of I/O accesses to the certain statistical segment during a current activity period; wherein the pre-fetch module is arranged to determine to pre-fetch the at least one additional data portion of the certain statistical segment to the cache memory if the number of I/O accesses to the certain statistical segment during the current activity period belongs to a certain range of I/O activity levels out of multiple different I/O activity levels.

37. The storage system according to claim 23 , wherein the I/O activity statistics associated with the certain statistical segment is indicative of a number of I/O accesses to the certain statistical segment during a current activity period; wherein the pre-fetch module is arranged to determine not to pre-fetch the at least one additional data portion of the certain statistical segment if the number of I/O accesses to the certain statistical segment during the current activity period is above an activity threshold.

38. The storage system according to claim 23 , wherein the I/O activity statistics associated with the certain statistical segment is indicative of a number of I/O accesses to the certain statistical segment during a current activity period; wherein the pre-fetch module is arranged to determine not to pre-fetch the at least one additional data portion of the certain statistical segment if the number of I/O accesses to the certain statistical segment during the current activity period is below an activity threshold.

39. The storage system according to claim 23 , wherein each virtual bucket out of multiple virtual buckets maintains a list of statistical segments accessed during a time interval, wherein different virtual buckets of the multiple virtual buckets maintain lists of statistical segments accessed during different time intervals; and wherein the storage system comprises an allocation unit arranged to maintain the multiple virtual buckets.

40. The storage system according to claim 39 , wherein the pre-fetch module is arranged to determine to pre-fetch additional data portions that belong to at least one additional statistical segment that is listed in a certain virtual bucket in which the certain statistical segment is listed; wherein the certain virtual buckets belongs to the multiple virtual buckets.

41. The storage system according to claim 39 , wherein the pre-fetch module is arranged to determine to pre-fetch additional data portions that belong to at least one additional statistical segment that is listed in a certain virtual bucket that is proximate to a virtual bucket in which the certain statistical segment is listed; wherein the certain virtual buckets belongs to the multiple virtual buckets.

42. A non-transitory computer readable medium that stores instructions for: determining, by a pre-fetch module of the storage system of a storage system, to fetch a certain data portion that was requested by a host computer coupled to the storage system, from a data storage device of the storage system to a cache memory of the storage system; wherein the certain data portion belongs to a certain statistical segment that belongs to at least one logical volume; determining, by the pre-fetch module, to pre-fetch at least one additional data portion that was not requested by the host computer, to the cache memory based upon an input/output (I/O) activity pattern associated with the certain statistical segment; wherein the I/O activity statistics associated with the certain statistical segment comprises timing information related to I/O activities associated with the certain statistical segment; wherein one or more additional data portions of the at least one additional data portion belong to an additional statistical segment that differs from the certain statistical segment; wherein I/O activity statistics associated with the additional statistical segment comprises timing information related to I/O activities associated with the additional statistical segment; wherein the I/O activity statistics associated with the certain statistical segment is represented by an activity vector of the certain statistical segment; wherein the I/O activity statistics associated with the additional statistical segment is represented by an activity vector of the additional statistical segment; wherein a distance between the activity vector of the certain statistical segment and the activity vector of the additional statistical segment is less than a similarity threshold; fetching the certain data portion; and pre-fetching the at least one additional data portion if it is determined to pre-fetch the at least one additional data portions.

Assignments (10)
SECURITY INTEREST Recorded Jan 30, 2025
From: INFINIDAT LTD
To: KREOS CAPITAL VII AGGREGATOR SCSP,
Reel/Frame 070056/0458 →
RELEASE OF SECURITY INTEREST IN IP RECORDED AT R/F 55653/0854 Recorded Jan 18, 2024
From: SILICON VALLEY BANK
To: INFINIDAT LTD.
Reel/Frame 066344/0064 →
SECURITY INTEREST Recorded Jan 10, 2024
From: INFINIDAT LTD
To: HSBC BANK PLC
Reel/Frame 066268/0584 →
RELEASE OF SECURITY INTEREST Recorded Mar 30, 2021
From: BANK LEUMI LE-ISRAEL B.M.
To: INFINIDAT LTD.
Reel/Frame 055776/0597 →
RELEASE OF SECURITY INTEREST Recorded Mar 30, 2021
From: BANK LEUMI LE-ISRAEL B.M.
To: INFINIDAT LTD.
Reel/Frame 055776/0526 →
SECURITY INTEREST Recorded Mar 18, 2021
From: INFINIDAT LTD.
To: SILICON VALLEY BANK
Reel/Frame 055653/0854 →
SECURITY INTEREST Recorded Apr 12, 2018
From: INFINIDAT LTD.
To: BANK LEUMI LE-ISRAEL B.M.
Reel/Frame 045914/0276 →
LIEN Recorded Jul 18, 2016
From: INFINIDAT LTD.
To: BANK LEUMI LE-ISRAEL B.M.
Reel/Frame 039361/0161 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 6, 2012
From: ZEIDNER, EFRAIM; CORRY, LEO
To: INFINIDAT LTD.
Reel/Frame 027809/0373 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 6, 2012
From: ZEIDNER, EFRAIM; CORRY, LEO
To: INFINIDAT LTD.
Reel/Frame 027809/0680 →
Continuity (4)
Continuation In Part 13174070 · Jun 30, 2011
Provisional Application 61360622 · Jul 1, 2010
Provisional Application 61391657 · Oct 10, 2010
Related Publication 20120166734A1 · Jun 28, 2012