Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
SYSTEMS AND METHODS FOR CACHING DATA
Document Type and Number:
WIPO Patent Application WO/2018/104789
Kind Code:
A4
Abstract:
The various embodiments described herein include methods, devices, and systems for caching data. In one aspect, a method is performed at a computing system having one or more processors and memory including a plurality of distinct memory types each assigned to a respective memory tier of a plurality of memory tiers based on a read latency of the memory type. The method includes: (1) identifying a plurality of extents, including a first extent, each of the extents comprising a respective set of related data stored within the memory; (2) determining a first read frequency for the first extent; and (3) storing the first extent in a particular memory tier of the plurality of distinct memory tiers based on the determined first read frequency.

More Like This:
Inventors:
FAREY CHRISTOPHER (GB)
Application Number:
PCT/IB2017/001642
Publication Date:
July 26, 2018
Filing Date:
December 11, 2017
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
STORMAGIC LTD (GB)
International Classes:
G06F12/0868; G06F12/0888; G06F12/08; G06F12/0871; G06F12/0897
Download PDF:
Claims:
AMENDED CLAIMS

received by the International Bureau on 24.05.2018

What is claimed is:

1. A computing system comprising:

memory comprising a plurality of memory blocks and including a plurality of distinct memory types each assigned to a respective memory tier of a plurality of memory tiers based on a read latency of the memory type;

a plurality of caching modules, each caching module of the plurality of caching modules configured to govern data caching for a respective memory type of the plurality of distinct memory types; and

a read tracker module coupled to the memory and the plurality of caching modules, the read tracker module configured to:

identify sets of related data by determining whether memory blocks of the plurality of memory blocks are being read close in time and are physically located close to one another within the memory;

identify a plurality of extents, including a first extent, comprising respective identified sets of related data stored within the memory;

determine a first read frequency for the first extent; and

govern caching of the plurality of extents within the memory, including directing a particular caching module of the plurality of caching modules to store the first extent within a corresponding memory tier of the plurality of distinct memory tiers based on the determined first read frequency.

2. The computing system of claim 1, wherein the plurality of distinct memory types comprises a plurality of distinct types of physical memory.

3. The computing system of claim 2, wherein the plurality of distinct types of physical memory includes hard disk drive (HDD) memory, solid state drive (SSD) memory, and random access memory (RAM).

4. The computing system of claim 2, wherein the total amount of data that can be stored within each memory tier corresponds to a physical storage size of all memory assigned to the respective memory tier.

5. The computing system of claim 1, wherein the plurality of extents includes a second extent that is larger than the first extent. 2

6. The computing system of claim 1 , wherein the memory is partitioned into a plurality of virtual disks, and wherein the read tracker module tracks reads for each of the plurality of virtual disks.

7. The computing system of claim 6, wherein each virtual disk of the plurality of virtual disks is assigned to a respective user.

8. The computing system of claim 6, wherein the read tracker module separately tracks reads for each of the plurality of virtual disks.

9. The computing system of claim 1, wherein the read tracker module assigns the first extent to a particular frequency level of a plurality of frequency levels based on the determined first read frequency.

10. A method for caching data, comprising:

at a computing system having one or more processors and memory, the memory comprising a plurality of memory blocks and including a plurality of distinct memory types each assigned to a respective memory tier of a plurality of memory tiers based on a read latency of the memory type:

identify sets of related data by determining whether memory blocks of the plurality of memory blocks are being read close in time and are physically located close to one another within the memory;

identifying a plurality of extents, including a first extent, each of the extents comprising a respective identified set of related data stored within the memory;

determining a first read frequency for the first extent; and

storing the first extent in a particular memory tier of the plurality of distinct memory tiers based on the determined first read frequency.

1 1. The method of claim 10, wherein identifying a first set of related data includes identifying data that is stored contiguous within the memory and read within a short time window.

12. The method of claim 10, wherein identifying the first extent includes identifying a plurality of data blocks as the first extent. 3

13. The method of claim 10, wherein determining the first read frequency for the first extent comprises determining a number of reads for the first extent during a preset time interval.

14. The method of claim 13, wherein the preset time interval is one or more hours.

15. The method of claim 13, wherein the preset time interval is one or more days.

16. The method of claim 13, further comprising adjusting the preset time interval based on a number of identified extents within the memory.

17. The method of claim 13, wherein the preset time interval includes a non-tracked time period that is excluded from the determination of the first read frequency.

18. The method of claim 13, wherein the first extent comprises a plurality of data blocks; and

wherein determining the number of reads for the first extent comprises incrementing the number of reads after access of one or more of the data blocks.

19. The method of claim 10, further comprising, after storing the first extent in the particular memory tier:

determining an updated read frequency for the first extent; and

in accordance with a determination that the updated read frequency is different than the first read frequency, storing the first extent in a second memory tier of the plurality of memory tiers;

wherein the second memory tier is distinct from the particular memory tier.

20. The method of claim 19, wherein the updated read frequency is greater than the first read frequency and the second memory tier corresponds to a lower read latency than the particular memory tier.

21. The method of claim 19, wherein determining the updated read frequency for the first extent occurs when the first extent is accessed.

22. The method of claim 19, further comprising periodically updating the first read frequency in accordance with a determination that the first extent has not been recently accessed. 4

23. The method of claim 10, further comprising storing, within an extent map, extent information for each extent in the plurality of extents.

24. The method of claim 23, wherein the extent information includes:

location information for the extent within the memory,

a time when the extent was last read, and

a read frequency for the extent.

25. The method of claim 23, further comprising:

determining that the extent map exceeds a predetermined size; and

in accordance with the determination that the extent map exceeds the predetermined size, removing a particular extent of the plurality of extents from the extent map, wherein the particular extent has the lowest read frequency.

26. The method of claim 10, wherein the identifying and determining are performed by a read tracker module.

27. The method of claim 26, wherein the read tracker module is stored within a memory type having the lowest read latency of the plurality of distinct memory types.

28. The method of claim 26, wherein the storing is performed in accordance with instructions from the read tracker module.

29. The method of claim 10, further comprising validating the first extent, the validating comprising:

determining a size of the first extent;

after determining the size of the first extent, receiving one or more read requests corresponding to the first extent;

determining an amount of the first extent read in response to the one or more read requests; and

determining whether the first extent is valid based on a comparison of the determined size of the first extent and the determined amount of the first extent that was read.

30. A computer-readable storage medium storing one or more programs, the one or more programs comprising instructions, which when executed by a computing system having memory comprising a plurality of memory blocks and including a plurality of distinct 5 memory types each assigned to a respective memory tier of a plurality of memory tiers based on a read latency of the memory type, cause the system to:

identify sets of related data by determining whether memory blocks of the plurality of memory blocks are being read close in time and are physically located close to one another within the memory;

identify a plurality of extents, including a first extent, comprising respective identified sets of related data stored within the memory;

determine a first read frequency for the first extent; and

store the first extent in a particular memory tier of the plurality of distinct memory tiers based on the determined first read frequency.