Proxmox+AlmalinuxでNICをPCIパススルーしてiperf3で負荷をかけてみた
はじめに
以前ESXi環境でPCIパススールをしてみたが、Proxmoxでもしてみました。
物理環境はMS-01で今回PCIパススルーするNICはintel X710です。
細かい説明は前の記事でしているので、今回は結果のみです。
PCIパススルー無し
構成
一つのPC内に仮想マシン(VM)を立てて、赤破線経路でVM間の通信を実施。
帯域
帯域は9.27Gbpsだった
[root@ALM-LOA-01 ~]# iperf3 -c 172.16.0.2 -t 1000
(略)
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-1000.00 sec 1.05 TBytes 9.27 Gbits/sec 3314680 sender
[ 5] 0.00-1000.04 sec 1.05 TBytes 9.27 Gbits/sec receiver
CPU
送信側のCPU使用率は概ね58%程度に見える
受信側のCPU使用率は概ね82%程度に見える
PCIパススルーあり
構成
VMのNICと物理NICを紐づける。
設定
負荷試験に使ったネットデバイスを削除
PCIデバイスを追加する
Rawデバイスを選択して、対象のNICを選択
PCIデバイスが選択された
ens16として認識されている(削除したnet1はens19として認識されていた)
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether bc:24:11:40:0b:26 brd ff:ff:ff:ff:ff:ff
altname enp0s18
inet 192.168.11.42/24 brd 192.168.11.255 scope global dynamic noprefixroute ens18
valid_lft 86090sec preferred_lft 86090sec
3: ens16: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 58:47:ca:79:67:68 brd ff:ff:ff:ff:ff:ff
altname enp0s16
connection名を確認したら'Wired connection2'となっていた。
[root@localhost ~]# nmcli dev
DEVICE TYPE STATE CONNECTION
ens18 ethernet connected ens18
ens16 ethernet connecting (getting IP configuration) Wired connection 2
lo loopback connected (externally) lo
IFを設定
nmcli con mod 'Wired connection 2' ipv4.addresses 172.16.1.1/24
nmcli con mod 'Wired connection 2' ipv4.method manual
nmcli con down 'Wired connection 2'; nmcli con up 'Wired connection 2';
疎通確認OK
[root@localhost ~]# ping 172.16.1.2
PING 172.16.1.2 (172.16.1.2) 56(84) bytes of data.
64 bytes from 172.16.1.2: icmp_seq=1 ttl=64 time=0.421 ms
64 bytes from 172.16.1.2: icmp_seq=2 ttl=64 time=0.400 ms
^C
--- 172.16.1.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1030ms
rtt min/avg/max/mdev = 0.400/0.410/0.421/0.010 ms
準備が整ったのでいざ試験
帯域
帯域は9.38Gbpsだった
[root@ALM-LOA-01 ~]# iperf3 -c 172.16.1.2 -t 1000
(略)
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-1000.00 sec 1.07 TBytes 9.38 Gbits/sec 313322 sender
[ 5] 0.00-1000.04 sec 1.07 TBytes 9.38 Gbits/sec receiver
CPU
送信側のCPU使用率は概ね21%程度に見える
PCIパススルーによりProxmoxがネットワーク転送量を見られなくなったため、ネットワーク転送量のグラフは0になる。(左の山が最初の試験、右の山が今回の試験)
受信側のCPU使用率は概ね49%程度に見える(左の山が最初の試験、右の山が今回の試験)
おわりに
簡単に設定できました(ESXiよりは癖がなかったように感じました)
CPU使用率は下記のように下がりました
送信側:58%→21%
受信側:82%→49%