Cisco UCS B シリーズ ブレード サーバの Cisco usNIC 展開ガイド
Cisco usNIC の概要
Cisco user-space NIC(Cisco usNIC)機能は、ネットワーキング パケットを送受信するときにカーネルをバイパスすることで、データセンターの Cisco UCS サーバで実行されるソフトウェア アプリケーションのパフォーマンスを改善します。アプリケーションは、第二世代以降の Cisco UCS VIC アダプタと直接やり取りすることによって、ハイ パフォーマンス コンピューティング クラスタのネットワーキング パフォーマンスが向上します。Cisco usNIC のメリットを引き出すためには、アプリケーションはソケットまたはその他の通信 API ではなく、Message Passing Interface(MPI)または Libfabric インターフェイスを使用する必要があります。
Cisco usNIC を使用すると、アプリケーションで次の利点が得られます。
-
低遅延で、高スループットの通信転送を提供します。
-
標準のアプリケーション非依存イーサネット プロトコルを実行します。
-
低ジッター、またはほぼ一定の遅延の通信。
-
次に示すシスコ データセンター プラットフォームで、低遅延の転送、ユニファイド ファブリック、統合管理のサポートを活用します。
-
Cisco UCS サーバ
-
Cisco UCS 第二世代以降の VIC アダプタ
-
標準イーサネット アプリケーションは、Linux カーネルのネットワーキング スタックを呼び出すユーザ領域のソケット ライブラリを使用します。次に、ネットワーキング スタックは Cisco eNIC ドライバを使用して、Cisco VIC ハードウェアと通信します。次の図は、通常のソフトウェア アプリケーションと usNIC を使用する MPI アプリケーションの対比を示します。
Cisco usNIC の前提条件
Cisco usNIC から恩恵を受けるためには、設定に次の前提条件があります。
-
サポートされている Linux オペレーティング システム ディストリビューション リリース。サポートされている Linux オペレーティング システムのリリースの詳細についてUCS ハードウェアとソフトウェアの互換性ツールを参照してください。
-
ICS ハードウェアとソフトウェア互換性ツールとして識別されたサーバインストールされたUCS サーバ モデル、Linux オペレーティング システム、およびサーバにインストールされた UCS ファーブウェアのバージョンに対応する UCS ドライバ ISO。詳細については、『Downloading Cisco UCS VIC drivers』を参照してください。
-
IBM Sprectrum MPI、オープンソースの Community Open MPI パッケージ、またはバージョン 4 または 5 の Intel® MPI ライブラリなど、サポートされている MPI の実装。Intel ® MPI ライブラリが使用されている場合は、ネットワークでフロー制御を有効に設定する必要があります。
Cisco usNIC の設定
Cisco usNIC を設定する全体のフローは次のとおりです。
-
usNIC をサポートするサービス プロファイルの作成または変更
-
サポートされている Linux OS のインストール (まだインストールされていない場合)
-
Linux および usNIC をサポートする OS を設定します
-
usNIC ドライバおよびユーティリティをインストールします
-
libfabric と MPI ソフトウェアをインストールします
-
usNIC のインストールの確認
Cisco Manager GUI を使用した Cisco usNIC 接続ポリシーの作成
Cisco usNIC 接続ポリシーを作成するには、後述する手順を使用することも、このビデオの [Play] をクリックしてやり方を確認することもできます。
手順
ステップ 1 |
[Navigation] ペインで [LAN] をクリックします。 |
||||||||||
ステップ 2 |
の順に展開します。 |
||||||||||
ステップ 3 |
[root] ノードを展開します。 |
||||||||||
ステップ 4 |
[usNIC Connection Policies] を右クリックして、[Create usNIC Connection Policy] を選択します。 |
||||||||||
ステップ 5 |
[Create usNIC Connection Policy] ダイアログボックスで、次のフィールドに値を入力します。
|
usNIC イーサネット アダプタ ポリシーの設定
手順
ステップ 1 |
[Navigation] ペインで [Servers] をクリックします。 |
||||||||||||||
ステップ 2 |
[Servers] タブで、 の順に展開します。 |
||||||||||||||
ステップ 3 |
[Eth Adapter Policy usNIC] をクリックします。 |
||||||||||||||
ステップ 4 |
[Work] ペインで、[General] タブをクリックします。 必要に応じて、[Resources] セクションと [Options] セクションで詳細を変更できます。シスコでは、リソースに次のデフォルト値を使用することをお勧めしています。
|
Cisco UCS Manager GUI を使用した usNIC の変更
手順
ステップ 1 |
[Navigation] ペインで [Servers] をクリックします。 |
ステップ 2 |
[Servers] タブで、 を展開します。 |
ステップ 3 |
usNIC を設定するサービス プロファイル ノードを展開して、[vNICs] をクリックします。 |
ステップ 4 |
[Work] ペインで、[Network] タブをクリックします。 |
ステップ 5 |
[vNICs] 領域で、vNIC を選択して、[Modify] をクリックします。 |
ステップ 6 |
[Modify vNIC] ダイアログボックスの [Adapter Performance Profile] 領域で、[Adapter Policy] ドロップダウン リストから [Linux] を選択します。 |
ステップ 7 |
[Connection Policies] 領域で、[usNIC] オプション ボタンをクリックします。 |
ステップ 8 |
[usNIC Connection Policy] ドロップダウン リストから、作成した usNIC 接続ポリシーを選択します。 |
ステップ 9 |
[OK] をクリックします。 |
ステップ 10 |
[Save Changes] をクリックします。 |
ステップ 11 |
[Navigation] ペインで、変更したばかりのサービス プロファイルをクリックします。 |
ステップ 12 |
[Work] ペインの [Policies] タブをクリックします。 |
ステップ 13 |
[BIOS Policy] バーを展開して、[BIOS Policy] ドロップダウン リストで [usNIC] を選択します。 |
ステップ 14 |
[Save Changes] をクリックします。 |
Cisco UCS Manager CLI を使用した usNIC の作成
始める前に
このタスクを実行するには、admin 権限を持つユーザとしてログインする必要があります。
手順
コマンドまたはアクション | 目的 | |
---|---|---|
ステップ 1 |
UCS-A # scope service-profile server chassis-id / blade-id または rack_server-id |
指定されたシャーシ、ブレード、または UCS 管理ラック サーバ ID のサービス プロファイルを入力します。 |
ステップ 2 |
UCS-A /org/service-profile # show vnic |
サーバ上で使用可能な vnic が表示されます。usNIC vNIC は Cisco UCS Manager リリース 2.2 にアップグレードするとデフォルトで使用できます。
|
ステップ 3 |
UCS-A /org/service-profile # scope vnic vnic 名 |
指定された vNIC の vNIC モードを開始します。
|
ステップ 4 |
UCS-A /org/service-profile/vnic # set adapter-policy Linux |
Linux と、usNIC 用のアダプタ ポリシーを指定します。
|
ステップ 5 |
UCS-A /org/service-profile/vnic # enter usnic-conn-policy-ref usnic 接続ポリシー参照名 |
vNIC 用の usNIC 接続ポリシー参照を指定された名前で作成します。接続ポリシー名の最大長は 16 文字です。
|
ステップ 6 |
UCS-A /org/service-profile/vnic/usnic-conn-policy-ref* # commit-buffer |
トランザクションをシステムの設定にコミットします。
|
ステップ 7 |
UCS-A /org/service-profile/vnic/usnic-conn-policy-ref # top |
最上位モードを開始します。
|
ステップ 8 |
UCS-A # scope org |
ルート組織モードを開始します。
|
ステップ 9 |
UCS-A /org # create usnic-conn-policy usnic 接続ポリシー名 |
usNIC 接続ポリシーを指定された名前で作成します。
|
ステップ 10 |
UCS-A /org/usnic-conn-policy* # set usnic-count usnics の数 |
作成する Cisco usNIC の数を指定します。この値に対して 58 を入力することをお勧めします。 |
ステップ 11 |
UCS-A /org/usnic-conn-policy* # set adaptor-profile usNIC |
usNIC 接続ポリシー用の usNIC イーサネット アダプタ プロファイルを指定します。この usNIC アダプタ プロファイルは以前のバージョンの Cisco UCS Manager からリリース 2.2 にアップグレードするとデフォルトで作成されます。
|
ステップ 12 |
UCS-A /org/usnic-conn-policy* # commit-buffer |
トランザクションをシステムの設定にコミットします。
|
例
次に、Cisco usNIC を作成してそのプロパティを指定する例を示します。
Server # scope org
Server /org # create usnic-conn-policy usnic1
Server /org/usnic-conn-policy* # set usnic-count 58
Server /org/usnic-conn-policy* # set adaptor-profile usNIC
Server /org/usnic-conn-policy* # commit-buffer
Server /org/usnic-conn-policy # top
Server # scope service-profile server 1/1
Server /org/service-profile # show vnic
vNIC:
Name Fabric ID Dynamic MAC Addr Virtualization Preference
------------------ --------- ------------------ -------------------------
eth0 A 00:25:B5:00:00:A1 NONE
eth1 B 00:25:B5:00:00:A2 NONE
eth2 A 00:25:B5:00:00:A3 NONE
Server /org/service-profile # scope vnic eth0
Server /org/service-profile/vnic # set adapter-policy Linux
Server /org/service-profile/vnic # enter usnic-conn-policy-ref usnic1
Server /org/service-profile/vnic/usnic-conn-policy-ref* # commit-buffer
Server /org/service-profile/vnic/usnic-conn-policy-ref # exit
Cisco UCS Manager CLI を使用した usNIC の変更
始める前に
このタスクを実行するには、admin 権限を持つユーザとしてログインする必要があります。
手順
コマンドまたはアクション | 目的 | |
---|---|---|
ステップ 1 |
UCS-A # scope service-profile server chassis-id / blade-id または rack_server-id |
指定されたシャーシ、ブレード、または UCS 管理ラック サーバ ID のサービス プロファイルを入力します。 |
ステップ 2 |
UCS-A /org/service-profile # show vnic |
サーバ上で使用可能な vnic が表示されます。usnic vnic は Cisco UCS Manager リリース 2.2 にアップグレードするとデフォルトで使用できます。
|
ステップ 3 |
UCS-A /org/service-profile # scope vnic vnic 名 |
指定された vNIC の vnic モードを開始します。
|
ステップ 4 |
UCS-A /org/service-profile/vnic # enter usnic-conn-policy-ref usnic 接続ポリシー参照名 |
使用する vNIC 用の usnic 接続ポリシー参照を指定します。
|
ステップ 5 |
UCS-A /org/service-profile/vnic/usnic-conn-policy-ref* # commit-buffer |
トランザクションをシステムの設定にコミットします。
|
例
次に、Cisco usNIC プロパティを変更する例を示します。
Server # scope service-profile server 1/1
Server /org/service-profile # show vnic
vNIC:
Name Fabric ID Dynamic MAC Addr Virtualization Preference
------------------ --------- ------------------ -------------------------
eth0 A 00:25:B5:00:00:A1 SRIOV USNIC
eth1 B 00:25:B5:00:00:A2 NONE
eth2 A 00:25:B5:00:00:A3 NONE
Server /org/service-profile # scope vnic eth0
Server /org/service-profile/vnic # enter usnic-conn-policy-ref usnic2
Server /org/service-profile/vnic/usnic-conn-policy-ref* # commit-buffer
Server /org/service-profile/vnic/usnic-conn-policy-ref # exit
Cisco UCS Manager CLI を使用した usNIC の削除
始める前に
このタスクを実行するには、admin 権限を持つユーザとしてログインする必要があります。
手順
コマンドまたはアクション | 目的 | |
---|---|---|
ステップ 1 |
UCS-A # scope service-profile server chassis-id / blade-id または rack_server-id |
指定されたシャーシ、ブレード、または UCS 管理ラック サーバ ID のサービス プロファイルを入力します。 |
ステップ 2 |
UCS-A /org/service-profile # show vnic |
サーバ上で使用可能な vNIC が表示されます。usNIC vNIC は Cisco UCS Manager リリース 2.2 にアップグレードするとデフォルトで使用できます。
|
ステップ 3 |
UCS-A /org/service-profile # scope vnic vnic 名 |
指定された vNIC の vNIC モードを開始します。
|
ステップ 4 |
UCS-A /org/service-profile/vnic # show usnic-conn-policy-ref usnic 接続ポリシー参照名 |
使用する vNIC 用の usNIC 接続ポリシー参照を指定します。
|
ステップ 5 |
UCS-A /org/service-profile/vnic # delete usnic-conn-policy-ref usnic 接続ポリシー参照名 |
指定された usNIC 接続ポリシー参照を削除します。
|
ステップ 6 |
UCS-A /org/service-profile/vnic/usnic-conn-policy-ref* # commit-buffer |
トランザクションをシステムの設定にコミットします。
|
例
次に、Cisco usNIC プロパティを変更する例を示します。
Server # scope service-profile server 1/1
Server /org/service-profile # show vnic
vNIC:
Name Fabric ID Dynamic MAC Addr Virtualization Preference
------------------ --------- ------------------ -------------------------
eth0 A 00:25:B5:00:00:A1 SRIOV USNIC
eth1 B 00:25:B5:00:00:A2 NONE
eth2 A 00:25:B5:00:00:A3 NONE
Server /org/service-profile # scope vnic eth0
Server /org/service-profile/vnic # show usnic-conn-policy-ref
usNIC Connection Policy Reference:
usNIC Connection Policy Name
----------------------------
usnic2
Server /org/service-profile/vnic # delete usnic-conn-policy-ref usnic2
Server /org/service-profile/vnic* # commit-buffer
Server /org/service-profile/vnic # exit
Linux カーネルの設定 Cisco usNIC
始める前に
次のソフトウェアとハードウェア コンポーネントが Cisco UCS サーバにインストールされていることを確認してください。
-
サポートされている Linux オペレーティング システム ディストリビューション リリース。詳細については、「UCS ハードウェア/ソフトウェア互換性ツール」を参照してください。
-
GCC、G++、および Gfortran
-
DAT ユーザ ライブラリ(Intel ® MPI を使用している場合)
-
libnl ユーザ ライブラリ開発パッケージ(バージョン 1 とバージョン 3 のどちらか)
-
第二世代以降の Cisco UCS VIC アダプタ
手順
ステップ 1 |
カーネルでカーネル オプション CONFIG_INTEL_IOMMU が選択されていることを確認します。手動で grub.conf ファイル(たとえば、/boot/grub/grub.conf)に「intel_iommu =on」を追加することによって、Linux カーネル内で Intel IOMMU ドライバを有効にします。 たとえば、
Red Hat Enterprise Linux の場合、intel_iommu を設定ファイルに追加するために、grubby コマンド ライン ツールを使用してください。
SLES の場合、「intel_iommu=on」を /etc/default/grub configuration file の GRUB_CMDLINE_LINUX_DEFAULT オプションに追加し、変更を適用するために、grub2 mkconfig コマンドを実行します。
Ubuntu の場合、「intel_iommu=on」を /etc/default/grub configuration file の GRUB_CMDLINE_LINUX_DEFAULT オプションに追加し、変更を適用するために、update-grub コマンドを実行します。
|
||
ステップ 2 |
Cisco UCS サーバを再起動します。 Intel IOMMU を有効にした後で、変更を反映するためにサーバを再起動します。 |
||
ステップ 3 |
実行中のカーネルが intel_iommu=on オプションでブートすることを確認します。
|
||
ステップ 4 |
Cisco usNIC Linux ドライバをインストールします。 ドライバのインストールの詳細については、「Linux ドライバのインストール」のセクションを参照してください。
|
Linux ソフトウェア パッケージのインストール Cisco usNIC
ここでは、UCS Drivers ISO バンドルに含まれているサポート対象の Linux オペレーティング システム ディストリビューションごとに usNIC フォルダの内容を列挙します。既知の問題やインストール手順に関するドキュメントが usNIC フォルダ内の README ファイルにも含まれています。
-
kmod-usnic_verbs-{version}.x86_64.rpm —Cisco VIC SR-IOV Ethernet NIC の usNIC 機能のための Linux カーネル verbs ドライバ。
(注)
システム SLES 12.1 以降では、cisco-enic-usnic-kmp-default-{version}.x86_64.rpm という名前の enic と usnic_verbs の両方のドライバを含む単一の RPM があります。SLES カーネル モジュールの依存関係のしくみのため、この「コンボ」RPM は個々の enic および usnic_verbs RPM をインストールする代わりにインストールする必要があります。
-
libdaplusnic-{version}.x86_64.rpm —usNIC のユーザ スペース ライブラリ DAPL プラグイン。
-
usnic_tools-{version}.x86_64.rpm —usNIC のユーティリティ プログラム。
-
usd_tools-{version}.x86_64.rpm —usNIC の追加診断ツール。
-
libfabric-cisco-{version}.x86_64.rpm —Cisco usNIC トランスポートの組み込みサポートをもつ Libfabric パッケージ。
-
libfabric-cisco-devel-{version}.x86_64.rpm —Cisco usNIC トランスポートの組み込みサポートをもつ Libfabric パッケージの開発ヘッダ。
-
libusnic_verbs-{version}.x86_64.rpm — libibverbs ライブラリに Cisco usNIC Linux デバイスをスキップさせるダミー ライブラリ(Cisco usNIC 機能は libibverbs ではなく、libfabric を介して公開されるため)。この RPM は libibverbs ライブラリ (RHEL 6 など) の「rdma-core」のパッケージにアップグレードされていない古い Linux ディストリビューション用でのみ必要です。
手順
ステップ 1 |
「Linux の Cisco UCS 仮想インターフェイス カード ドライバのインストール ガイド」 で記載されているように、Linux ディストリビューション用の Cisco UCS Drivers ISO に含まれている enic ドライバの最新バージョンにアップグレードします。 |
||
ステップ 2 |
Linux ディストリビューション用の Cisco UCS Drivers ISO から Cisco usNIC ソフトウェア パッケージをインストールします。 |
||
ステップ 3 |
Linux RDMA サービスを有効にします。有効にしたら、システムのリブート後に RDMA サービスが自動的に開始されます。Linux RDMA を有効にする正確なコマンドは、各オペレーティング システムの間で異なる場合があります。たとえば、Red Hat Enterprise Linux 6.X で、次のコマンドを使用します。
|
||
ステップ 4 |
サーバをリブートすると、インストールの変更が自動的に反映されます。この時点で再起動して、次のインストールの検証手順を実行することにより、システムが正しく設定されていることを確認できます。
|
Linux Cisco usNIC ソフトウェア パッケージのソース コード
Cisco usNIC ソフトウェア パッケージのソース コードは Cisco UCS Drivers ISO で提供されます。ソース コードとバイナリ パッケージのインストールを混在させないことをお勧めします。
カーネル モジュールの手動ロード Cisco usNIC
オペレーティング システムが Intel IOMMU サポートを有効にして起動されたことを前提として、次の手順で、Cisco usNIC カーネル モジュールを手動でロードすることができます。
始める前に
最新バージョンのドライバをロードする前に、既存バージョンのドライバが削除されていることを確認してください。これで、システムを正しく設定できます。
手順
コマンドまたはアクション | 目的 | |||
---|---|---|---|---|
ステップ 1 |
# rmmod enic |
既存の enic ドライバ モジュールをアンロードします。
|
||
ステップ 2 |
# modprobe enic |
enic ドライバ モジュールをロードします。 |
||
ステップ 3 |
# dmesg | grep 'Cisco VIC Ethernet NIC Driver' |
enic ドライバの適切なバージョンがロードされたことを確認します。このコマンドの出力は、インストールしたばかりの Cisco UCS ドライバ ISO から enic RPM のバージョンと一致するバージョン文字列を表示するはずです。 |
||
ステップ 4 |
# modprobe usnic_verbs |
usnic_verbs ドライバ モジュールをロードします。 |
||
ステップ 5 |
# lsmod | grep usnic_verbs |
usnic_verbs モジュールが正常にロードされたことを確認します。これは、一部の出力が表示されます。usnic_verbs モジュールが読み込まれなかった場合、出力は表示されません。 |
Linux ソフトウェア パッケージのアンインストール Cisco usNIC
手順
ステップ 1 |
次の usNIC ソフトウェア パッケージをアンインストールします。
|
ステップ 2 |
Cisco サーバをリブートします。 |
Cisco usNIC 用の Linux ソフトウェア パッケージのアップグレード
手順
ステップ 1 |
「Linux ドライバのアンインストール」の手順に従って、usNIC ソフトウェア パッケージの以前のバージョンをアンインストールします。 |
ステップ 2 |
「Linux ドライバのインストール」の手順に従って、Linux ディストリビューション用の Cisco UCS ドライバ ISO から usNIC ソフトウェア パッケージをインストールします。 |
MPI のインストール
Community Open MPI のインストール
始める前に
手順
ステップ 1 |
https://www.open-mpi.org/software/ompi/current/ からの Open MPI の最新バージョンをダウンロードします。この URL では最新のリリースに自動的にリダイレクトされます。 |
||
ステップ 2 |
次のコマンドで Open MPI tarball を抽出します。
|
||
ステップ 3 |
作成されたディレクトリでは、次のオプションを使用して、configure コマンドを実行します。
「INSTALL_DIRECTORY」(たとえば、/opt/openmpi/VERSION) を適切なディレクトリを置き換えてください。
|
||
ステップ 4 |
設定の正常な結論では、Open MPI を構築します。
|
||
ステップ 5 |
正常な結論を作成するときに、Open MPI をインストールします (ルートまたは特定ユーザの選択した INSTALL_DIRECTORY に書き込む権限が必要です)。
|
IBM スペクトル MPI のインストール
手順
Intel MPI ライブラリのインストール
手順
ユーザ環境への MPI の追加
MPI アプリケーションをコンパイルして起動するには、MPI 実装を各ユーザの環境に追加する必要があります。MPI 実装は一度に 1 つずつユーザの環境に追加することをお勧めします。
IBM Spectrum MPI ライブラリの環境
Spectrum MPI では、環境のセットアップの観点からはほとんど必要ありません。絶対パスを通じるか、パスに Spectrum MPI コマンドでディレクトリを追加することにより、Spectrum MPI のコマンドを呼び出し、それらを絶対パスなしで呼び出すことができます。
Community Open MPI の環境
Community Open MPI では、その installation binary と library パスを環境変数に追加する必要があります。シェル スタートアップ ファイルにこれらのパスを追加し、クラスタでのすべてのノードのログイン時に自動的にセットアップされるようにすることが通常は最善です。
特に、INSTALL_DIRECTORY/bin で PATH 環境変数をプリペンドし、INSTALL_DIRECTORY/lib に LD_LIBRARY_PATH 環境変数をプレフィックスする必要があります。任意に、INSTALL_DIRECTORY/share/man を MANPATH 環境変数に追加することもできます。
たとえば、INSTALL_DIRECTORY of /opt/openmpi で Community Open MPI を設定した場合、Bash をログイン シェルとして使用すると、これらの行をシェル スタートアップ ファイル (一般的には $HOME/.bashrc) に追加できます。
export PATH=/opt/openmpi/bin:$PATH
export LD_LIBRARY_PATH=/opt/openmpi/lib:$LD_LIBRARY_PATH
export MANPATH=/opt/openmpi/share/man:$MANPATH
代わりに、C シェルをログイン シェルとして使用している場合、これらの行をシェル スタートアップ ファイル (一般的には $HOME/.cshrc) に追加できます。
set path=(/opt/openmpi/bin $path)
setenv LD_LIBRARY_PATH /opt/openmpi/lib:$LD_LIBRARY_PATH
if ("1" == "$?MANPATH") then
setenv MANPATH /opt/openmpi/share/man:${MANPATH}
else
setenv MANPATH /opt/openmpi/share/man:
endif
お使いのシステムでは若干異なるコマンドが必要になる場合があります。PATH、LD_LIBRARY_PATH、MANPATH 環境変数を設定する方法についての詳細は、「MPI ジョブの実行」の Open MPI Community FAQ (https://www.open-mpi.org/faq/) を確認してください。
Intel ® MPI ライブラリの環境
Intel ® MPI ライブラリのドキュメントに記載されている手順に加えて、各ユーザの環境で追加の環境変数を設定して Cisco usNIC 機能を有効にする必要があります。必要な環境変数を設定するための 2 つのスクリプトが libdaplusnic ソフトウェア パッケージを通してインストールされます。1 つのスクリプトは Bourne シェル ユーザ用で、もう 1 つのスクリプトは C シェル ユーザ用です。
-
/opt/cisco/intelmpi-usnic-vars.sh (Bourne シェル ユーザの場合)
-
/opt/cisco/intelmpi-usnic-vars.csh (C シェル ユーザの場合)
ユーザのシェル起動/ログイン シーケンスの一部として適切なスクリプトを調達する必要があります。
Intel ® MPI ライブラリと usNIC を使用するには、ネットワーク上のフロー制御を有効に設定する必要があります。これは、IEEE 802.3x リンク レベル フロー制御と IEEE 802.1Qbb 優先順位ベース フロー制御(PFC)のどちらかにすることができます。この機能は、「no-drop」と呼ばれることもあります。フロー制御の有効化方法については、ネットワーク上のスイッチのコンフィギュレーション ガイドを参照してください。フロー制御がネットワーク上で有効になっていない場合は、Intel® MPI ライブラリを使用するアプリケーションが正常に機能しますが、パフォーマンスが大幅に低下する可能性があります。
Intel ® MPI ライブラリの開発では、MPI トラフィックは Cisco CIMC でサービス クラス(CoS) 6 をもつすべてのすべての Cisco usNIC ポートでフロー制御が有効になっている必要があります。
ユーザ環境への Libfabric の追加
Libfabric 固有のアプリケーションを開発する場合、環境内で Libfabric テスト (fi_pingpong) などの実行可能ファイルや man ページをもつことの恩恵がある可能性があります。必要な環境変数を設定するための 2 つのスクリプトが libdaplusnic を通してインストールされます。1 つのスクリプトは Bourne シェル ユーザ用で、もう 1 つのスクリプトは C シェル ユーザ用です。
-
/opt/cisco/libfabric-vars.sh
-
/opt/cisco/libfabric-vars.csh
ユーザのシェル起動/ログイン シーケンスの一部として適切なスクリプトを調達する必要があります。
ユーザ環境への usNIC ツールの追加
環境に usNIC ツールを追加することは、次のスクリプトにより行うことができます。最初は Bourne シェル ユーザ用で、2 番目のものは C シェル ユーザ用です。
-
/opt/cisco/usnic/bin/usnic-vars.sh
-
/opt/cisco/usnic/bin/usnic-vars.csh
Cisco UCS B シリーズ ブレード サーバ向け Cisco usNIC 取り付けの確認
Cisco usNIC に必要な Linux ドライバをインストールした後、Linux プロンプトで次の手順を実行して、インストールが正常に完了したことを確認してください。
(注) |
次に、Linux オペレーティング システム ディストリビューション RHEL 6.5 上で確認された設定例を示します。 |
手順
ステップ 1 |
usnic_verbs カーネル モジュールが OS ドライバのインストール中にロードされたかどうかを検索して確認します。
lsmod | grep usnic_verbs コマンドを入力すると、次の詳細が表示されます。コンソールに一覧表示されているカーネル モジュールは、OS に現在ロードされているモジュールに基づいて異なる場合があります。
|
||||
ステップ 2 |
Cisco usNIC 対応 NIC の設定を確認してください。
次のセクションは、usnic_devinfo コマンドを実行すると表示される結果の簡単な例です。結果は、現在のインストール環境によって異なる場合があります。結果がコンソールに表示されたら、一覧表示されたポートのそれぞれのリンク状態が UP と表示されていることを確認します。 次に、Cisco UCS VIC アダプタ上で設定された 2 つのポート(usnic_1 および usnic_0 ) の例を示します。1 つの Cisco usNIC 対応 vNIC だけを設定した場合は、usnic_0 のみのリストが表示されます。
|
||||
ステップ 3 |
インストールされている RPM とそのバージョンを確認するには、usnic_check スクリプトを実行します。
|
||||
ステップ 4 |
Cisco usNIC ネットワーク パケットがクライアントとサーバ ホスト間で正常に送信されていることを確認します。 次に、fi_pingpong プログラムを実行すると表示される結果の例を示します。
|
||||
ステップ 5 |
ring_c テスト プログラムをダウンロード、コンパイル、および実行して、MPI トラフィックがクライアントとサーバのホスト間で正しく送信されていることを検証します。 ring_c テスト プログラムは、https://raw.githubusercontent.com/open-mpi/ompi/v2.x/examples/ring_c.cのリンクから取得できます。 次の例は、wget ユーティリティを使用して ring_c を取得、コンパイル、および実行する方法を示します。また、テスト プログラムの取得および実行のその他の方法を使用できます。
|
fi_pingpong プログラムおよび ring_c プログラムが正常に実行された場合、Cisco usNIC 上で MPI アプリケーションを実行できるはずです。
トラブルシューティング情報
問題
usnic_check を使用してインストール済み RPM のリストを表示すると、次のことが発生します。
-
「No usnic devices found」などの警告。
-
「usnic_verbs_xxxx does not match installed version」などのバージョン ミスマッチ エラー。
考えられる原因
-
Usnic_verbs の前にインストールされているバージョンでは、このエラーが生じる可能性があります。
-
usnic_verbs ドライバは、読み込まれた enic ドライバが usnic_verbs と互換性がない場合に、読み込みに失敗した可能性があります。
ソリューション
この問題は、通常、次の 2 つのいずれかで発生します。
- usnic_verbs RPM の古いバージョンが引き続きインストールされています。
-
次のコマンドを使用して、インストールされているすべてのバージョンを一覧表示します。rpm -qa | grep usnic_verbs
-
次のコマンドを使用してすべてのバージョンをアンインストールします。rpm -e
-
システムを再起動します。
-
すべての RPM を再インストールします。
-
-
Linux カーネルで読み込まれた enic ドライバは、このバージョンの usnic_verbs と互換性がありません。
-
これは、ディストリビューションが提供した enic RPM が取得した usnic_verbs ドライバと同じ UCS ドライバ ISO の enic ドライバの代わりに読み込まれた場合に発生することができます。
-
特に、enic と usnic_verbs ドライバは、「一致」する必要があります。一致しない場合、usnic_verbs は enic 記号が不足しているについて、usnic_verbs が「dmesg」メッセージを示して読み込みに失敗する可能性があります。
-
この場合、UCS のドライバ ISO から、enic と usnic_verbs ドライバが読み込まれたことを確認します。
-
また、起動時に、正しい enic ドライバ バージョンがロードされていることを確認します: enic バージョン番号をインストールする RPM enic と一致することを確認するには、「dmesg」からの出力を確認します。
-
一致しない場合は、depmod 出力を確認するか、新しい initrd を作成するか、その両方を行って、正しい eric ドライバがブートストラップされ、ブート時にカーネルにロードされることを保証します。
-
問題
fi_pingpong を使用して Cisco usNIC パケットがクライアントとサーバ間で正しく送信されていることを確認すると、次のエラーが発生します。
-
「No such address or device」エラー次の例を参照してください。
$ /opt/cisco/libfabric/bin/fi_pingpong -p usnic fi_getinfo: -61
考えられる原因
-
Cisco usNIC 接続ポリシーが割り当てられていないか、「not set」になっているため、vNIC インターフェイスで設定されません。
-
サーバ側がクライアント側からパケットを受信しません。
ソリューション
-
有効な Cisco usNIC 接続ポリシーが usNIC 接続ポリシー内で設定され、サービス プロファイル内の vNIC に割り当てられていることを確認します。
-
サーバとクライアントの両方で Cisco usNIC デバイスの IP アドレスが正しく設定されていることを確認します。
-
クライアント ピンポンが Cisco usNIC デバイスの正しいサーバ IP アドレスにパケットを送信しようとしていることを確認します。
問題
mpirun
を使用して Cisco usNIC トラフィックを処理すると、次のエラーが発生します。
Example:
# Enter the command below at the prompt on a single line from mpirun up to Sendrecv.
# The backslash is included here as a line continuation and is not needed when the command is
# entered at the prompt.
$ mpirun --host node05,node06 -np 12 --mca btl usnic,vader,self \
--mca btl_usnic_if_include usnic_1 IMB-MPI1 Sendrecv
The MTU does not match on local and remote hosts. All interfaces on
all hosts participating in an MPI job must be configured with the same
MTU. The usNIC interface listed below will not be used to communicate
with this remote host.
Local host: node05
usNIC interface: usnic_1
Local MTU: 8958
Remote host: node06
Remote MTU: 1458
考えられる原因
-
MTU サイズが適切な VLAN 上で正しく設定されていません。
-
MTU サイズが QoS 内で正しく設定されていません。
ソリューション
MTU サイズが VLAN と QoS 上で正しく設定されていることを確認します。
「Configuring QoS System Classes with the LAN Uplinks Manager」を参照してください。
問題
# rpm -ivh kmod-usnic_verbs-1.0.4.318.rhel6u5-1.x86_64.rpm
error: Failed dependencies:
ksym(enic_api_devcmd_proxy_by_index) = 0x107cb661 is needed by kmod-usnic_verbs-1.0.4.318.rhel6u5-1.x86_64
ksym(vnic_dev_alloc_discover) = 0xfb7e4707 is needed by kmod-usnic_verbs-1.0.4.318.rhel6u5-1.x86_64
ksym(vnic_dev_get_pdev) = 0xae6ae5c9 is needed by kmod-usnic_verbs-1.0.4.318.rhel6u5-1.x86_64
ksym(vnic_dev_get_res) = 0xd910c86b is needed by kmod-usnic_verbs-1.0.4.318.rhel6u5-1.x86_64
ksym(vnic_dev_get_res_bar) = 0x31710a7e is needed by kmod-usnic_verbs-1.0.4.318.rhel6u5-1.x86_64
ksym(vnic_dev_get_res_bus_addr) = 0x7be7a062 is needed by kmod-usnic_verbs-1.0.4.318.rhel6u5-1.x86_64
ksym(vnic_dev_get_res_count) = 0x759e4b07 is needed by kmod-usnic_verbs-1.0.4.318.rhel6u5-1.x86_64
ksym(vnic_dev_get_res_type_len) = 0xd122f0a1 is needed by kmod-usnic_verbs-1.0.4.318.rhel6u5-1.x86_64
ksym(vnic_dev_unregister) = 0xd99602a1 is needed by kmod-usnic_verbs-1.0.4.318.rhel6u5-1.x86_64
#
考えられる原因
-
enic ドライバが正しくインストールされていません。
-
enic ドライバがインストールされていません。
ソリューション
正しい enic ドライバがインストールされていることを確認します。また、次の点を確認します。-
具体的に、次のことを確認します。enic ドライバおよび usnic_verbs ドライバは一致している必要があります。不一致があると、上記のバージョン エラーが発生する可能性があります。
-
具体的には、Cisco UCS ドライバ ISO に含まれる enic および usnic_verbs が互いに一致している必要があります。ある Cisco UCS ドライバ ISO の enic を使用し、別の Cisco UCS ドライバ ISO の usnic_verbs を使用した場合、上記のバージョン エラーが発生することになります。
(注)
SLES 12.1 以降のシステムで、enic と usnic_verbs RPM の「コンボ」をインストールする際に、enic と usnic_verbs ドライバが一致することが保証されます。
問題
# rpm -ivh kmod-usnic_verbs-1.0.4.318.rhel6u5-1.x86_64.rpm
Preparing... ########################################### [100%]
1:kmod-usnic_verbs ########################################### [100%]
WARNING -
Intel IOMMU does not appear to be enabled - please add kernel parameter
intel_iommu=on to your boot configuration for USNIC driver to function.
#
考えられる原因
Intel IOMMU サポートが、Linux カーネルで有効になっていません。
ソリューション
Linux カーネルの Intel IOMMU ドライバを有効にします。
問題
DAT ユーザ ライブラリをインストールすると、次の障害が発生した依存関係エラーが生じます。
# rpm -ivh libdaplusnic-2.0.39cisco1.0.0.317-1.el6.x86_64.rpm
error: Failed dependencies:
dapl is needed by libdaplusnic-2.0.39cisco1.0.0.317-1.el6.x86_64
#
考えられる原因
libdapl
が DAT ライブラリをインストールせずにインストールされています。
ソリューション
DAT ライブラリをインストールします。
問題
usnic_devinfo
を使用して Cisco usNIC が有効化された VICS の構成を表示すると、コマンド出力が usNIC インターフェイスを一覧表示しません。
考えられる原因
RDMA サービスが有効になっていません。
ソリューション
# service rdma start
Or
# chkconfig rdma on