FreeBSD Daily Topics

2012年10月1日FreeBSDでInfiniBand(IPoverIB)使用する方法

src

FreeBSD with InfiniBand

高速なデータ通信を実現するための技術として、InfiniBandの活用が進んでいます。これまではそうした高速データ通信の用途では1GbEや10GbEのネットワークに注目が集まっていましたが、価格帯がそれほど変わらず、より高速な通信を実現できるInfiniBandが強い勢いで伸びています。

FreeBSD 10-CURRENTにはオープンソースで提供されているOFEDOpenFabrics Allianceがマージされています。デフォルトでは無効になっていますが、OFEDを使用するための設定を追加してからユーザランドおよびカーネルを再構築すれば、InfiniBandを使用できるようになります。

まず、カーネルオプションとして次の設定を追加します(10-CURRENTでの設定です。指定方法はこれまでにも変更がありましたので、試す場合には/usr/src/sys/amd64/conf/NOTESの該当部分に目を通してからにしてください。指定方法が変わっている可能性があります⁠⁠。

# Infiniband
options         OFED            # OpenFabrics Enterprise Distribution
options         SDP             # Sockets Direct Protocol
options         IPOIB           # IP over Inifiband
options         IPOIB_CM        # IP over Inifiband

device mlx4ib   # Mellanox ConnectX HCA InfiniBand
device mlxen    # Mellanox ConnectX HCA Ethernet
device mthca    # Mellanox HCA InfiniBand

/etc/src.confに次の設定を追加します。

WITH_OFED=yes

HEAD(10-CURRENT)はそのままではロック系の処理やmalloc系の処理が遅いので、パフォーマンスの計測には向いていません。パフォーマンスも計測するのであれば、次のカーネルオプションも追加して重い処理が走らないようにします。

nooptions       INVARIANTS
nooptions       INVARIANT_SUPPORT
nooptions       WITNESS

malloc(3)の処理もHEADはパフォーマンスに影響を与えますので、パフォーマンスを計測する場合には次の設定を/etc/src.confに追加してからカーネルを再構築します。

MALLOC_PRODUCTION=YES

ユーザランドとカーネルを再構築すると、ネットワークインターフェースとして「ib0」「ib1」といった名前のインターフェースが認識されます。NICと同じようにこれにIPアドレスを割り振って利用します。なお、通常のLANと異なり、InfiniBandのLANにはサブネットマネージャと呼ばれるプログラムが必要です。WITH_OFEDを指定してユーザランドを再構築するとopensmというプログラムがインストールされますので、これを起動してInfiniBandネットワークを稼働させます。

opensm --daemon

現状では対応しているInfiniBandデバイスの数は限られており、認識はされるものの動作がおかしいものなどもあります。どのInfiniBandデバイスがFreeBSDで動作するかというまとまった情報もほとんどありません。InfiniBandの採用事例がこの数年でトントン拍子に増えていることもあって、EuroBSDConやBSDCanなどの機会でもかならずFreeBSDにおけるInfiniBandのサポートに関する話題がでています。

InfiniBand対応はFreeBSD 10以降もっとも注目されるトピックのひとつになるものとみられます。新しい動きがあり次第、随時FreeBSD Daily Topicsにて報告します。

おすすめ記事

記事・ニュース一覧