Remote Direct Memory Access
コンピューティングにおいて,Remote Direct Memory Access(RDMA, リモートDMA)とは,あるコンピュータの主記憶から,異なる(リモートの)コンピュータの主記憶への DMA 転送を行うことである。RDMAでは両コンピュータのオペレーティングシステムに入ることなく転送が行われる。 この制限により高スループット,低レイテンシの通信を行うことができるため、特に大規模並列のコンピュータ・クラスターにおいて有用である。
RDMAでは,ネットワークカードにデータをアプリケーションメモリと直接やりとりできる機能を持たせることでゼロコピー通信を可能にする.ゼロコピー通信により,アプリケーションメモリとオペレーティングシステム中のデータバッファの間でのデータの転送を削減することができる.これにより,RDMA転送では CPUや キャッシュ (コンピュータシステム)を用いることなく,あるいはコンテキストスイッチを行うことなく,他の処理と並列にデータを転送できる. RDMAリードまたはライト要求を行うアプリケーションでは,アプリケーションメモリに配置されたデータは直接ネットワークに配送されるため、レイテンシが削減され高速なデータ転送が可能となる。
RDMAにはいくつか問題があり,これは送信先ノードへのリクエストの完了通知がない一方向通信に起因する。単純な解決策は、あるメモリバイトを送信完了通知領域としその変更を送信先ノードが確認する方法であるが,これには当該バイトに対する頻繁なポーリングが必要になる.このポーリングはCPUサイクルを消費するだけでなく 通信可能ノード数に比例してレイテンシや必要メモリ量を増加させるため,MPIを利用するHPCではRMDAの利用は制限されることがある. Send/Recv モデルである,Myrinet や Quadrics 等の他のゼロコピー通信を用いるHPCインターコネクトではこのような一方向通信に関する問題はなく,また性能もよい.これはMyrinetやQuadricsのインターフェースがMPIと酷似しているためである。
RDMAは,データ転送能力を阻害し,ネットワーク性能を低下させ,アプリケーションがデータを取得する速度を妨げ,コンピュータクラスタのスケーラビリティやサイズを制限するプロトコル・オーバヘッドを削減する, しかしながら,RDMAにはそれとは異なるオーバヘッドとして,メモリレジストレーション処理(memory registration)に伴うオーバヘッドが存在することには注意する必要がある. 実際,ゼロコピー通信では通信に利用するメモリ領域が少なくともデータ転送中は主記憶上に確保されることを暗黙的に確保する.時には当該メモリ領域がスワップアウトされないよう処理されることもある.さもなければ,DMAエンジンによって古いデータ領域が利用されてしまいメモリ破壊を引き起こすかもしれないためである. そうならないためによく使われる方法は,ある領域を主記憶上につなぎとめておくメモリレジストレーションであるが,この処理量は大きく,確保するデータ領域のサイズに比例したオーバヘッドを引き起こす. このようなオーバヘッドによる問題を解決するためいくつかの手法が採用されている :
- メモリレジストレーション処理を,クリティカルパスから遅延させることで,レイテンシ増加を防ぐ
- キャッシュ技術を利用しデータをなるべく主記憶上につなぎとめておくことで,同じメモリ領域を何度も通信に用いるアプリケーションではオーバヘッドを削減できる
- 例えばInfiniBand や Myrinetで行われているように,メモリレジストレーション処理とデータ転送ををパイプライン化
- 例えばQuadricsのように,どうにかしてメモリレジストレーション処理の必要性を取り除く
これまでRDMAが採用されにくかった要因として,これまでとは異なるネットワークインフラをインストールする必要性が挙げられる.新しい標準によって物理レイヤとして Ethernet のRDMA実装を,トランスポート層としてTCP/IP を用いることができるようになり,RDMAの性能やレイテンシのアドバンテージを,低コストの標準的な環境で使用できるようになってきた. IETF やInterconnect Software Consortium[1]のような標準化団体におけるRDMAプロトコルとAPI標準策定において, RDMAコンソーシアムと DAT Collaborative[2] が中心的な役割を担っている. また, Oracle CorporationのようなソフトウェアベンダーはこれらのAPIを自社の製品においてサポートし始め,ネットワークカードはRDMA over Ethernet実装の開発を進めている.
現在公開されているRDMA実装は, Virtual Interface Architecture, InfiniBand, iWARPを含んでいる.