RDMA:内部の外観

高性能コンピューティングまたはHPC(High Performance Computing)の媒体としてのクラスターシステムの人気の高まりは、クラスターを構成するプラットフォームの効果的な相互作用を保証するタスクを強調しています。







ここでの主要な場所は、ローカルプラットフォーム内のデータ転送からクラスター内のいくつかのシステムの相互作用までの直接メモリアクセスの概念を一般化するRDMA(リモートダイレクトメモリアクセス)テクノロジによって占められています。

このテクノロジーの意味を理解するために、ネットワークプロトコル(TCP)のコンテキスト外のNIC(ネットワークインターフェイスコントローラー)を、排他的に2つのアクションを実行できるマシンとして考えてみましょう。

  1. ネットワークからデータを受信し、RAMに転送します
  2. RAMからデータを読み取り、ネットワークに転送します。


次に、ネットワークに接続された複数のコンピューターでは、NICのセットは一般的なDMAコントローラーと見なすことができます。これは、ローカルだけでなくリモートメモリともやり取りできるという点で通常のDMAコントローラーとは異なります。



クラスター内でのDMAの仕組み



そのため、コピーのソースと受信者が同じクラスターの異なるプラットフォーム上にある場合、メモリブロックをコピーする従来の操作で何を補う必要があります。



 RDMA-    Read Request

RFC5040.txt(リモートダイレクトメモリアクセスプロトコル仕様)の図6は、タグ付けの低レベルの意味を明らかにしています。 表は、RDMA要求の1つの形式を示しています。読み取り要求は、データを読み取る要求です。



要求には、送信元バッファとその内部のアドレス、宛先バッファとその内部のアドレス、および送信されたブロックの長さを識別する情報が含まれます。 このようなパラメーターの完全なセットを渡すことは、特定のバッファー内の特定のアドレス範囲をアドレス指定するタグ付きリクエストのプロパティです。



データシンクステアリングタグ [32ビット]-宛先バッファーがクラスター内で登録される番号。

Data Sink Tagged Offset [64ビット]-宛先バッファーの先頭を基準にした記録済みブロックの先頭のオフセット。

RDMA読み取りメッセージサイズ [32ビット]-送信されたブロックのサイズ。

データソースステアリングタグ [32ビット]-ソースバッファーがクラスター内で登録される番号。

データソースタグ付きオフセット [64ビット]-ソースバッファーの先頭を基準とした読み取りブロックの先頭のオフセット。



このような5つのパラメーターのセットは、コピー操作の3つのパラメーターの通常の標準セット(ソースアドレス、受信者アドレス、ブロック長)とは異なり、64ビットアドレス(オフセット)の使用とともに、バッファー番号(タグ)が使用されます。 この複雑さの理由は明らかです。複数のプラットフォームが相互作用し、各プラットフォームには独自のアドレス空間があるため、オブジェクトを識別するには、アドレスだけでは不十分であることがわかります。



論理的に連続したバッファは、プラットフォームの物理アドレス空間で断片化される可能性があります。 これは、オペレーティングシステムの仮想メモリのロジックに基づいています。 タグ付きオフセットの 64ビットオフセットは、物理アドレスではなく論理(仮想)アドレスを指定します。これらのアドレスは、スキャッターギャザーデバイスを使用してページングおよびデフラグする必要があります。 直接データ配置DDP )データ転送モデル。



まとめ



明らかに、RDMAテクノロジーと従来のネットワークプロトコルスタックは、コンピューティングプラットフォーム間のデータ転送を提供します。 ローカルネットワークで情報を交換する従来のアプローチよりも優れているのはなぜですか?



タグ付きリクエストを使用する場合、クラスターを形成する各プラットフォームには、別のプラットフォームのメモリのリモートアドレス指定に必要な情報が含まれています。 クラスタを形成するシステムの個別の物理アドレス空間は、単一の論理アドレス空間に結合できます。



RDMAドライバーで使用されるアドレス指定スキームにより、データ転送操作が開始された時点で、ソースバッファーと宛先バッファーの両方の最終宛先アドレスが認識されます。 これらのバッファは両方とも、ユーザーアプリケーションのアドレス空間にあります。 この形式のデータ転送編成は、トランジットバッファーと追加のデータコピー操作の必要性を排除し、 Zero-Copyと呼ばれます。 コピーされたブロックのベースアドレスとサイズを設定するすべての情報は、生成時にリクエストを生成する側でプログラムされるため、このような操作中に中央プロセッサが介入する必要性が最小限に抑えられることに気付くのは簡単です。



All Articles