IP Library Granted Patent US 9,772,949
Granted Patent B2
US 9,772,949 · App. 13/655,195 · Granted Sep 26, 2017

Apparatus, system and method for providing a persistent level-two cache

Inventors: Mark Maybee (Boulder, CO); Mark J. Musante (Westford, MA); Victor Latushkin (Superior, CO)
Assignee: ORACLE INTERNATIONAL CORPORATION
G06F12/0897G06F2212/225G06F2212/6046
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,772,949
App. No.
13/655,195
Granted
Sep 26, 2017
Kind
B2
Abstract

Aspects of the present disclosure involve a level-two persistent cache. In various aspects, a solid-state drive is employed as a level-two cache to expand the capacity of existing caches. In particular, any data that is scheduled to be evicted or otherwise removed from a level-one cache is stored in the level-two cache with corresponding metadata in a manner that is quickly retrievable.

Claims (80)

1. A processor-based method for maintaining a cache, the method comprising:

evicting a data block from a level-one cache to a level-two cache, wherein the level-one cache comprises a volatile memory type, and wherein the level-two cache comprises a persistent memory type;

adding a first data block pointer into a ghost list in the level-one cache at a location identified by a ghost list index associated with the ghost list, wherein the first data block pointer references a location in the level-two cache where the data block is stored; and

adding, into a hash table:

a hash entry, at a location identified by a hash table index associated with the hash table, that includes:

an identifier of the data block; and

the ghost list index;

adding to a header in a data chunk in level-two cache;

a second data block pointer, wherein the second data block pointer references a location in the data chunk where the data block is stored;

the hash table index; and

the hash entry; and

detecting a loss of data in the level-one cache that includes an emptying of the level-one cache;

responding to the detecting a loss of data in the level-one cache by:

analyzing the header of the data chunk in the level-two cache to determine for the data block:

the hash entry;

the second data block pointer; and

the hash table index; and

repopulating the hash entry into the hash table at the location in the hash table identified by the hash table index;

generating the first data block pointer from the second data block pointer; and

repopulating the first data block pointer into the ghost list at the location in the ghost list identified by the ghost list index.

2. The processor-based method of claim 1 , wherein the data chunk further comprises a data section storing the data block and a header section storing the header and the header further comprises a magic number, and wherein analyzing the header includes analyzing the magic number to determine the data chunk is corrupted.

3. The processor-based method of claim 1 , wherein the level-one cache is an adaptive replacement cache.

4. The processor-based method of claim 1 , wherein the level-one cache and the level-two cache are part of a ZFS, wherein the level-one cache comprises dynamic random access memory and the level-two cache comprises one or more solid state drives.

5. The processor-based method of claim 4 , wherein the level-one cache is an adaptive replacement cache.

6. A processor-based system for maintaining a cache, the processor-based system comprising:

a level-two cache, wherein the level-two cache comprises a persistent memory type;

a level-one cache, wherein the level-one cache comprises a volatile memory type, comprising:

a ghost list comprising:

a ghost list index associated with the ghost list; and

a first data block pointer stored at a location identified by the ghost list index, wherein the first data block pointer references a location in the level-two cache where a data block is stored; and

a hash table comprising:

a hash table index associated with the hash table,

a hash entry, at the location identified by the hash table index, that includes:

an identifier of the data block, wherein the data block was evicted from the level-one cache to the level-two cache; and

the ghost list index;

a data chunk, located in the level-two cache, comprising:

the data block; and

a header comprising:

a second data block pointer, wherein the second data block pointer references a location of the data block in the data chunk;

the identifier of the data block;

the hash table index; and

the hash entry;

at least one processor to:

detect a loss of data in the level-one cache that includes an emptying of the level-one cache;

in response to the detecting the loss of data in the level-one cache:

analyze the header of the data chunk in the level-two cache to determine for the data block:

the second data block pointer;

the hash table index; and

the hash entry; and

repopulate the hash entry into the hash table at the location identified by the hash table index;

generate the first data block pointer from the second data block pointer; and

repopulate the first data block pointer into the ghost list at the location identified by the ghost list index.

7. The processor-based system of claim 6 , wherein the data chunk further comprises a data section storing the data block and a header section storing the header and the header further comprises a magic number, and wherein analyzing the header includes analyzing the magic number to determine the data chunk is corrupted.

8. The processor-based system of claim 6 , wherein the level-one cache is an adaptive replacement cache.

9. The processor-based system of claim 6 , wherein the level-on cache and the level-two cache are part of a ZFS, wherein the level-one cache comprises dynamic random access memory and the level-two cache comprises one or more solid state drives.

10. A non-transitory computer readable medium encoded with instructions for maintaining a cache executable by a processor, the instructions comprising:

evicting a data block from a level-one cache to a level-two cache, wherein the level-one cache comprises a volatile memory type, and wherein the level-two cache comprises a persistent memory type;

adding a first data block pointer into a ghost list in the level-one cache at a location identified by a ghost list index associated with the ghost list, wherein the first data block pointer references a location in the level-two cache where the data block is stored; and

adding, into a hash table:

a hash entry, at a location identified by a hash table index associated with the hash table, that includes:

an identifier of the data block; and

the ghost list index;

adding to a header in a data chunk in level-two cache;

a second data block pointer, wherein the second data block pointer references a location in the data chunk where the data block is stored;

the hash table index; and

the hash entry; and

detecting a loss of data in the level-one cache that includes an emptying of the level-one cache;

responding to the detecting a loss of data in the level-one cache by:

analyzing the header of the data chunk in the level-two cache to determine for the data block:

the hash entry;

the second data block pointer; and

the hash table index; and

repopulating the hash entry into the hash table at the location in the hash entry identified by the hash table index;

generating the first data block pointer from the second data block pointer; and

repopulating the first data block pointer into the ghost list at the location in the ghost list identified by the ghost list index.

11. The non-transitory computer readable medium of claim 10 , wherein the data chunk further comprises a data section storing the data block and a header section storing the header and the header further comprises a magic number, and wherein analyzing the header includes analyzing the magic number to determine the data chunk is corrupted.

12. The non-transitory computer readable medium of claim 10 , wherein the level-one cache is an adaptive replacement cache.

13. The non-transitory computer readable medium of claim 10 , wherein the level-on cache and the level-two cache are part of a ZFS, wherein the level-one cache comprises dynamic random access memory and the level-two cache comprises one or more solid state drives.

14. The non-transitory computer readable medium of claim 13 , wherein the level-one cache is an adaptive replacement cache.

15. The processor-based system of claim 9 , wherein the level-one cache is an adaptive replacement cache.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 18, 2012
From: MAYBEE, MARK; MUSANTE, MARK J.; LATUSHKIN, VICTOR
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 029154/0280 →
Continuity (1)
Related Publication 20140115244A1 · Apr 24, 2014