Directly mapped buffer cache on non-volatile memory
First Claim
1. A method comprising:
- maintaining a set of data blocks in one or more extents in a non-volatile random-access memory (NVRAM) of a computing device;
allocating a plurality of data buffers in a dynamic random-access memory (DRAM);
allocating a plurality of buffer headers in said DRAM of the computing device, each buffer header of said buffer headers being;
configurable to store a reference to a data buffer of said plurality of data buffers that stores a DRAM-copy of one or more data blocks of said set of data blocks, andconfigurable to store a reference to NVRAM of one or more data blocks of said set of data blocks;
determining whether an access request to access one or more first data blocks in a first extent of the one or more extents is a read request, said access request being made by a first process executing on the computing device; and
when said access request is a read request, granting the first process direct read access of the one or more first data blocks in the NVRAM by at least;
storing, in a first buffer header of said plurality of buffer headers, a reference to the one or more first data blocks in the first extent in the NVRAM,associating the first buffer header with the first process, andthe first process using the first buffer header to directly access the one or more first data blocks in the NVRAM; and
when said access request is not a read request, granting the first process write access by at least;
generating a first DRAM-copy of the one or more first data blocks in a first data buffer of said plurality of data buffers,storing, in the first buffer header, a reference to the first DRAM-copy of the one or more first data blocks,associating the first buffer header with the first process, andthe first process using the first buffer header to access the one or more first data blocks in said first data buffer.
1 Assignment
0 Petitions
Accused Products
Abstract
A method and apparatus for implementing a buffer cache for a persistent file system in non-volatile memory is provided. A set of data is maintained in one or more extents in non-volatile random-access memory (NVRAM) of a computing device. At least one buffer header is allocated in dynamic random-access memory (DRAM) of the computing device. In response to a read request by a first process executing on the computing device to access one or more first data blocks in a first extent of the one or more extents, the first process is granted direct read access of the first extent in NVRAM. A reference to the first extent in NVRAM is stored in a first buffer header. The first buffer header is associated with the first process. The first process uses the first buffer header to directly access the one or more first data blocks in NVRAM.
285 Citations
20 Claims
-
1. A method comprising:
-
maintaining a set of data blocks in one or more extents in a non-volatile random-access memory (NVRAM) of a computing device; allocating a plurality of data buffers in a dynamic random-access memory (DRAM); allocating a plurality of buffer headers in said DRAM of the computing device, each buffer header of said buffer headers being; configurable to store a reference to a data buffer of said plurality of data buffers that stores a DRAM-copy of one or more data blocks of said set of data blocks, and configurable to store a reference to NVRAM of one or more data blocks of said set of data blocks; determining whether an access request to access one or more first data blocks in a first extent of the one or more extents is a read request, said access request being made by a first process executing on the computing device; and when said access request is a read request, granting the first process direct read access of the one or more first data blocks in the NVRAM by at least; storing, in a first buffer header of said plurality of buffer headers, a reference to the one or more first data blocks in the first extent in the NVRAM, associating the first buffer header with the first process, and the first process using the first buffer header to directly access the one or more first data blocks in the NVRAM; and when said access request is not a read request, granting the first process write access by at least; generating a first DRAM-copy of the one or more first data blocks in a first data buffer of said plurality of data buffers, storing, in the first buffer header, a reference to the first DRAM-copy of the one or more first data blocks, associating the first buffer header with the first process, and the first process using the first buffer header to access the one or more first data blocks in said first data buffer. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. One or more non-transitory computer-readable media storing sequence of instructions, wherein the sequences of instructions, when executed by one or more hardware processors, cause:
-
maintaining a set of data blocks in one or more extents in a non-volatile random-access memory (NVRAM) of a computing device; allocating a plurality of data buffers in a dynamic random-access memory (DRAM); allocating a plurality of buffer headers in said DRAM of the computing device, each buffer header of said buffer headers being; configurable to store a reference to a data buffer of said plurality of data buffers that stores a DRAM-copy of one or more data blocks of said set of data blocks, and configurable to store a reference to NVRAM of one or more data blocks of said set of data blocks; determining whether an access request to access one or more first data blocks in a first extent of the one or more extents is a read request, said access request being made by a first process executing on the computing device; and when said access request is a read request, granting the first process direct read access of the one or more first data blocks in the NVRAM by at least; storing, in a first buffer header of said plurality of buffer headers, a reference to the one or more first data blocks in the first extent in the NVRAM, associating the first buffer header with the first process, and the first process using the first buffer header to directly access the one or more first data blocks in the NVRAM; and when said access request is not a read request, granting the first process write access by at least; generating a first DRAM-copy of the one or more first data blocks in a first data buffer of said plurality of data buffers, storing, in the first buffer header, a reference to the first DRAM-copy of the one or more first data blocks, associating the first buffer header with the first process, and the first process using the first buffer header to access the one or more first data blocks in said first data buffer. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20)
-
Specification