Remote Direct Memory Access
Remote Direct Memory Access(RDMA、リモートDMA)とは、ローカルのコンピュータのメモリから、異なるリモートのコンピュータのメモリへデータのDMA転送を行うことである。RDMAでは、両コンピュータのオペレーティングシステムを経由せずにデータの転送が行われる。これにより、高スループット、低レイテンシの通信を行うことができる。特に、大規模並列のコンピュータ・クラスターにおいて有用である。
ゼロコピー通信では、少なくともデータ転送中は、通信に必要なメモリ領域が主記憶上に確保されることが暗黙の了解となる。メモリ領域の確保を保障するには、対象メモリ領域がスワップアウトされないようにする必要がある。そうでなければ、古いデータ領域を利用してメモリ破壊を引き起こす可能性がある。このためメモリ領域を主記憶上につなぎとめる当該処理が必要であるが、その処理量はデータ領域のサイズに比例したオーバヘッドを引き起こす。この問題を解決するには、次のようないくつかの手法がある。
処理をクリティカルパスから遅延させることでレイテンシ増加を防ぐ
キャッシュ技術を利用しデータをなるべく主記憶上に保持する。同じメモリ領域を何度も通信に用いるアプリケーションではオーバヘッドを削減できる
InfiniBandやMyrinetのように処理とデータ転送をパイプライン化する
Quadricsのように処理の必要性自体を取り除く