IP Library Granted Patent US 8,996,807
Granted Patent B2
US 8,996,807 · App. 13/288,005 · Granted Mar 31, 2015

Systems and methods for a multi-level cache

Inventors: Vikram Joshi (Los Gatos, CA); Yang Luan (San Jose, CA); Michael F. Brown (Campbell, CA); Hrishikesh A. Vidwans (San Jose, CA)
Assignee: Intelligent Intellectual Property Holdings 2 LLC
G06F9/45558G06F12/0897G06F2212/152G06F2212/222G06F2009/45583
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,996,807
App. No.
13/288,005
Granted
Mar 31, 2015
Kind
B2
Abstract

A multi-level cache comprises a plurality of cache levels, each configured to cache I/O request data pertaining to I/O requests of a different respective type and/or granularity. A cache device manager may allocate cache storage space to each of the cache levels. Each cache level maintains respective cache metadata that associates I/O request data with respective cache address. The cache levels monitor I/O requests within a storage stack, apply selection criteria to identify cacheable I/O requests, and service cacheable I/O requests using the cache storage device.

Claims (51)

1. A method for caching input/output (I/O) request data using a non-volatile cache, the method comprising:

monitoring I/O requests at each of a plurality of layers of a storage stack, each cache level of a plurality of cache levels configured to cache I/O request data of a different respective layer of the storage stack; and

in each of the plurality of cache levels;

maintaining cache metadata associating I/O request data cached within the respective cache level with cache addresses of the non-volatile cache device,

applying respective selection criteria to the monitored I/O requests to identify I/O requests that are cacheable within the respective cache level, and

servicing cacheable I/O requests that satisfy the selection criteria within the respective cache level using the non-volatile cache device.

2. The method of claim 1 , wherein each of the cache levels maintains cache metadata within a virtual machine, and wherein the non-volatile cache device operates in a host for the virtual machine.

3. The method of claim 1 , further comprising configuring each of the cache levels to prevent more than one of the cache levels from caching the same I/O request data.

4. The method of claim 1 , wherein a first one of the cache levels and a second one of the cache levels are configured to service the same I/O request data, the method further comprising applying a run-time exclusion rule to service the I/O request data exclusively in one of the first cache level and the second cache level.

5. The method of claim 1 , wherein servicing a cacheable I/O request in a cache level comprises bypassing one or more layers of the storage stack.

6. The method of claim 1 , wherein one of the plurality of cache levels comprises a file level cache, and wherein servicing a cacheable I/O request in the file-level cache level comprises accessing data of the I/O request on the non-volatile cache device to bypass a volume layer of the storage stack.

7. The method of claim 1 , further comprising:

determining an allocation ratio of cache storage space between two or more of the cache levels; and

allocating cache storage space of the non-volatile cache device to the two or more cache levels in accordance with the allocation ratio, wherein each of the two or more cache levels service cacheable I/O requests from cache storage space allocated to the respective cache level.

8. The method of claim 7 , further comprising allocating cache storage space to the two or more cache levels in accordance with an interleaved allocation pattern that is configured to preserve the allocation ratio between the two or more cache levels despite deallocation of contiguous ranges of the cache storage space.

9. The method of claim 1 , further comprising:

determining a virtual machine allocation ratio between two or more virtual machines, each virtual machine comprising two or more cache levels;

allocating cache storage of the non-volatile cache to the two or more virtual machines according to the virtual machine allocation ratio; and

within each of the two or more virtual machines;

determining a cache level allocation ratio between two or more of the cache levels of the virtual machine, and

allocating cache storage space to the two or more cache levels of the virtual machine in accordance with the cache level allocation ratio of the virtual machine and within the cache space allocated to the virtual machine.

10. The method of claim 1 , further comprising:

receiving a notification at a first one of the cache levels from another one of the cache levels regarding I/O request data cached by the first one of the cache levels; and

invalidating the I/O request data cached by the first cache level in response to the notification, the I/O request data identified by the notification.

11. The method of claim 1 , further comprising:

receiving a notification at a file-level cache that one of a volume and a disk has been unmounted;

determining that the file-level cache is configured to cache file data stored on one of the volume and the disk; and

invalidating I/O request data on the non-volatile cache device pertaining to the files stored on one of the storage volume and the storage media device in response to the determination.

12. The method of claim 1 , further comprising monitoring I/O requests in each of a plurality of I/O monitors, each I/O request monitor configured to monitor I/O requests of a respective granularity within the storage stack and corresponding to a respective one of the cache levels.

13. The method of claim 1 , wherein the cache levels comprise one of a file-level cache, an object-level cache, application-level cache, a volume-level cache, a disk-level cache, and a Small Computer System Interface (SCSI)-level cache.

14. The method of claim 1 , further comprising:

each of the cache levels;

applying application criteria to monitored I/O requests, and

servicing the monitored I/O requests within the respective cache level using the non-volatile cache device when the monitored I/O requests satisfy the application criteria.

15. A system for caching data on a non-volatile cache storage device, comprising:

a non-volatile cache storage device;

a multi-level cache comprising an I/O request monitor configured to monitor I/O requests at each of a plurality of layers of a storage stack; and

a plurality of cache levels, each cache level configured to cache I/O request data of a respective granularity of the storage stack,

wherein each cache level is configured to maintain cache metadata associating I/O request data with respective cache addresses of the non-volatile cache storage device, to apply respective selection criteria to monitored I/O requests to identify I/O requests that are cacheable within the respective cache level, and to service cacheable I/O requests within the respective cache level using the non-volatile cache storage device.

16. The system of claim 15 , wherein the cache levels operate within a virtual machine, and wherein the non-volatile cache storage device operates in a host for the virtual machine.

17. The system of claim 15 , wherein the multi-level cache comprises exclusion rules configured to prevent I/O request data from being cached within more than one of the cache levels.

18. The system of claim 15 , wherein one of the cache levels is a file-level cache, and wherein the file-level cache is configured to bypass one or more layers of the storage stack when servicing an I/O storage request using the cache device.

19. A non-transitory computer-readable storage medium comprising instructions to cause a computing device to perform a method for caching I/O request data on a cache device, the method comprising:

monitoring I/O requests at each of a plurality of layers of a storage stack, each cache level configured to cache I/O request data of a different respective layer of the storage stack; and

in each of a plurality of cache levels,

maintaining respective cache metadata associating I/O request data with cache addresses of the cache device,

applying respective selection criteria to the monitored I/O requests to identify I/O requests that are cacheable within the respective cache level, and

servicing I/O requests that satisfy the selection criteria within the respective cache level using the cache device;

wherein the selection criteria of a cache level comprises one of file selection criteria, volume selection criteria, and disk selection criteria.

20. The non-transitory computer-readable storage medium of claim 19 , wherein servicing a cacheable I/O request comprises bypassing one or more layers of the storage stack.

21. The non-transitory computer-readable storage medium of claim 19 , wherein the cache levels maintain cache metadata within a virtual machine, and wherein the cache device operates in a host for virtual machine.

Assignments (12)
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038807/0898 →
RELEASE OF SECURITY INTEREST Recorded May 4, 2016
From: FUSION-IO, INC.
To: SANDISK CORPORATION
Reel/Frame 038748/0880 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2016
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
To: PS12 LUXCO S.A.R.L.
Reel/Frame 038362/0575 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2016
From: PS12 LUXCO S.A.R.L.
To: LONGITUDE ENTERPRISE FLASH S.A.R.L.
Reel/Frame 038362/0604 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2016
From: LONGITUDE ENTERPRISE FLASH SARL
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 038324/0628 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 26, 2014
From: FUSION-IO, INC.
To: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
Reel/Frame 033419/0748 →
SECURITY INTEREST Recorded Jul 24, 2014
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
To: FUSION-IO, INC.
Reel/Frame 033410/0158 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 23, 2014
From: FUSION-IO, INC.
To: INTELLECTUAL PROPERTY HOLDINGS 2 LLC
Reel/Frame 033390/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 6, 2012
From: JOSHI, VIKRAM; LUAN, YANG; BROWN, MICHAEL F.; VIDWANS, HRISHIKESH A.
To: FUSION-IO, INC.
Reel/Frame 027496/0582 →
Continuity (5)
Continuation In Part 13028149 · Feb 15, 2011
Continuation In Part 13192365 · Jul 27, 2011
Provisional Application 61489230 · May 23, 2011
Provisional Application 61521676 · Aug 9, 2011
Related Publication 20120210068A1 · Aug 16, 2012