MS-01で遊んでみた 3 SR-IOVに触れた話(MS-01/ESXi/Almalinux/iperf)

この記事の続きになります。
https://note.com/enokiko/n/n870134561fc7

はじめに

SR-IOVという機能を触ってみました。
前の記事で触ってみたPCIパススルーでは、仮想マシンが持つIF(仮想IF)と物理的なNIC(物理IF)が1対1の関係になります。
これだと物理IFが足りなくなってしまうので、物理IFを仮想的に複数に見せる機能がSR-IOVです。
すごそうなので使ってみました。

※PCIパススルーもSR-IOVもPCI Expressデバイスに関する機能なので、物理NICに限定した機能ではないです。

SR-IOVの用語の説明

SR-IOV :英語で書くとSingle-Root Input/Output Virtualization。シングルルートI/O仮想化ともいう。
PF:英語で書くとPhysical Function。PCIカードやオンボードデバイスなどの物理的なポート
VF:英語で書くとVirtual Function。PFをもとに作成される仮想的なポート。
※PCI-SIGがSR-IOVの仕様を策定

構成

構成準備

SR-IOVの設定

「管理」→「ハードウェア」からPCIデバイスの様子を確認

パススルーが無効である確認をして、チェックを入れて「SR-IOVの構成」を左クリック
※パススルーは無効化しておかないとSR-IOVの最大が0になり、SR-IOVが構成できない。

有効→「はい」を選択、仮想機能→「2」を入力

末尾「00.0」でSR-IOVを有効にしたところ、末尾「02.0」と「02.1」が作成された。

末尾「00.1」でも同様にして合計4つパススルーがアクティブなポートができた

ネットワーク設定

物理NICは確認できる。vmnic0とvmnic1が10GbpsのSFP+ポート

vSwtichを2つ作成。作成したのは「vSwitchSFP1」と「vSwitchSFP2」

ポートグループを2つ作成。作成したのは「SFP1 Network」と「SFP2 Network」

仮想マシンの設定

仮想マシンの編集を開く

その他のデバイスの追加を開く

SR-IOVで作成したPCIデバイスが確認できるので割り当てる

Linux上でlspciをするとSR-IOVのVFが認識されている
※ALMA-LOAD-001~012まで4台とも同じ文言

[root@localhost ~]# lspci | grep Ethernet
02:02.0 Ethernet controller: VMware VMXNET3 Ethernet Controller (rev 01)
02:05.0 Ethernet controller: Intel Corporation Ethernet Virtual Function 700 Series (rev 02)


負荷試験

002→001への負荷

クライアント:CPU25%程度で9.42Gbpsで送信
サーバ:CPU55%程度で9.41Gbpsで受信
※PCIパススルー(SR-IOVなし)と同程度

【クライアント側】

[root@localhost ~]# iperf3 -c 172.16.37.1 -t 1000
(略)
[  5] 266.00-267.00 sec  1.10 GBytes  9.42 Gbits/sec    0   2.58 MBytes
[  5] 267.00-268.00 sec  1.10 GBytes  9.42 Gbits/sec    0   2.58 MBytes
[  5] 268.00-269.00 sec  1.10 GBytes  9.42 Gbits/sec    0   2.58 MBytes
[  5] 269.00-270.00 sec  1.10 GBytes  9.42 Gbits/sec    0   2.58 MBytes
[  5] 270.00-271.00 sec  1.10 GBytes  9.42 Gbits/sec    0   2.58 MBytes
[  5] 271.00-272.00 sec  1.10 GBytes  9.42 Gbits/sec    0   2.58 MBytes
[  5] 272.00-273.00 sec  1.09 GBytes  9.41 Gbits/sec    0   2.58 MBytes
[  5] 273.00-274.00 sec  1.10 GBytes  9.42 Gbits/sec    0   2.58 MBytes
[  5] 274.00-275.00 sec  1.10 GBytes  9.42 Gbits/sec    0   2.58 MBytes
[  5] 275.00-276.00 sec  1.10 GBytes  9.42 Gbits/sec    0   2.58 MBytes
[  5] 276.00-277.00 sec  1.10 GBytes  9.42 Gbits/sec    0   2.58 MBytes
[  5] 277.00-278.00 sec  1.10 GBytes  9.42 Gbits/sec    0   2.58 MBytes
[  5] 278.00-279.00 sec  1.10 GBytes  9.42 Gbits/sec    0   2.58 MBytes
[  5] 279.00-280.00 sec  1.09 GBytes  9.41 Gbits/sec    0   2.58 MBytes

【サーバ側】

[root@localhost ~]# iperf3 -s
(略)
[  5] 266.00-267.00 sec  1.10 GBytes  9.41 Gbits/sec
[  5] 267.00-268.00 sec  1.10 GBytes  9.41 Gbits/sec
[  5] 268.00-269.00 sec  1.10 GBytes  9.41 Gbits/sec
[  5] 269.00-270.00 sec  1.10 GBytes  9.41 Gbits/sec
[  5] 270.00-271.00 sec  1.10 GBytes  9.41 Gbits/sec
[  5] 271.00-272.00 sec  1.10 GBytes  9.41 Gbits/sec
[  5] 272.00-273.00 sec  1.10 GBytes  9.41 Gbits/sec
[  5] 273.00-274.00 sec  1.10 GBytes  9.41 Gbits/sec
[  5] 274.00-275.00 sec  1.10 GBytes  9.41 Gbits/sec
[  5] 275.00-276.00 sec  1.10 GBytes  9.41 Gbits/sec
[  5] 276.00-277.00 sec  1.10 GBytes  9.41 Gbits/sec
[  5] 277.00-278.00 sec  1.10 GBytes  9.41 Gbits/sec
[  5] 278.00-279.00 sec  1.10 GBytes  9.41 Gbits/sec
[  5] 279.00-280.00 sec  1.10 GBytes  9.41 Gbits/sec

011→001への負荷

クライアント:CPU55%程度で約16.7Gbpsで送信
サーバ:CPU90%程度で約16.7Gbpsで受信
※10GbpsのNICに関わらず10Gbpsを超える速度が出た

【クライアント側】

[root@localhost ~]# iperf3 -c 172.16.37.1 -t 1000
(略)
[  5] 127.00-128.00 sec  1.95 GBytes  16.8 Gbits/sec  627    479 KBytes
[  5] 128.00-129.00 sec  1.95 GBytes  16.8 Gbits/sec  613    457 KBytes
[  5] 129.00-130.00 sec  1.94 GBytes  16.7 Gbits/sec  617    576 KBytes
[  5] 130.00-131.00 sec  1.94 GBytes  16.7 Gbits/sec  634    506 KBytes
[  5] 131.00-132.00 sec  1.94 GBytes  16.7 Gbits/sec  770    450 KBytes
[  5] 132.00-133.00 sec  1.94 GBytes  16.7 Gbits/sec  528    518 KBytes
[  5] 133.00-134.00 sec  1.93 GBytes  16.6 Gbits/sec  644    434 KBytes
[  5] 134.00-135.00 sec  1.94 GBytes  16.6 Gbits/sec  638    551 KBytes
[  5] 135.00-136.00 sec  1.93 GBytes  16.6 Gbits/sec  933    411 KBytes

【サーバ側】

[root@localhost ~]# iperf3 -s
(略)
[  5] 127.00-128.00 sec  1.96 GBytes  16.8 Gbits/sec
[  5] 128.00-129.00 sec  1.94 GBytes  16.7 Gbits/sec
[  5] 129.00-130.00 sec  1.95 GBytes  16.7 Gbits/sec
[  5] 130.00-131.00 sec  1.94 GBytes  16.7 Gbits/sec
[  5] 131.00-132.00 sec  1.94 GBytes  16.7 Gbits/sec
[  5] 132.00-133.00 sec  1.94 GBytes  16.7 Gbits/sec
[  5] 133.00-134.00 sec  1.93 GBytes  16.6 Gbits/sec
[  5] 134.00-135.00 sec  1.93 GBytes  16.6 Gbits/sec
[  5] 135.00-136.00 sec  1.93 GBytes  16.6 Gbits/sec


012→001への負荷

クライアント:CPU25%程度で9.42Gbpsで送信
サーバ:CPU55%程度で9.41Gbpsで受信
※PCIパススルー(SR-IOVなし)と同程度

【クライアント側】

[root@localhost ~]# iperf3 -c 172.16.37.1 -t 1000
(略)
[  5] 210.00-211.00 sec  1.10 GBytes  9.42 Gbits/sec    0   2.49 MBytes
[  5] 211.00-212.00 sec  1.10 GBytes  9.42 Gbits/sec    0   2.49 MBytes
[  5] 212.00-213.00 sec  1.10 GBytes  9.42 Gbits/sec    0   2.49 MBytes
[  5] 213.00-214.00 sec  1.10 GBytes  9.42 Gbits/sec    0   2.49 MBytes
[  5] 214.00-215.00 sec  1.10 GBytes  9.42 Gbits/sec    0   2.49 MBytes
[  5] 215.00-216.00 sec  1.09 GBytes  9.41 Gbits/sec    0   2.49 MBytes
[  5] 216.00-217.00 sec  1.10 GBytes  9.42 Gbits/sec    0   2.49 MBytes
[  5] 217.00-218.00 sec  1.10 GBytes  9.42 Gbits/sec    0   2.49 MBytes
[  5] 218.00-219.00 sec  1.10 GBytes  9.42 Gbits/sec    0   2.49 MBytes
[  5] 219.00-220.00 sec  1.10 GBytes  9.42 Gbits/sec    0   2.49 MBytes

【サーバ側】

[root@localhost ~]# iperf3 -s
(略)
[  5] 210.00-211.00 sec  1.10 GBytes  9.41 Gbits/sec
[  5] 211.00-212.00 sec  1.10 GBytes  9.41 Gbits/sec
[  5] 212.00-213.00 sec  1.10 GBytes  9.41 Gbits/sec
[  5] 213.00-214.00 sec  1.10 GBytes  9.41 Gbits/sec
[  5] 214.00-215.00 sec  1.10 GBytes  9.41 Gbits/sec
[  5] 215.00-216.00 sec  1.10 GBytes  9.41 Gbits/sec
[  5] 216.00-217.00 sec  1.10 GBytes  9.41 Gbits/sec
[  5] 217.00-218.00 sec  1.10 GBytes  9.41 Gbits/sec
[  5] 218.00-219.00 sec  1.10 GBytes  9.41 Gbits/sec
[  5] 219.00-220.00 sec  1.10 GBytes  9.41 Gbits/sec


結果

物理NICを跨ぐと9.4Gbps出る。一方で同一物理NIC間だと16.7Gbps程度だった。
余談だが、ケーブルを抜くとIFがリンクダウンし、物理NIC跨ぎも同一物理NIC間も通信はできなくなる。


いいなと思ったら応援しよう!