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によって異なります。
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.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) esxのkerenel IO値
SR-IOV有効にしているvmnic3のカウンターが0であることから、IOがVMkernelをパススルーして
いることがわかる。
esxtop -n の出力結果
今回、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使用効率向上よる回避ができるだろうと思う。