IP Library Granted Patent US 10,009,296
Granted Patent B2
US 10,009,296 · App. 15/582,897 · Granted Jun 26, 2018

Coalescing messages using a network interface controller

Inventor: Burkhard Steinmacher-Burow (Esslingen, DE)
Assignee: International Business Machines Corporation
H04L49/90H04L45/74H04L69/22H04L69/324
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,009,296
App. No.
15/582,897
Granted
Jun 26, 2018
Kind
B2
Abstract

An injection descriptor corresponding to a destination node may be stored in memory. A network interface controller (NIC) may determine that one or more messages added to the injection descriptor are to be transmitted to the destination node. The NIC may then lock the injection descriptor so that no additional message can be added to the injection descriptor, and the NIC may load the one or more messages. The NIC may then generate a network packet that includes the one or more messages, and the NIC may transmit the network packet to the destination node.

Claims (50)

1. A computer implemented method for coalescing messages, the method comprising:

storing, in a memory, an injection descriptor, the injection descriptor corresponding to a destination node;

determining, by a network interface controller (NIC), that two or more messages added to the injection descriptor are to be transmitted to the destination node, the NIC having direct memory access (DMA) to the memory;

locking, by the NIC, the injection descriptor to prevent an additional message from being added to the injection descriptor;

loading, by the NIC, the two or more messages;

clearing, by the NIC and after loading the two or more messages, the injection descriptor;

unlocking, by the NIC and after clearing the injection descriptor, the injection descriptor;

generating, by the NIC, a network packet, the network packet including the two or more messages; and

transmitting, by the NIC, the network packet to the destination node.

2. The method of claim 1 , wherein the generating, by the NIC, the network packet comprises coalescing the two or more messages.

3. The method of claim 1 , the method further comprising:

generating, by an application, a message to be sent to the destination node; and

adding, by the application, the message to the injection descriptor.

4. The method of claim 3 , the method further comprising:

determining, by the application, that the message is the first message added to the injection descriptor; and

adding, by the application, a pointer identifying the injection descriptor to an injection queue served by the NIC.

5. The method of claim 3 , wherein the adding, by the application, the message to the injection descriptor comprises using a compare-and-swap (CAS) instruction.

6. The method of claim 3 , wherein the adding, by the application, the message to the injection descriptor comprises using a load-link/store-conditional (LL/SC) instruction set.

7. The method of claim 1 , wherein the locking the injection descriptor comprises setting a flag in the memory, the flag indicating that the NIC is accessing the injection descriptor.

8. The method of claim 1 , wherein the locking the injection descriptor comprises using a store-like atomic memory operation (AMO).

9. A system for coalescing messages, the system comprising:

a memory containing two or more injection descriptors, each of the two or more injection descriptors corresponding to a destination node;

a network interface controller (NIC); and

a processor, wherein the processor is configured to perform a method comprising:

generating a message to be sent to a first destination node;

adding the message a set of memory addresses associated with a first injection descriptor, the first injection descriptor corresponding to the first destination node;

determining that the message is the only message added to the set of memory addresses associated with the first injection descriptor; and

adding, in response to determining that the message is the only message added to the set of memory addresses, a pointer identifying the first injection descriptor to an injection queue served by the NIC,

wherein the NIC is configured to:

determine that one or more messages added to the set of memory addresses associated with the first injection descriptor are to be transmitted to the first destination node;

lock the first injection descriptor to prevent an additional message from being added to the set of memory addresses associated with the first injection descriptor;

load the one or more messages;

clear, after loading the one or more message, the set of memory associated with the first injection descriptor;

unlock the first injection descriptor;

generate a network packet, the network packet including the one or more messages; and

transmit the network packet to the first destination node.

10. The system of claim 9 , wherein the adding the pointer identifying the first injection descriptor to the injection queue comprises using a compare-and-swap instruction.

11. The system of claim 9 , wherein the adding the pointer identifying the first injection descriptor to the injection queue comprises using a load-link/store-conditional instruction set.

12. The system of claim 9 , wherein at least two messages have been added to the set of memory addresses associated with the first injection descriptor, and wherein the NIC is further configured to coalesce the at least two messages.

13. The system of claim 9 , wherein the locking the first injection descriptor comprises setting a flag in the memory, the flag indicating that the NIC is accessing the first injection descriptor.

14. The system of claim 9 , wherein the locking the first injection descriptor comprises using a store-like atomic memory operation.

15. A computer program product for coalescing messages, the computer program product comprising a computer readable storage medium having program instructions embodied therewith, wherein the computer readable storage medium is not a transitory signal per se, the program instruction executable by a network interface controller (NIC) to cause the NIC to perform a method comprising:

storing, in a memory, an injection descriptor, the injection descriptor corresponding to a destination node;

determining that one or more messages added to the injection descriptor are to be transmitted to the destination node;

locking the injection descriptor to prevent an additional message from being added to the injection descriptor;

loading the one or more messages;

clearing, after loading the one or more messages, the injection descriptor;

unlocking, after clearing the injection descriptor, the injection descriptor;

generating a network packet, the network packet including the one or more messages; and

transmitting the network packet to the destination node.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 1, 2017
From: STEINMACHER-BUROW, BURKHARD
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 042191/0523 →
Continuity (2)
Continuation 14838946 · Aug 28, 2015
Related Publication 20170237836A1 · Aug 17, 2017