技術コラム

製品技術
Mellanox

ESXi 6.7U2 環境下におけるMellanox ConnectX-5 ENでのSR-IOVの動作

ESXi 6.7U2 環境下におけるMellanox ConnectX-5 ENでのSR-IOVの動作

1. 本検証の目的

Mellanox ConnectXシリーズがサポートしている Single Root I/O Virtualization (SR-IOV) の設定手順とその有効性を確認。
現在多くのユーザが使用しているVMware環境において検証。
VMwareESXi6.7U2を使用して、仮想マシン(Windows2012R2)を2台構築しSR-IOV使用と未使用とに分けて、iSCSIでのIOパフォーマンスを計測し比較。

2. 検証環境

■ 使用機器
ESXi6.7サーバ SuperMirco サーバ
– 4 CPUs x Intel(R) Xeon(R) CPU E5-1620 v3 @ 3.50GHz
– Memory 16GB
– PC ExpressスロットのSR-IOV有効化
– Mellanox ConnectX-5 を2枚搭載

ESXi6.7上に仮想マシン(Windows2012R2)を作成
– Windows2012R2(SR-IOV有効) CPU 2  メモリ 4GB
– Windows2012R2(VM-Kernel NIC) CPU 2  メモり 4GB

■ SANBLaze ターゲットエミュレーション装置
ConnectX-4を搭載したターゲットエミュレーション装置
2台の仮想マシン用としてそれぞれのポートにターゲットを作成してマウント

■ IO-Meter
2台の仮想マシンから同時に512B,4KB,8KB16KB,32KB,128KB,256KB,1MB,4MB,8MBのブロックサイ
ズでのパフォーマンスを計測した


3.サーバの設定

3.1 マザーボードのSR-IOV有効化
マザーボードのBIOS/UEFIにてPCI-ExpressスロットのSR-IOVを有効にするため
「VT-d(またはAMD-Vi)」と「SR-IOV」を“Enabled”に変更します。
※設定方法はBIOSによって異なります。

以下はAMIのBIOSの例です。

4. ESXiへのConnectX-5ドライバ、ツールのインストール

4.1 Mellanox ConnectX-5 ドライバ、ツールのインストール
(1) sshにて、ESXiサーバへログインします。
(2) /tmpにダウンロードしたドライバ、ツールを格納します
※ESXiはインストールは/tmpで行わないと成功しません。
(3) 必要なパッケージのインストール
3つのパッケージをインストールする。

ドライバ: ダウンロードした
MLNX-NATIVE-ESX-ConnectX-4-5_4.17.13.8-10EM-670.0.0-8873266.zip
を解凍すると
MLNX-NATIVE-ESX-ConnectX-4-5_4.17.13.8-10EM-670.0.0-offline_bundle-
8873266.zip が生成されます。

ツール: ツールは、MSTとMFTの2つがあります。
mft-4.12.0.105-10EM-650.0.0.4598673.x86_64.vib
nmst-4.12.0.105-1OEM.650.0.0.4598673.x86_64.vib

以下のコマンドでインストールします。
esxcli software vib install -d (フルパス)ドライバ.zip

(4)再起動

(5)ドライバインストール状態の確認

4.2 FWの確認
(1)ConnectX-5のFWの確認
. mlxfwmanager –query

5.Connect-5のSR-IOVの有効化

5.1 FWパラメータのSR-IOVを有効化する
(1)デバイス名の表示
mst status

(2)パラメータの状態の表示
mlxconfig -d mt4119_pciconf1 q    mt4119_pciconf1のパラメータを表示する

(3) SR-IOVのパラメータだけ抽出する

(4) SR-IOVを有効化して、必要な数の仮想機能(VF)を設定します。
SRIOV_EN = 1   1:True 0:Fales
NUM_OF_VFS = 8; これはポートごとに8つのVFの例

mt4119_pciconf1を有効にする場合

■SR-IOVの有効化

■VFの設定

(5)サーバの再起動

(6)FWパラメータの確認

5.2 ドライバのパラメータにてSR-IOVを有効化する

(1)ドライバパラメータの確認
esxcli system module parameters list -m nmlx5_core
max_vfsモジュールパラメータを確認する

(2)ドライバパラメータの変更
VFSを4つ設定する
esxcli system module parameters set -m nmlx5_core -p max_vfs=4
※特に出力は戻ってこない

(3)サーバの再起動

(4)確認

lspciコマンドで仮想NICが増えていることを確認する

#lspci -d | grep Mellanox



6.VMware esxiの設定

vSphereWebClientにて、仮想マシンにてSR-IOVが使用できるように設定する

6.1 ネットワークの設定
仮想マシンでMellanoxConnectX-5が使えるように設定
(1) 仮想スイッチを作成
vmnic2、vmnic3 をSR-IOVという仮想スイッチに接続

(2)SR-IOV ポートグループを作成


6.2 SR-IOV使用 仮想マシンの設定
(1)仮想マシンの作成時、もしくは作成後に“編集の編集”を行う
(2)ネットワークアダプタの追加
ネットワークアダプタ  “SR-IOV”を選択
アダプタタイプ “SR-IOVパススルー”
物理機能 “ConnectX-5”を選択
ゲストOSのMTUの変更 “許可”

すべてのゲストメモリを予約(すべてロック)に☑をする



7.ゲストOSの設定

7.1 ゲストOSの設定
(1) ゲストOS(Windows2012R2)を起動する
(2) SR-IOV 使用の仮想マシンのデバイスマネージャにドライバがインストールされていない状態のMellanox ConnectX-5が認識されているので、Mellanox Connect-5ドライバをインストール
する。
(3) デバイスマネージャに“Mellanox Connect-5”が認識される。

(4) ネットワークアダプタの設定に“PCIパススルーxx”と認識されているので、IPアドレスを設定する

(5)SR-IOVなしの仮想マシンには、すでに仮想NICとしてConnectX-5が認識されている

8.パフォーマンス測定

8.1 パフォーマンス測定環境と測定方法

(1)  2台の仮想マシンそれぞれ、別々のターゲット(SANBLaze)に25GbpsでiSCSI接続
(2)  2台同時にIO-Meterを実行

512B,4KB,8KB16KB,32KB,128KB,256KB,1MB,4MB,8MB ブロックサイズ
Read/Write 50% ランダムアクセス

ゲストOS

SR-IOV使用 (図 Windows2012R2 SR-IOV有効)
SR-IOV未使用 (図esxiに認識されているvnic3をPCIパススルーとして使用)

8.2 パフォーマンス比較   スループットとCPU使用率
縦棒グラフ スループット   単位:MBs 左軸
折れ線グラフ CPU使用率 単位:%  右軸

(1)SR-IOV未使用(VM-Kernel NIC)

(2)SR-IOV使用(SR-IOV有効)

(3)最大値の比較 単位:MBs

(3)  esxのkerenel IO値
SR-IOV有効にしているvmnic3のカウンターが0であることから、IOがVMkernelをパススルーして
いることがわかる。
esxtop -n の出力結果


9.考察

今回、Single Root I/O Virtualization (SR-IOV)の検証として、SR-IOVは、遅延の影響に敏感で、かつCPU リソースをさらに必要とする仮想マシンのネットワークがもっとも有効であることから、仮想環境での検証を行った。 多くのユーザが使用しているVMwarevSphereを題材にしました。
今回の検証では、2台の仮想マシン(SR-IOV使用と未使用)からSANBLazeというメモリベースのターゲットエミュレーション装置をiSCSiのターゲットとして、同時にIOを流すことによりSR-IOV を有効にしたConnectX-5では、 vSphere(ホストマシン)上の仮想マシンがVMkernel をバイパスすることで、遅延が削減され CPU の効率が向上しているところを明確に比較することができました。
パフォーマンスが1.5倍以上向上しているが、CPU使用率は10%の上昇程度で収まっていることからCPU使用の効率が向上していることがわかる。
このことから、VMwareのVDI環境でiSCSIやNASのストレージを使用した際に懸念となるブートストーム問題に対して、SR-IOV使うことで、ネットワークパフォーマンス向上、ホストCPU使用効率向上よる回避ができるだろうと思う。