Apparatus and methods for caching objects using main memory and persistent memory
First Claim
1. A method in a computer system having main memory and persistent memory, the main memory containing at least one data buffer, and the method comprising the steps of:
- receiving an object from an origin server; and
storing the object in a plurality of data structures, the data structures comprising;
a cyclic index buffer capable of storing index entries comprising an index, the index having a beginning;
a cyclic object buffer capable of storing and retrieving objects by logical block number, the object buffer having a beginning; and
a metadata buffer capable of storing information about the index buffer and the object buffer.
2 Assignments
0 Petitions
Accused Products
Abstract
An object cache stores objects in a cyclic buffer to provide highly efficient creation of cache entries. The cache efficiently manages storage of a large number of small objects because the cache does not write objects into a file system as individual files, rather the cache utilizes cyclical buffers in which to store objects as they are added to the cache. Because of the use of a cyclic buffer, the high-overhead process of purging cache entries never needs to be performed. Cache entries are automatically purged as they are overwritten when the cyclic buffer becomes full and the input pointer wraps around from the end of a cyclic buffer to the beginning of a cyclic buffer. Additionally, in the event of a system crash or disk subsystem malfunction, inspect and repair time is independent of the size of the cache, as opposed to conventional file systems in which the time is proportional to the size of the file system.
92 Citations
35 Claims
-
1. A method in a computer system having main memory and persistent memory, the main memory containing at least one data buffer, and the method comprising the steps of:
-
receiving an object from an origin server; and
storing the object in a plurality of data structures, the data structures comprising;
a cyclic index buffer capable of storing index entries comprising an index, the index having a beginning;
a cyclic object buffer capable of storing and retrieving objects by logical block number, the object buffer having a beginning; and
a metadata buffer capable of storing information about the index buffer and the object buffer. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. In a computer system having main memory and persistent memory, the main memory containing at least one data buffer, the method comprising the steps of:
-
receiving a request for an object, the request comprising an identifier of the object; and
based on the identifier determining whether a cached copy of the object is stored in a plurality of data structures, the data structures comprising;
a cyclic index buffer capable of storing index entries comprising an index, the index having a beginning;
a cyclic object buffer capable of storing and retrieving objects by logical block number, the object buffer having a beginning; and
a metadata buffer capable of storing information about the index buffer and the object buffer. - View Dependent Claims (10, 11, 12, 13)
-
-
14. Apparatus having main memory and persistent memory, the main memory containing at least one data buffer, the apparatus having an execution unit capable of executing program code, and the apparatus comprising:
-
a receiver for receiving an object from an origin server; and
an object writer for storing the object in a plurality of data structures, the data structures comprising;
a cyclic index buffer capable of storing index entries comprising an index, the index having a beginning;
a cyclic object buffer capable of storing and retrieving objects by logical block number, the object buffer having a beginning; and
a metadata buffer capable of storing information about the index buffer and the object buffer. - View Dependent Claims (15, 16, 17, 18, 19, 20, 21)
-
-
22. A computer system having main memory and persistent memory, the main memory containing at least one data buffer, the computer system having an execution unit capable of executing program code, and the computer system comprising:
-
a receiver for receiving a request for an object, the request comprising an identifier of the object; and
a determiner for determining whether a cached copy of the object is stored in a plurality of data structures, based on the identifier, the data structures comprising;
a cyclic index buffer capable of storing index entries comprising an index, the index having a beginning;
a cyclic object buffer capable of storing and retrieving objects by logical block number, the object buffer having a beginning; and
a metadata buffer capable of storing information about the index buffer and the object buffer. - View Dependent Claims (23, 24)
-
-
25. A computer-readable medium capable of causing a computer system to perform a method, the computer system having main memory and persistent memory, the main memory containing at least one data buffer, and the method comprising the steps of:
-
receiving an object from an origin server; and
storing the object in a plurality of data structures, the data structures comprising;
a cyclic index buffer capable of storing index entries comprising an index, the index having a beginning;
a cyclic object buffer capable of storing and retrieving objects by logical block number, the object buffer having a beginning; and
a metadata buffer capable of storing information about the index buffer and the object buffer. - View Dependent Claims (26, 27, 28, 29, 30, 31)
-
-
32. A computer-readable medium capable of causing a computer system to perform a method, the computer system having main memory and persistent memory, the main memory containing at least one data buffer, and the method comprising the steps of:
-
receiving a request for an object, the request comprising an identifier of the object; and
based on the identifier, determining whether a cached copy of the object is stored in a plurality of data structures, the data structures comprising;
a cyclic index buffer capable of storing index entries comprising an index, the index having a beginning;
a cyclic object buffer capable of storing and retrieving objects by logical block number, the object buffer having a beginning; and
a metadata buffer capable of storing information about the index buffer and the object buffer. - View Dependent Claims (33, 34, 35)
-
Specification