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%

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