src
- FreeBSD with InfiniBand
高速なデータ通信を実現するための技術として、
InfiniBandの活用が進んでいます。これまではそうした高速データ通信の用途では1GbEや10GbEのネットワークに注目が集まっていましたが、 価格帯がそれほど変わらず、 より高速な通信を実現できるInfiniBandが強い勢いで伸びています。 FreeBSD 10-CURRENTにはオープンソースで提供されているOFED
(OpenFabrics 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にて報告します。