Mellanox が Messaging Accelerator(VMA) をオープンソース化

InfiniBand や ethernet 機器を作っているイスラエルの Mellanox 社が、Messaging Accelerator(VMA) をオープンソース化した。

VMA は従来イーサーネットカードを挿した Linux マシン上で TCP/UDP で動作させていたプログラムがあった場合、InfiniBand HCA & ネットワーク機器とこの VMA ライブラリを使うことでプログラムの書き換えなしで通信速度を向上させることができるというもの。通信のレイテンシーを 300%、スループットを 200% 向上させることができる。どちらかというと通信帯域よりも遅延の削減の方に効果があるライブラリだ。同じカテゴリーの製品としては Chelsio の Wire DirectSolarflareOpenOnload がある。

このソフトは socket/sendmsg/recvmsg などのシステム関数呼び出しをフックして InfiniBand の通信に置き換えるのだが、実際にソースを見ていると IP 通信が InfiniBand の UD(Unreliable Datagram) に置き換わっている。

イーサーネットを InfiniBand に置き換えて低遅延化できるのはいくつか理由がある。

  1. 物理層ネットワーク層イーサネットよりも InfiniBnad の方が簡素になっている。
  2. InfiniBand のプロトコル処理がイーサーネットよりも軽い。
  3. InfiniBand のソフトスタックは(初期化やエラー処理を除く)運用中の通信でカーネルランドへの遷移が不要になっている。InfiniBand HCA & ドライバがユーザランドプロセスに mmap した領域へデータを配置すると自動的に送受信が始まるでの、sendmsg/recvmsg や poll/select などカーネルに戻る処理がない。よって軽い。

そのため VMA のようなオーバーヘッドがあっても高速になるようだ。とはいえプログラムが書き換えられるなら SDP(Sockets Direct Protocol) などに書き換えるほうが高速であろう。