Reliable distributed messaging using non-volatile system memory
First Claim
1. A system, comprising:
- one or more processors, anda system memory for the one or more processors, wherein the system memory is linked to the one or more processors and comprises one or more non-volatile memory modules and one or more volatile memory modules;
a persistent storage device having a higher access latency than the system memory;
wherein the system memory comprises program instructions that when executed on the one or more processors;
implement a shared-memory based communication protocol for communications between at least a source program and at least a destination program in accordance with which the source program is granted at least a write permission to one or more target locations within the system memory, and the destination program is granted at least a read permission to the one or more target locations;
wherein the shared-memory based communication protocol allows the source program or the destination program to request, in a system call to an operating system, whether each of the one or more target locations are to be memory mapped in a volatile memory space or a non-volatile memory space;
map, by the operating system in response to the system call, the one or more target locations into the memory space requested in the system call, wherein the volatile memory space is mapped to at least one of the one or more volatile memory modules, and the non-volatile memory space is mapped to at least one of the one or more non-volatile memory modules; and
write, by the source program, a data item to a particular target location, and the particular target location is mapped to a non-volatile memory module of the one or more non-volatile memory modules;
read, by the destination program from the particular target location, subsequent to a failure event that results in a loss of data stored in the one or more volatile modules of the system memory, the data item written by the source program at the particular target location prior to the failure event; and
perform, by the destination program, one or more operations based at least in part on contents of the data item.
1 Assignment
0 Petitions
Accused Products
Abstract
Methods and apparatus for reliable distributed messaging are described. A computer system includes a system memory coupled to one or more processors. The system memory comprises at least a non-volatile portion. A particular location within the non-volatile portion is designated as a target location to which a sender module participating in a communication protocol is granted write permission. A receiver module participating in the communication protocol, subsequent to a failure event that results in a loss of data stored in a volatile portion of the system memory, reads a data item written by the sender program at the target location prior to the failure event. The receiver module performs an operation based on contents of the data item.
-
Citations
21 Claims
-
1. A system, comprising:
-
one or more processors, and a system memory for the one or more processors, wherein the system memory is linked to the one or more processors and comprises one or more non-volatile memory modules and one or more volatile memory modules; a persistent storage device having a higher access latency than the system memory; wherein the system memory comprises program instructions that when executed on the one or more processors; implement a shared-memory based communication protocol for communications between at least a source program and at least a destination program in accordance with which the source program is granted at least a write permission to one or more target locations within the system memory, and the destination program is granted at least a read permission to the one or more target locations; wherein the shared-memory based communication protocol allows the source program or the destination program to request, in a system call to an operating system, whether each of the one or more target locations are to be memory mapped in a volatile memory space or a non-volatile memory space; map, by the operating system in response to the system call, the one or more target locations into the memory space requested in the system call, wherein the volatile memory space is mapped to at least one of the one or more volatile memory modules, and the non-volatile memory space is mapped to at least one of the one or more non-volatile memory modules; and write, by the source program, a data item to a particular target location, and the particular target location is mapped to a non-volatile memory module of the one or more non-volatile memory modules; read, by the destination program from the particular target location, subsequent to a failure event that results in a loss of data stored in the one or more volatile modules of the system memory, the data item written by the source program at the particular target location prior to the failure event; and perform, by the destination program, one or more operations based at least in part on contents of the data item. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method, comprising:
performing, by one or more computing devices comprising one or more respective persistent storage devices and one or more respective processors linked to a respective system memory comprising one or more non-volatile memory modules and one or more volatile memory modules, the system memory having a lower access latency than the respective persistent storage device; implementing a shared-memory based communication protocol for communications between at least a sender module and at least a receiver module in accordance with which the sender module is granted at least a write permission to one or more target locations within the system memory, and the receiver module is granted at least a read permission to the one or more target locations; wherein the shared-memory based communication protocol allows the sender module or the receiver module to request, in a system call to an operating system, whether each of the one or more target locations are to be memory mapped in a volatile memory space or a non-volatile memory space; mapping, by the operating system in response to the system call, the one or more target locations into the memory space requested in the system call, wherein the volatile memory space is mapped to at least one of the one or more volatile memory modules and the non-volatile memory space is mapped to at least one of the one or more non-volatile memory modules; writing, by the sender module, a data item to a particular target location, wherein the particular target location is mapped to a non-volatile memory module of the one or more non-volatile memory modules; reading, by the receiver module from the target location in accordance with the communication protocol, subsequent to a failure event that results in a loss of data stored in a volatile portion of the system memory, the data item written by the sender module at the particular location in accordance with the communication protocol prior to the failure event; and performing, by the receiver module, one or more operations based at least in part on contents of the data item. - View Dependent Claims (7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
17. A non-transitory computer-accessible storage medium storing program instructions that execute on one or more computing devices comprising one or more processors that are linked to system memory, the system memory comprising one or more non-volatile memory modules and one or more volatile memory modules, the system memory having a lower access latency than a persistent storage device of the system, the program instructions executable on the one or more computing devices to:
-
implement a shared-memory based communication protocol for communications between at least a sender module and at least a receiver module in accordance with which the sender module is granted at least a write permission to one or more target locations within the system memory and the receiver module is granted at least a read permission to the one or more target locations, wherein the shared-memory based communication protocol allows the sender module or the receiver module to request, in a system call to an operating system, whether each of the one or more target locations are to be memory mapped in a volatile memory space or a non-volatile memory space; map, by the operating system in response to the system call, the one or more target locations into the memory space requested in the system call, wherein the volatile memory space is mapped to at least one of the one or more volatile memory modules and the non-volatile memory space is mapped to at least one of the one or more non-volatile memory modules; write, by the sender module, a data item to a particular location, wherein the particular location is mapped to a non-volatile memory module of the one or more non-volatile memory modules; read, by the receiver module from the particular location in accordance with the communication protocol, subsequent to a failure event that results in a loss of data stored in the volatile memory space of the system memory, the data item written by the sender module in accordance with the communication protocol at the particular location prior to the failure event; and perform, by the receiver module, one or more operations based at least in part on contents of the data item. - View Dependent Claims (18, 19, 20, 21)
-
Specification