Remote Direct Memory Access Article Index for
Remote
Website Links For
Remote
 

Information About

Remote Direct Memory Access




RDMA supports Zero-copy networking by enabling the Network Adapter to transfer data directly to or from application memory, eliminating the need to copy data between application memory and the data buffers in the operating system. Such transfers require no work to be done by CPUs , Caches , or Context Switches , and transfers continue in parallel with other system operations. When an application performs an RDMA Read or Write request, the application data is delivered directly to the network, reducing latency and enabling fast message transfer.

This strategy presents several problems related to the fact that the target node is not notified of the completion of the request (1-sided communications). The common way to notify it is to change a memory byte when the data has been delivered, but it requires the target to poll on this byte. Not only does this polling consume CPU cycles, but the memory footprint and the latency increases linearly with the number of possible other nodes which limits use of RDMA in High-Performance Computing (HPC) in favor of MPI .

The Send/Recv model used by other Zero-copy HPC interconnects such as Myrinet or Quadrics does not have any of these problems and presents as good performance since their native programming interface is very similar to MPI.

RDMA reduces the need for Protocol overhead, which can squeeze out the capacity to move data across a network, reducing Performance , limiting how fast an application can get the data it needs, and restricting the size and scalability of a Cluster .

However, one must be aware that there also may exists some overhead given the need for memory registration. Zero-copy protocols indeed usually imply to make sure that
the memory area involved in the communications will be kept in main memory, at least during the duration of the transfer. One must for instance make sure that this memory will not be swapped out. Else, the DMA engine might use out-dated data, thus raising the risk of memory corruption. The usual way is to pin memory down so that it
will be kept in main memory, but this creates a somehow unexpected overhead since this memory registration is very expensive, thus increasing the latency linearly with the size of the data. In order to address that issue, there are several attitudes that were adopted :
  • defering memory registration out of the critical path, thus somehow hidding the latency increase.

  • using caching techniques to keep data pinned as long as possible so that the overhead could be reduced for application performing communications in the same memory area several times.

  • pipelining memory registration and data transfer as done on Infiniband or Myrinet for instance.

  • somehow getting rid of the need for registration as Quadrics high-speed networks does.


RDMA’s acceptance is also limited by the need to install a different networking infrastructure. New standards enable support these APIs in their latest products, and network adapters that implement RDMA over Ethernet are being developed.

Common RDMA implementations include the Virtual Interface Architecture , InfiniBand , and IWARP .


NOTES






EXTERNAL LINKS