US 12,260,268 B2
High-performance remote atomic synchronization
Adrian Michaud, Carlisle, MA (US)
Assigned to Dell Products L.P., Round Rock, TX (US)
Filed by Dell Products L.P., Round Rock, TX (US)
Filed on Jan. 20, 2022, as Appl. No. 17/648,515.
Prior Publication US 2023/0229525 A1, Jul. 20, 2023
Int. Cl. G06F 9/46 (2006.01); G06F 9/52 (2006.01)
CPC G06F 9/526 (2013.01) [G06F 2209/521 (2013.01)] 14 Claims
OG exemplary drawing
 
1. A method, comprising:
in an operating environment comprising distributed and/or disaggregated compute nodes that communicate with each other and with a shared computing resource by way of a remote direct memory access (RDMA) fabric, performing operations comprising:
obtaining, by a first one of the compute nodes, ownership of an atomic synchronization object that controls access to the shared computing resource, wherein the atomic synchronization object is a mutually exclusive object (mutex) and the mutex includes an index that comprises a table indexable by a mutex value, and indicating a number of unique compute nodes currently requesting for an access to the shared computing resource, and the mutex comprises an RDMA that is identified by an RDMA memory ID (RID) and is configured to store a maximum number of compute nodes waiting for use of the shared computing resource, and the compute nodes, before attempting to take ownership of the mutex, must obtain and pre-register the RID;
while the first one of the compute nodes has ownership of the atomic synchronization object, requesting, by a second one of the compute nodes, ownership of the atomic synchronization object, wherein the second one of the compute nodes is assigned a first index value;
after the second one of the compute nodes requests ownership of the atomic synchronization object, requesting, by a third one of the compute nodes, ownership of the atomic synchronization object, wherein the third compute node is assigned a second index value and the second index value is prioritized after the first index value;
using, by the first compute node, the shared computing resource until the shared computing resource is no longer needed by the first compute node;
when the shared computing resource is no longer needed by the first compute node, relinquishing, by the first compute node, the ownership of the atomic synchronization object; and
triggering the second one of the compute nodes to wakeup and take ownership of the atomic synchronization object.