目次
Cisco VNMC の概要
Cisco user-space NIC(usNIC)機能は、ネットワーキング パケットを送受信するときにカーネルをバイパスすることで、データセンターの Cisco UCS サーバで実行されるソフトウェア アプリケーションのパフォーマンスを改善します。 アプリケーションは、性能の高いコンピューティング クラスタのネットワーキング パフォーマンスを改善する Cisco UCS VIC 1225 アダプタと直接やり取りします。 Cisco usNIC のメリットを引き出すためには、アプリケーションはソケットまたはその他の通信 API ではなく、Message Passing Interface(MPI)を使用する必要があります。
Cisco usNIC は、MPI アプリケーションに対して次の利点を提供します。
Cisco usNIC の設定
手順
ステップ 1 Cisco usNIC のプロパティおよび BIOS 設定を設定します。 CIMC GUI を使用して設定するには、CIMC GUI を使用した Cisco usNIC の設定を参照してください。
CIMC CLI を使用して設定するには、次の項を参照してください。ステップ 2 intel_iommu カーネルのブート コマンドをイネーブルにします。 カーネルのブート コマンドでこの設定をイネーブルにし、Cisco usNIC と正常に通信できるように、ユーザ領域のアプリケーションを許可する必要があります。
ステップ 3 Cisco UCS サーバをリブートします。 Cisco usNIC を設定した後で、サーバをリブートして変更を有効にする必要があります。
ステップ 4 Cisco usNIC の Linux ドライバをインストールします。 ドライバのインストールの詳細については、Cisco usNIC の Linux ドライバのインストールを参照してください。
次の作業Cisco usNIC の設定と Linux ドライバのインストールが完了したら、Cisco usNIC が正しく動作していることを確認してください。 インストールの確認方法の詳細については、Cisco usNIC のインストールの確認を参照してください。
CIMC GUI を使用した Cisco usNIC の設定
手順
ステップ 1 CIMC GUI にログインします。 CIMC へのログイン方法に関する詳細については、http://www.cisco.com/en/US/products/ps10739/products_installation_and_configuration_guides_list.htmlの URL にある、『Cisco UCS C-Series Servers Integrated Management Controller GUI Configuration Guide』を参照してください。
ステップ 2 [Navigation] ペインの [Server] タブをクリックします。 ステップ 3 [Server] タブの [Inventory] をクリックします。 ステップ 4 [Inventory] ペインの [Cisco VIC Adapters] タブをクリックします。 ステップ 5 [Adapter Cards] 領域で、アダプタ カードを選択します。 サーバの電源がオンになっている場合は、選択したアダプタ カードのリソースが、[Adapter Cards] 領域の下のタブ形式メニューに表示されます。
ステップ 6 [Adapter Cards] 領域の下のタブ形式メニューで、[vNICs] タブをクリックします。 ステップ 7 [Host Ethernet Interfaces] 領域で、表から vNIC を選択します。 ステップ 8 [Host Ethernet Interfaces] 領域で、表から vNIC を選択します。
(注) usNIC として設定する各 vNIC に対して、表から vNIC エントリを選択し、ステップ 9 ~ 18 で説明されているようにプロパティを指定します。 ステップ 9 [usNIC] をクリックして [usNIC Properties] ダイアログボックスを開きます。 ステップ 10 [usNICs] のプロパティでは、ユーザが作成する Cisco usNIC の数を指定します。 サーバで実行されている各 MPI プロセスには、専用の usNIC が必要です。 64 の MPI プロセスを同時に実行させるには、最大 64 の usNIC を作成する必要がある場合があります。 usNIC 対応 vNIC ごとに、サーバの物理コアの数と同数の usNIC を最低限作成することを推奨します。 たとえば、サーバに 8 つの物理コアがある場合は、8 つの usNIC を作成します。
ステップ 11 [Properties] 領域で、次のフィールドを更新します。
フィールド名 説明 Transmit Queue Count
割り当てる送信キュー リソースの数。
MPI は、プロセスごとに 2 つの送信キューを使用します。 そのため、この値を 2 に設定することを推奨します。
Receive Queue Count
割り当てる受信キュー リソースの数。
MPI は、プロセスごとに 2 つの受信キューを使用します。 そのため、この値を 2 に設定することを推奨します。
Completion Queue Count
割り当てる完了キュー リソースの数。 通常、割り当てなければならない完了キュー リソースの数は、送信キュー リソースの数に受信キュー リソースの数を加えたものと等しくなります。
この値を 4 に設定することを推奨します。
ステップ 12 [Apply] をクリックします。 ステップ 13 [Navigation] ペインの [Server] タブをクリックします。 ステップ 14 [Server] タブの [BIOS] をクリックします。 ステップ 15 [Actions] 領域で、[Configure BIOS] をクリックします。 ステップ 16 で、[Advanced] タブをクリックします。 ステップ 17 [Processor Configuration] 領域で、次のプロパティを [Enabled] に設定します。 ステップ 18 [Save Changes] をクリックします。 変更内容は次のサーバのリブート時に有効になります。
CIMC CLI を使用した Cisco usNIC の作成
手順
コマンドまたはアクション 目的 ステップ 1 server# scope chassis シャーシ コマンド モードを開始します。
ステップ 2 server/chassis# scope adapter index index で指定した PCI スロット番号に装着されているアダプタ カードに対してコマンド モードを開始します。
(注) アダプタの設定を表示または変更する前に、サーバの電源がオンであることを確認します。 サーバに設定されたアダプタのインデックスを表示するには、show adapter コマンドを使用します。
ステップ 3 server/chassis/adapter# scope host-eth-if {eth0 | eth1} vNIC のコマンド モードを開始します。 お客様の環境に設定された vNIC の数に基づいてイーサネット ID を指定します。 たとえば、1 つの vNIC だけを設定した場合は、eth0 を指定します。
ステップ 4 server/chassis/adapter/host-eth-if# create usnic-config 0 usNIC config を作成します。続いて、コマンド モードを開始します。 インデックス値を必ず 0 に設定してください。
(注) CIMC CLI を使用して特定の vNIC に初めて Cisco usNIC を作成するには、usnic-config を最初に作成する必要があります。 その後、usnic-config にスコープして、Cisco usNIC のプロパティを変更するだけで十分です。 Cisco usNIC プロパティの変更の詳細については、CIMC CLI を使用した Cisco usNIC の変更を参照してください。
ステップ 5 server/chassis/adapter/host-eth-if/usnic-config# set cq-count count 割り当てる完了キュー リソースの数を指定します。 この値を 4 に設定することを推奨します。
完了キューの数は、送信キューの数と受信キューの数の合計と等しくなります。
ステップ 6 server/chassis/adapter/host-eth-if/usnic-config# set rq-count count 割り当てる受信キュー リソースの数を指定します。 MPI は、プロセスごとに 2 つの受信キューを使用します。 この値を 2 に設定することを推奨します。
ステップ 7 server/chassis/adapter/host-eth-if/usnic-config# set tq-count count 割り当てる送信キュー リソースの数を指定します。 MPI は、プロセスごとに 2 つの送信キューを使用します。 この値を 2 に設定することを推奨します。
ステップ 8 server/chassis/adapter/host-eth-if/usnic-config# set usnic-count number of usNICs . 作成する Cisco usNIC の数を指定します。 サーバで実行されている各 MPI プロセスには、専用の Cisco usNIC が必要です。 したがって、64 の MPI プロセスを同時に実行させるには、最大 64 の Cisco usNIC を作成する必要がある場合があります。 Cisco usNIC 対応 vNIC ごとに、サーバの物理コアの数と同数の Cisco usNIC を最低限作成することを推奨します。 たとえば、サーバに 8 つの物理コアがある場合は、8 つの Cisco usNIC を作成します。
ステップ 9 server/chassis/adapter/host-eth-if /usnic-config# commit トランザクションをシステムの設定にコミットします。
(注) 変更はサーバのリブート時に有効になります。
ステップ 10 server/chassis/adapter/host-eth-if/usnic-config# exit ホスト イーサネット インターフェイス コマンド モードを終了します。
ステップ 11 server/chassis/adapter/host-eth-if# exit アダプタ インターフェイス コマンド モードを終了します。
ステップ 12 server/chassis/adapter# exit シャーシ インターフェイス コマンド モードを終了します。
ステップ 13 server/chassis# exit サーバ インターフェイス コマンド モードを終了します。
ステップ 14 server# scope bios Bios コマンド モードを開始します。
ステップ 15 server/bios# scope advanced BIOS コマンド モードの高度な設定を開始します。
ステップ 16 server/bios/advanced# set IntelVTD Enabled インテル バーチャライゼーション テクノロジーをイネーブルにします。
ステップ 17 server/bios/advanced# set ATS Enabled プロセッサの Intel VT-d Address Translation Services(ATS)のサポートをイネーブルにします。
ステップ 18 server/bios/advanced# set CoherencySupport Enabled プロセッサの Intel VT-d coherency のサポートをイネーブルにします。
ステップ 19 server /bios/advanced# commit トランザクションをシステムの設定にコミットします。
(注) 変更はサーバのリブート時に有効になります。
次の例は、Cisco usNIC プロパティの設定方法を示します。
Server # scope chassis server /chassis # show adapter server /chassis # scope adapter 2 server /chassis/adapter # scope host-eth-if eth0 server /chassis/adapter/host-eth-if # create usnic-config 0 server /chassis/adapter/host-eth-if/usnic-config *# set usnic-count 64 server /chassis/adapter/host-eth-if/usnic-config *# set cq-count 4 server /chassis/adapter/host-eth-if/usnic-config *# set rq-count 2 server /chassis/adapter/host-eth-if/usnic-config *# set tq-count 2 server /chassis/adapter/host-eth-if/usnic-config *# commit Committed settings will take effect upon the next server reset server /chassis/adapter/host-eth-if/usnic-config # exit server /chassis/adapter/host-eth-if # exit server /chassis/adapter # exit server /chassis # exit server # exit server/bios # scope bios server/bios/advanced # scope advanced server/bios/advanced # set Intel VTD Enabled server/bios/advanced # set ATS Enabled server/bios/advanced # set CoherencySupport Enabled server /chassis/adapter/host-eth-if/usnic-config # commit Committed settings will take effect upon the next server resetCIMC CLI を使用した Cisco usNIC の変更
手順
次の例は、Cisco usNIC プロパティの設定方法を示します。
server # scope chassis server /chassis # show adapter server /chassis # scope adapter 2 server /chassis/adapter # scope host-eth-if eth0 server /chassis/adapter/host-eth-if # scope usnic-config 0 server /chassis/adapter/host-eth-if/usnic-config # set usnic-count 64 server /chassis/adapter/host-eth-if/usnic-config # set cq-count 4 server /chassis/adapter/host-eth-if/usnic-config # set rq-count 2 server /chassis/adapter/host-eth-if/usnic-config # set tq-count 2 server /chassis/adapter/host-eth-if/usnic-config # commit Committed settings will take effect upon the next server reset server /chassis/adapter/host-eth-if/usnic-config # exit server /chassis/adapter/host-eth-if # exit server /chassis/adapter # exit server /chassis # exit server # exit server/bios # scope bios server/bios/advanced # scope advanced server/bios/advanced # set Intel VTD Enabled server/bios/advanced # set ATS Enabled server/bios/advanced # set CoherencySupport Enabled server /chassis/adapter/host-eth-if/usnic-config # commit Committed settings will take effect upon the next server resetvNIC からの Cisco usNIC の削除
手順
コマンドまたはアクション 目的 ステップ 1 server# scope chassis シャーシ コマンド モードを開始します。
ステップ 2 server/chassis# scope adapter index index で指定した PCI スロット番号に装着されているアダプタ カードに対してコマンド モードを開始します。
(注) アダプタの設定を表示または変更する前に、サーバの電源がオンであることを確認します。 サーバに設定されたアダプタのインデックスを表示するには、show adapter コマンドを使用します。
ステップ 3 server/chassis/adapter# scope host-eth-if {eth0 | eth1} vNIC のコマンド モードを開始します。 お客様の環境に設定された vNIC の数に基づいてイーサネット ID を指定します。 たとえば、1 つの vNIC だけを設定した場合は、eth0 を指定します。
ステップ 4 Server/chassis/adapter/host-eth-if# delete usnic-config 0 vNIC の Cisco usNIC 設定を削除します。
ステップ 5 Server/chassis/adapter/host-eth-if# commit トランザクションをシステムの設定にコミットします。
(注) 変更はサーバのリブート時に有効になります。
次に、vNIC の Cisco usNIC 設定を削除する例を示します。
server # scope chassis server/chassis # show adapter server/chassis # scope adapter 1 server/chassis/adapter # scope host-eth-if eth0 Server/chassis/adapter/host-eth-if # delete usnic-config 0 server/adapter/host-eth-if/iscsi-boot *# commit New host-eth-if settings will take effect upon the next adapter reboot server /adapter/host-eth-if/usnic-config #Cisco usNIC の Linux ドライバのインストール
ここでは、UCS ドライバ ISO バンドルに含まれている Cisco usNIC ビルド フォルダの内容を示します。 Cisco usNIC の既知の問題とインストール手順(README)のドキュメントは、ビルド フォルダにも含まれています。
(注)
OS が usNIC アプリケーションに割り当てられているメモリをスワップアウトすることを回避するために、インストール ソフトウェアは OS のロックされたメモリ システム設定を無制限に拡張します。
- kmod-usnic_verbs-1.0.0.77-1.x86_64.rpm:Cisco VIC SR-IOV イーサネット NIC の usNIC 機能の Linux カーネル verbs ドライバ。
- libusnic_usnic_verbs-1.0.0.77-1.x86_64.rpm:usNIC 用のユーザ領域のライブラリ libibverbs プラグイン。
- kmod-enic-2.1.1.47-rhel6u4.el6.x86_64.rpm:Enic の Linux カーネル ドライバ。
- openmpi-cisco-1.6.5cisco1.0.0.77-1.x86 _64.rpm:Cisco usNIC オープン MPI:Cisco usNIC BTL MPI 転送を使用したオープン MPI。
- usnic_tools-1.0.0.77-1.x86_64.rpm:usNIC 用のユーティリティ プログラム。
- usnic_installer.sh:この項に記載される usNIC パッケージをインストールするスクリプト。
- usnic_uninstaller.sh:この項に記載される usNIC パッケージをアンインストールするスクリプト。
はじめる前に手順Cisco Integrated Management Controller(CIMC)に Cisco usNIC プロパティを設定したことを確認してください。 プロパティの設定方法の詳細については、Cisco usNIC の設定を参照してください。
また、 Cisco usNIC をインストールする Cisco UCS サーバに、サポート対象のバージョンの Cisco Enic ドライバがインストールされていることを確認する必要があります。 Cisco Enic ドライバは Cisco VIC SR-IOV イーサネット NIC 用の Linux カーネル ネットワーキング ドライバです。
ステップ 1 #./usnic_installer.sh
Cisco usNIC のインストール ファイルを解凍したディレクトからインストーラ スクリプトを実行します。
(注) root (#) プロンプトでスクリプトを実行するには、admin 権限が必要です。
ステップ 2 # chkconfig rdma on
rdma サービスが開始されていることを確認します。 このサービスは usnic_verbs カーネル モジュールに必要です。
ステップ 3 サーバをリブートしてインストールの変更を有効にする必要があります サーバをリブートしない場合、カーネル モジュールを手動でロードできます。 モジュールのロード方法の詳細については、Cisco usNI のカーネル モジュールの手動のロードを参照してください。
Cisco usNI のカーネル モジュールの手動のロード
手順
コマンドまたはアクション 目的 ステップ 1 # rmmod enic
既存の Enic ドライバ モジュールをアンロードします。
(注) たとえば ssh 経由でネットワークを使用して、OS にログインしていないことを確認します。 そうしない場合、ネットワーク接続が完全に切断されている状態になる可能性があります。 または、CIMC KVM を使用してサーバにログインして、このステップを実行することができます。
ステップ 2 # modprobe enic
Enic ドライバ モジュールをロードします。
ステップ 3 # modprobe usnic_verbs
usnic_verbs ドライバ モジュールをロードします。
Cisco usNIC のインストールの確認
手順
ステップ 1 usnic_verbs が名前に付いたすべてのカーネル モジュールを検索および一覧表示して、OS ドライバのインストール時にカーネル モジュールがロードされていることを確認してください。 $ lsmod | grep usnic_verbs$ lsmod | grep usnic_verbs コマンドを入力すると、次の詳細情報が表示されます。 コンソールに一覧表示されているカーネル モジュールは、OS に現在ロードされているモジュールに基づいて異なる場合があります。
usnic_verbs 78776 0 ib_core 73747 13 ib_ipoib,rdma_ucm,ib_ucm,ib_uverbs,ib_umad,rdma_cm,ib_cm,iw_cm,ib_sa,ib_mad, iw_cxgb4,iw_cxgb3,usnic_verbs enic 67741 1 usnic_verbsステップ 2 Cisco usNIC 対応 NIC の設定を確認してください。 $ ibv_devinfo次のセクションは、 ibv_devinfo コマンドを実行するときに表示される結果の簡単な例になります。 結果は、現在のインストール環境によって異なる場合があります。 結果がコンソールに表示されたら、一覧表示されたポートのそれぞれの状態が PORT_ACTIVE と表示されていることを確認します。 次の例では、 Cisco UCS VIC 1225 アダプタ上に設定された 2 つのポート( usnic_1 および usnic_0)を示します。 1 つの usNIC 対応 vNIC だけを設定した場合、 usnic_0 のみのリストが表示されます。
(注) ibv_devinfo コマンドは iWARP としてトランスポート パラメータの値を表示します。 ただし、Cisco usNIC は iWARP 転送を使用しません。
hca_id: usnic_1 transport: iWARP (1) node_guid: 0200:00ff:fe00:0000 sys_image_guid: 2657:20ff:fe6f:1100 vendor_id: 0x1137 vendor_part_id: 207 hw_ver: 0x2 board_id: 133 phys_port_cnt: 1 port: 1 state: PORT_ACTIVE (4) max_mtu: 4096 (5) active_mtu: 4096 (5) sm_lid: 0 port_lid: 0 port_lmc: 0x01 link_layer: Ethernet hca_id: usnic_0 transport: iWARP (1) node_guid: 0200:00ff:fe00:0000 sys_image_guid: 2657:20ff:fe6f:1000 vendor_id: 0x1137 vendor_part_id: 207 hw_ver: 0x2 board_id: 133 phys_port_cnt: 1 port: 1 state: PORT_ACTIVE (4) max_mtu: 4096 (5) active_mtu: 4096 (5) sm_lid: 0 port_lid: 0 port_lmc: 0x01 link_layer: Ethernetステップ 3 rdma サービスが開始されていることを確認します。 このサービスは usnic_verbs カーネル モジュールのロードに必要です。 chkconfig - -level 2345 rdma onステップ 4 インストールされている RPM およびバージョンを確認するに usnic_verbs_check スクリプトを実行します。 $ /opt/cisco/usnic/bin/usnic_verbs_checkエラーが OS ドライバのインストール中に発生している場合、警告が生成されます。
usnic_verbs モジュールのロードで失敗した場合は、次の簡単な例が生成された警告を示します。$ sudo rmmod usnic_verbs $ /opt/cisco/usnic/bin/usnic_verbs_check enic RPM version 2.1.1.46-2 installed usnic_verbs RPM version 1.0.0.58-1 installed WARNING: usnic_verbs module not loaded libusnic_verbs RPM version 1.0.0.58-1 installed Open MPI RPM version 1.6.5cisco1.0.0.58-1 installed WARNING: No usnic verbs devices found WARNING: No usnic verbs devices found 3 warningsステップ 5 Cisco usNIC ネットワーク パケットがクライアントとサーバのホスト間で正常に送信されていることを確認してください。
次の例は、 ibv_ud_pingpong プログラムを実行するときに表示される結果を示します。Server-side: <server>$ ibv_ud_pingpong -g 0 -d usnic_0 -s 200 local address: LID 0x0000, QPN 0x000001, PSN 0x38ffcb: GID fe80::2657:20ff:fe6f:1000 remote address: LID 0x0000, QPN 0x000001, PSN 0x3a9e22, GID fe80::b2fa:ebff:fe72:84fd 400000 bytes in 0.01 seconds = 637.70 Mbit/sec 1000 iters in 0.01 seconds = 5.02 usec/iter Client-side: <client>$ ibv_ud_pingpong -g 0 -d usnic_0 -s 200 10.1.0.1 local address: LID 0x0000, QPN 0x000001, PSN 0x3a9e22: GID fe80::b2fa:eb ff:fe72:84fd remote address: LID 0x0000, QPN 0x000001, PSN 0x38ffcb, GID fe80::2657:20 ff:fe6f:1000 400000 bytes in 0.01 seconds = 617.40 Mbit/sec 1000 iters in 0.01 seconds = 5.18 usec/iterステップ 6 ring_c テスト プログラムをダウンロード、コンパイル、および実行して、MPI トラフィックがクライアントとサーバのホスト間で正しく送信されていることを検証します。 ring_c テスト プログラムは、http://svn.open-mpi.org/svn/ompi/branches/v1.6/examples/ring_c.cのリンクから取得できます。
次の例は、 wget ユーティリティを使用して ring_c を取得、コンパイル、および実行する方法を示します。 また、テスト プログラムの取得および実行のその他の方法を使用できます。$ wget http://svn.open-mpi.org/svn/ompi/branches/v1.6/examples/ring_c.c --2013-08-06 15:27:33-- http://svn.open-mpi.org/svn/ompi/branches/v1.6/examples/ring_c.c Resolving svn.open-mpi.org... 129.79.13.24 Connecting to svn.open-mpi.org|129.79.13.24|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 2418 (2.4K) [text/plain] Saving to: “ring_c.c” 100%[======================================>] 2,418 --.-K/s in 0s Last-modified header invalid -- time-stamp ignored. 2013-08-06 15:27:33 (10.7 MB/s) - “ring_c.c” saved [2418/2418] $ mpicc ring_c.c -o ring_c [no output] $ mpiexec --host host1,host2 -n 4 ./ring_c Process 0 sending 10 to 1, tag 201 (4 processes in ring) Process 0 sent to 1 Process 0 decremented value: 9 Process 0 decremented value: 8 Process 0 decremented value: 7 Process 0 decremented value: 6 Process 0 decremented value: 5 Process 0 decremented value: 4 Process 0 decremented value: 3 Process 0 decremented value: 2 Process 0 decremented value: 1 Process 0 decremented value: 0 Process 0 exiting Process 2 exiting Process 1 exiting Process 3 exiting ...
ibv_ud_pingpong プログラムおよび ring_c プログラムが正常に実行された場合、usNIC 上で MPI アプリケーションを実行できるはずです。
Copyright © 2013, Cisco Systems, Inc. All rights reserved.