# US 2022/0035673 A1 · Memory allocator for i/o operations

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

- Number: US 2022/0035673 A1
- Document ID: US20220035673A1
- Status: Published application
- Kind: A1
- Application number: 17/085,893
- Filed: 2020-10-30
- Published: 2022-02-03
- Earliest claimed: 2020-07-30
- Assignees: VMware, Inc.
- Applicants: VMware, Inc.
- Inventors: Alex Markuze; Chen Dar; Aran Bergman; Igor Golikov; Israel Cidon; Eyal Zohar
- Web page: https://patentgrep.com/patent/US20220035673A1

## CPC

- G06F 9/5016: {the resource being the memory}
- G06F 9/544: {Buffers; Shared memory; Pipes}
- G06F 12/10: Address translation
- H04L 47/193: at the transport layer, e.g. TCP related
- H04L 47/30: in combination with information about buffer occupancy at either end or at transit nodes
- H04L 49/30: {Peripheral units, e.g. input or output ports}
- H04L 49/9089: {replacing packets in a storage arrangement, e.g. pushout}
- H04L 69/162: {involving adaptations of sockets based mechanisms (secure socket layer H04L63/168)}
- G06F 2209/5011: Pool
- G06F 2212/657: Virtual address space management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Some embodiments provide a novel method for sharing data between user-space processes and kernel-space processes without copying the data. The method dedicates, by a driver of a network interface controller (NIC), a memory address space for a user-space process. The method allocates a virtual region of the memory address space for zero-copy operations. The method maps the virtual region to a memory address space of the kernel. The method allows access to the virtual region by both the user-space process and a kernel-space process.

## Claims

### Claim 1

A method of sharing data between user-space processes and kernel-space processes without copying the data, the method comprising:
dedicating, by a driver of a network interface controller (NIC), a memory address space for a user-space process;
allocating a virtual region of the memory address space of the user-space process for zero-copy operations;
mapping the virtual region to a memory address space of the kernel; and
allowing access to the virtual region by both the user-space process and a kernel-space process.

### Claim 2 (depends on 1)

The method of claim 1, wherein access to the virtual region is limited to a single user.

### Claim 3 (depends on 1)

The method of claim 1, wherein the allocated virtual region implements a dedicated receiving (RX) ring accessible by the network interface controller (NIC).

### Claim 4 (depends on 3)

The method of claim 3, wherein the dedicated RX ring is limited to a single tuple.

### Claim 5 (depends on 3)

The method of claim 3, wherein the dedicated RX ring is limited to a defined group of tuples.

### Claim 6 (depends on 1)

The method of claim 1, wherein the allocated virtual region implements a dedicated transmission (TX) ring accessible by network interface controller (NIC).

### Claim 7 (depends on 6)

The method of claim 6, wherein the dedicated TX ring is limited to a single tuple.

### Claim 8 (depends on 6)

The method of claim 6, wherein the dedicated TX ring is limited to a defined group of tuples.

### Claim 9 (depends on 1)

The method of claim 1 further comprising, the user-space process identifying virtual memory allocated to zero-copy operations to be deallocated.

### Claim 10 (depends on 1)

The method of claim 1, wherein, when the amount of memory allocated by the user-space process is more than a threshold amount, the kernel-space process deallocates at least part of the memory allocated by the user-space process.

### Claim 11 (depends on 1)

The method of claim 1, wherein, when the amount of memory allocated by the user-space process is more than a threshold amount, the kernel-space process prevents the user-space process from allocating more memory.

### Claim 12 (depends on 1)

The method of claim 1, wherein the kernel-space process is a guest kernel-space process on a guest virtual machine operating on a host machine, the method further comprising additionally allowing access to the virtual region by a user-space process of the host machine.

### Claim 13 (depends on 1)

The method of claim 1, wherein the kernel-space process is a guest kernel-space process on a guest virtual machine operating on a host machine, the method further comprising additionally allowing access to the virtual region by a kernel-space process of the host.

### Claim 14 (depends on 1)

The method of claim 1, wherein the NIC driver dedicates the memory using an application device queue (ADQ).

### Claim 15

A non-transitory machine readable medium storing a program which when executed by at least one processing unit implements sharing of data between user-space processes and kernel-space processes without copying the data, the program comprising sets of instructions for:
dedicating, by a driver of a network interface controller (NIC), a memory address space for a user-space process;
allocating a virtual region of the memory address space for zero-copy operations;
mapping the virtual region to a memory address space of the kernel; and
allowing access to the virtual region by both the user-space process and a kernel-space process.

### Claim 16 (depends on 15)

The non-transitory machine readable medium of claim 15, wherein access to the virtual region is limited to a single user.

### Claim 17 (depends on 15)

The non-transitory machine readable medium of claim 15, wherein the allocated virtual region implements a dedicated receiving (RX) ring accessible by the network interface controller (NIC).

### Claim 18 (depends on 17)

The non-transitory machine readable medium of claim 17, wherein the dedicated RX ring is limited to a defined group of tuples.

### Claim 19 (depends on 15)

The non-transitory machine readable medium of claim 15, wherein the allocated virtual region implements a dedicated transmission (TX) ring accessible by network interface controller (NIC).

### Claim 20 (depends on 19)

The non-transitory machine readable medium of claim 19, wherein the dedicated TX ring is limited to a defined group of tuples.
