# US 10,313,471 B2 · Persistent-memory management

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,313,471 B2
- Document ID: US10313471B2
- Status: Granted
- Kind: B2
- Application number: 15/699,052
- Filed: 2017-09-08
- Published: 2018-04-19
- Granted: 2019-06-04
- Earliest claimed: 2016-10-19
- Assignees: Red Hat, Inc.
- Applicants: Red Hat, Inc.
- Inventors: Luis Pablo Pabon; Jeffrey Alan Brown; Henry Dan Lambright
- Web page: https://patentgrep.com/patent/US10313471B2

## CPC

- H04L 67/568: Storing data temporarily at an intermediate stage, e.g. caching
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 13/28: using burst mode transfer, e.g. direct memory access {DMA}, cycle steal (G06F13/32 takes precedence)
- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Data can be stored in a persistent-memory device, rather than a hard drive, of a computing device. A copy of the data can also be stored in another persistent-memory device of a remote computing device. For example, a central processing unit (of the computing device) can perform a first write operation to cause a file to be stored in the persistent-memory device. A memory controller can perform a second write operation to cause another memory controller of the remote computing device to store a copy of the file in the other persistent-memory device of the remote computing device.

## Claims

### Claim 1

A system comprising:
a plurality of computing devices communicatively coupled to one another over a network, each computing device of the plurality of computing devices comprising:
a memory device;
a central processing unit that is communicatively coupled to the memory device, the central processing unit being configured to perform a first write operation for causing a file to be stored in the memory device; and
a memory controller that is separate from and communicatively coupled to the central processing unit and the memory device, the memory controller being configured to perform, subsequent to and based on the first write operation, a second write operation by:
causing a first memory controller of a first computing device of the plurality of computing devices to store a first portion of a copy of the file in a first memory device of the first computing device; and
causing a second memory controller of a second computing device of the plurality of computing devices to store a second portion of the copy of the file in a second memory device of the second computing device, wherein the second portion is different from the first portion.

### Claim 2 (depends on 1)

The system of claim 1, wherein:
the memory controller is included in a network interface controller that is configured to perform the second write operation according to a remote direct memory access (RDMA) protocol; and
the first memory controller of the first computing device is configured to store the first portion of the copy of the file in the first memory device without first storing the first portion of the copy of the file in a buffer that is separate from the first memory device.

### Claim 3 (depends on 1)

The system of claim 1, wherein the memory controller is further configured to:
allocate a first segment of the memory device to storing data from another computing device of the plurality of computing devices; and
allocate a second segment of the memory device for storing local data.

### Claim 4 (depends on 3)

The system of claim 3, wherein the memory controller is further configured to:
receive a request to store the data from the other computing device;
determine that the first segment of the memory device is allocated to the other computing device; and
based on determining that the first segment is allocated to the other computing device, store the data from the other computing device in the first segment.

### Claim 5 (depends on 1)

The system of claim 1, wherein the first memory device is a first persistent memory device and the second memory device is a second persistent memory device.

### Claim 6 (depends on 1)

The system of claim 1, wherein the memory controller is configured to perform the second write operation by:
updating a database to indicate that the first portion of the copy of the file is stored on the first computing device and the second portion of the copy of the file is stored on the second computing device.

### Claim 7 (depends on 6)

The system of claim 6, wherein the memory controller is configured to, in response to an event:
determine, using the database, that the first portion of the copy of the file is stored on the first computing device and the second portion of the copy of the file is stored on the second computing device;
retrieve the first portion of the copy of the file from the first computing device and the second portion of the copy of the file from the second computing device; and
recreate the file by combining the first portion of the copy of the file and the second portion of the copy of the file.

### Claim 8

A method comprising:
performing, by a central processing unit of a computing device, a first write operation by causing a file to be stored in a memory device of the computing device; and
performing, by a memory controller that is separate from the central processing unit, a second write operation subsequent to and based on to the first write operation, wherein the memory controller performs the second write operation by:
causing a first memory controller of a first computing device of a plurality of computing devices to store a first portion of a copy of the file in a first memory device of the first computing device; and
causing a second memory controller of a second computing device of the plurality of computing devices to store a second portion of the copy of the file in a second memory device of the second computing device, wherein the second portion is different from the first portion.

### Claim 9 (depends on 8)

The method of claim 8, wherein:
the memory controller is included in a network interface controller that performs the second write operation according to a remote direct memory access (RDMA) protocol; and
the first memory controller of the first computing device stores the first portion of the copy of the file in the first memory device without first storing the first portion of the copy of the file in a buffer that is separate from the first memory device.

### Claim 10 (depends on 8)

The method of claim 8, wherein the memory controller:
allocates a first segment of the memory device to storing data from another computing device; and
allocates a second segment of the memory device for storing local data.

### Claim 11 (depends on 10)

The method of claim 10, wherein the memory controller:
receives a request to store the data from the other computing device;
determines that the first segment of the memory device is allocated to the other computing device; and
based on determining that the first segment is allocated to the other computing device, stores the data from the other computing device in the first segment.

### Claim 12 (depends on 8)

The method of claim 8, wherein the first memory device is a first persistent memory device and the second memory device is a second persistent memory device.

### Claim 13 (depends on 8)

The method of claim 8, wherein the memory controller performs the second write operation by:
updating a database to indicate that the first portion of the copy of the file is stored on the first computing device and the second portion of the copy of the file is stored on the second computing device.

### Claim 14 (depends on 13)

The method of claim 13, wherein the memory controller, in response to an event:
determines, using the database, that the first portion of the copy of the file is stored on the first computing device and the second portion of the copy of the file is stored on the second computing device;
retrieves the first portion of the copy of the file from the first computing device and the second portion of the copy of the file from the second computing device; and
recreates the file by combining the first portion of the copy of the file and the second portion of the copy of the file.

### Claim 15

A non-transitory computer readable medium comprising program code that is executable by a memory controller of a computing device for causing the memory controller to:
detect that a central processing unit has issued a first write operation configured to cause a file to be stored in a memory device of the computing device; and
subsequent to and based on the first write operation, perform a second write operation by:
causing a first memory controller of a first computing device of the plurality of computing devices to store a first portion of a copy of the file in a first memory device of the first computing device; and
causing a second memory controller of a second computing device of the plurality of computing devices to store a second portion of the copy of the file in a second memory device of the second computing device, wherein the second portion is different from the first portion.

### Claim 16 (depends on 15)

The non-transitory computer readable medium of claim 15, further comprising program code that is executable by the memory controller for causing the memory controller to:
allocate a first segment of the memory device to storing data from another computing device; and
allocate a second segment of the memory device for storing local data.

### Claim 17 (depends on 16)

The non-transitory computer readable medium of claim 16, further comprising program code that is executable by the memory controller for causing the memory controller to:
receive a request to store the data from the other computing device;
determine that the first segment of the memory device is allocated to the other computing device; and
based on determining that the first segment is allocated to the other computing device, store the data from the other computing device in the first segment.

### Claim 18 (depends on 17)

The non-transitory computer readable medium of claim 17, further comprising program code that is executable by the memory controller for causing the memory controller to:
determine a setting corresponding to the first segment of the memory device; and
store the data from the other computing device in the first segment according to the setting.

### Claim 19 (depends on 15)

The non-transitory computer readable medium of claim 15, further comprising program code that is executable by the memory controller for causing the memory controller to:
update a database to indicate that the first portion of the copy of the file is stored on the first computing device and the second portion of the copy of the file is stored on the second computing device.

### Claim 20 (depends on 19)

The non-transitory computer readable medium of claim 19, further comprising program code that is executable by the memory controller for causing the memory controller to, in response to an event:
determine, using the database, that the first portion of the copy of the file is stored on the first computing device and the second portion of the copy of the file is stored on the second computing device;
retrieve the first portion of the copy of the file from the first computing device and the second portion of the copy of the file from the second computing device; and
recreate the file by combining the first portion of the copy of the file and the second portion of the copy of the file.
