# US 10,375,168 B2 · Throughput in openfabrics environments

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

- Number: US 10,375,168 B2
- Document ID: US10375168B2
- Status: Granted
- Kind: B2
- Application number: 15/168,449
- Filed: 2016-05-31
- Published: 2017-11-30
- Granted: 2019-08-06
- Earliest claimed: 2016-05-31
- Assignees: Veritas Technologies LLC
- Applicants: Veritas Technologies LLC
- Inventors: Adhiraj Joshi; Abhijit Toley
- Web page: https://patentgrep.com/patent/US10375168B2

## CPC

- 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]
- G06F 3/061: {Improving I/O performance}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- 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/568: Storing data temporarily at an intermediate stage, e.g. caching
- G06F 2213/2806: Space or buffer allocation for DMA transfers
- 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

Disclosed herein are systems, methods, and processes to improve throughput in OpenFabrics and Remote Direct Memory Access (RDMA) computing environments. Data and a header is received. Buffers in which the data and the header are to be written are identified. Placement information for the data and the header is determined based on a size of each buffer, a page-boundary-alignment of the data, and a header alignment of the header. The data and the header are written to the buffer(s) using the placement information. In such computing environments, throughout can be improved by writing data on page boundaries and the header on a header boundary in a second to last buffer.

## Claims

### Claim 1

A computer-implemented method comprising:
receiving data and a header;
determining a minimum number of buffers that are configured to collectively store the data and the header, wherein
the minimum number is an integer greater than or equal to two;
determining placement information for the data and the header within the buffers,
wherein
the placement information is determined based, at least in part, on
a size of each of the buffers,
a page-boundary-alignment of the data,
a header alignment of the header, and
the placement information identifies a second-to-last buffer; and
writing the data and the header to the buffers, wherein
the writing of the data uses the placement information,
the data is written on page boundaries, and
the header is written on a header boundary of the second-to-last buffer.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein
using the placement information results in
utilizing the minimum number of buffers,
the data being page-boundary-aligned when written to the minimum number of buffers, and
minimizing on-wire wastage.

### Claim 3 (depends on 1)

The computer-implemented method of claim 1, further comprising:
coalescing the header and the data into a Remote Direct Memory Access (RDMA) write by mapping the header and the data comprised in a plurality of source buffers to the buffers based on the placement information.

### Claim 4 (depends on 3)

The computer-implemented method of claim 3, wherein
the RDMA write comprises a 32-bit data space.

### Claim 5 (depends on 4)

The computer-implemented method of claim 4, further comprising:
including an offset of the header in the 32-bit data space.

### Claim 6 (depends on 1)

The computer-implemented method of claim 1, further comprising:
selecting one or more additional buffers if the data cannot be page-boundary aligned in the minimum number of buffers.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1, wherein
the minimum number of buffers comprise one or more destination buffers.

### Claim 8

A non-transitory computer-readable storage medium storing program instructions executable to:
receive data and a header;
determine a minimum number of buffers that are configured to collectively store the data and the header, wherein
the minimum number is an integer greater than or equal to two;
determine placement information for the data and the header within the buffers, wherein the placement information is determined based, at least in part, on
a size of each of the buffers,
a page-boundary-alignment of the data,
a header alignment of the header, and
the placement information identifies a second-to-last buffer; and
write the data and the header to the buffers, wherein
writing the data uses the placement information,
the data is written on page boundaries, and
the header is written on a header boundary of the second-to-last buffer.

### Claim 9 (depends on 8)

The non-transitory computer-readable storage medium of claim 8, wherein
using the placement information results in
utilizing the minimum number of buffers,
the data being page-boundary-aligned when written to the minimum number of buffers, and
minimizing on-wire wastage.

### Claim 10 (depends on 8)

The non-transitory computer-readable storage medium of claim 8, further comprising:
coalescing the header and the data into a Remote Direct Memory Access (RDMA) write by mapping the header and the data comprised in a plurality of source buffers to the buffers based on the placement information, wherein
the RDMA write comprises a 32-bit data space; and
including an offset of the header in the 32-bit data space.

### Claim 11 (depends on 8)

The non-transitory computer-readable storage medium of claim 8, further comprising:
selecting one or more additional buffers if the data cannot be page-boundary aligned in the minimum number of buffers.

### Claim 12 (depends on 8)

The non-transitory computer-readable storage medium of claim 8, wherein
the minimum number of buffers comprise one or more destination buffers.

### Claim 13

A system comprising:
one or more processors; and
a memory coupled to the one or more processors, wherein the memory stores program instructions executable by the one or more processors to:
receive data and a header;
determine a minimum number of buffers that are configured to collectively store the data and the header, wherein
the minimum number is an integer greater than or equal to two;
determine placement information for the data and the header within the buffers, wherein
the placement information is determined based, at least in part, on
a size of each of the buffers,
a page-boundary-alignment of the data, and
a header alignment of the header, and
the placement information identifies a second-to-last buffer; and
write the data and the header to the buffers, wherein
writing the data uses the placement information,
the data is written on page boundaries, and
the header is written on a header boundary of the second-to-last buffer.

### Claim 14 (depends on 13)

The system of claim 13, wherein
using the placement information results in
utilizing the minimum number of buffers,
the data being page-boundary-aligned when written to the minimum number of buffers, and
minimizing on-wire wastage.

### Claim 15 (depends on 13)

The system of claim 13, further comprising:
coalescing the header and the data into a Remote Direct Memory Access (RDMA) write by mapping the header and the data comprised in a plurality of source buffers to the buffers based on the placement information, wherein
the RDMA write comprises a 32-bit data space; and
including an offset of the header in the 32-bit data space.

### Claim 16 (depends on 13)

The system of claim 13, further comprising:
selecting one or more additional buffers if the data cannot be page-boundary aligned in the minimum number of buffers.

### Claim 17 (depends on 13)

The system of claim 13, wherein
the minimum number of buffers comprise one or more destination buffers.
