Hallo zusammen,
ich versuche gerade mein Homelab von ESXi in Richtung Proxmox zu migrieren. Der Ersatzsserver läuft grundsätzlich soweit und ich bin austesten. Aktuelles Thema ist die Netzwerkperformance.
Der verwendete Netzwerkchip ist ein Broadcom BCM57416 (Thomas Krenn: Broadcom Netzwerkkarten) der auf einem Supermicro H12SSL-NT Epyc System verbaut ist. Die Hardware entspricht diesem separaten Steckadapter: Broadcom P210TP. Der soll 2 x 10 Gbps liefern können.
Das ESXi-System läuft noch parallel.
Problem:
Wenn ich z.B. "ethtool -k eno1np0" eingebe, um mal zu schauen, wie das Offloading konfiguriert ist, kriege ich eine Informationstapete, die sich gewaschen hat. Einiges ist "off", einiges "on". Eher zu viel als zu wenig Infos. Die allgemeine Doku zu der Adapterserie bei Broadcom ist umfangreich: Broadcom Ethernet Network Adapter User Guide . Ich bin eher erschlagen von Infos und weiß nicht so recht wo ich konkret ansetzen kann.
VLAN
Die Problematik tritt sowohl in Windows als auch in Linux VMs auf. Daher habe ich zuerst überlegt, ob die Bridge/VLAN-Konfiguration nicht einen negativen Einfluß hat. Also die Idee, dass bei in einer bestimmten Konfiguration die CPU Netzwerkaufgaben in der VM übernehmen muss, die ansonsten die Hardware täte. Gestartet war ich mit der Standardempfehlung von Proxmox mit VLAN-Aware Bridge. Kann man sich auch hier anschauen:
YouTube "Proxmox VLAN Configuration: Linux Bridge Tagging, Management IP, and Virtual Machines"
Im Moment bin ich bei Linux Port Based VLANs:
Ändert aber nichts.
Messungen mit iperf3:
Die erste Messung direkt zum Host sieht noch ganz gut aus, aber Messung 2 und 3 mit den VMs zeigen dann das Problem.
Nächste Idee war dann, nochmal auf die näher auf den Adapter zu schauen (Firmware, Konfiguration etc), aber ich kriege die Tools von Broadcom (bnxtnvm, niccli) unter Proxmox nicht installiert. Proxmox wird leider auch nicht direkt unterstützt.
Hardware Infos:
Offloading Konfiguration:
Wie ist das bei euch? Schnurrt der Proxmox? Ansatzpunkte?
ich versuche gerade mein Homelab von ESXi in Richtung Proxmox zu migrieren. Der Ersatzsserver läuft grundsätzlich soweit und ich bin austesten. Aktuelles Thema ist die Netzwerkperformance.
Der verwendete Netzwerkchip ist ein Broadcom BCM57416 (Thomas Krenn: Broadcom Netzwerkkarten) der auf einem Supermicro H12SSL-NT Epyc System verbaut ist. Die Hardware entspricht diesem separaten Steckadapter: Broadcom P210TP. Der soll 2 x 10 Gbps liefern können.
Das ESXi-System läuft noch parallel.
Problem:
- Die 10 Gbps insgesamt werden nur knapp erreicht.
- Wenn die Proxmox VMs Empfänger sind, geht die Geschwindigkeit deutlich nach unten (siehe Messungen).
- Die CPU-Last in den Proxmox VMs ist bei den Messungen sehr hoch. Nahe 100%. Beim ESXi Host (ConnectX-3, gleiche CPU) ist das nicht einmal die Hälfte.
- Die Retries gehen nach oben, wenn die VM-CPU am Anschlag ist.
Wenn ich z.B. "ethtool -k eno1np0" eingebe, um mal zu schauen, wie das Offloading konfiguriert ist, kriege ich eine Informationstapete, die sich gewaschen hat. Einiges ist "off", einiges "on". Eher zu viel als zu wenig Infos. Die allgemeine Doku zu der Adapterserie bei Broadcom ist umfangreich: Broadcom Ethernet Network Adapter User Guide . Ich bin eher erschlagen von Infos und weiß nicht so recht wo ich konkret ansetzen kann.
VLAN
Die Problematik tritt sowohl in Windows als auch in Linux VMs auf. Daher habe ich zuerst überlegt, ob die Bridge/VLAN-Konfiguration nicht einen negativen Einfluß hat. Also die Idee, dass bei in einer bestimmten Konfiguration die CPU Netzwerkaufgaben in der VM übernehmen muss, die ansonsten die Hardware täte. Gestartet war ich mit der Standardempfehlung von Proxmox mit VLAN-Aware Bridge. Kann man sich auch hier anschauen:
YouTube "Proxmox VLAN Configuration: Linux Bridge Tagging, Management IP, and Virtual Machines"
Code:
auto lo
iface lo inet loopback
iface eno1np1 inet manual
iface eno1np0 inet manual
auto vmbr0
iface vmbr0 inet manual
bridge-ports eno1np0
bridge-stp off
bridge-fd 0
bridge-vlan-aware yes
bridge-vids 2-4094
auto vmbr0.2
iface vmbr0.2 inet static
address 172.20.2.37/24
gateway 172.20.2.1
Im Moment bin ich bei Linux Port Based VLANs:
Code:
auto lo
iface lo inet loopback
iface eno1np1 inet manual
iface eno1np0 inet manual
iface eno2np1 inet manual
iface enxbe3af2b6059f inet manual
auto vmbr10
iface vmbr10 inet manual
bridge-ports vlan10
bridge-stp off
bridge-fd 0
auto vlan10
iface vlan10 inet manual
vlan-raw-device eno1np0
auto vlan2
iface vlan2 inet static
address 172.20.2.37/24
gateway 172.20.2.1
vlan-raw-device eno1np0
Messungen mit iperf3:
Die erste Messung direkt zum Host sieht noch ganz gut aus, aber Messung 2 und 3 mit den VMs zeigen dann das Problem.
Code:
pvehost1 <-> esxi: adminvm
[ 5] local 172.20.2.37 port 5201 connected to 172.20.2.48 port 46136
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 1.09 GBytes 9.38 Gbits/sec
[ 5] 1.00-2.00 sec 1.09 GBytes 9.39 Gbits/sec
[ 5] 2.00-3.00 sec 1.09 GBytes 9.39 Gbits/sec
[ 5] 3.00-4.00 sec 1.09 GBytes 9.39 Gbits/sec
[ 5] 4.00-5.00 sec 1.09 GBytes 9.39 Gbits/sec
[ 5] 5.00-6.00 sec 1.09 GBytes 9.39 Gbits/sec
[ 5] 6.00-7.00 sec 1.09 GBytes 9.39 Gbits/sec
[ 5] 7.00-8.00 sec 1.09 GBytes 9.39 Gbits/sec
[ 5] 8.00-9.00 sec 1.09 GBytes 9.39 Gbits/sec
[ 5] 9.00-10.00 sec 1.09 GBytes 9.39 Gbits/sec
[ 5] 10.00-10.00 sec 954 KBytes 8.46 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.00 sec 10.9 GBytes 9.39 Gbits/sec receiver
-----------------------------------------------------------
Server listening on 5201 (test #2)
-----------------------------------------------------------
root@pvehost1:~# iperf3 -c 172.20.2.48
Connecting to host 172.20.2.48, port 5201
[ 5] local 172.20.2.37 port 42552 connected to 172.20.2.48 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 1.07 GBytes 9.18 Gbits/sec 0 1.46 MBytes
[ 5] 1.00-2.00 sec 1.09 GBytes 9.38 Gbits/sec 0 1.53 MBytes
[ 5] 2.00-3.00 sec 1.09 GBytes 9.40 Gbits/sec 0 1.53 MBytes
[ 5] 3.00-4.00 sec 1.09 GBytes 9.38 Gbits/sec 0 1.53 MBytes
[ 5] 4.00-5.00 sec 1.09 GBytes 9.40 Gbits/sec 0 1.53 MBytes
[ 5] 5.00-6.00 sec 1.09 GBytes 9.38 Gbits/sec 0 1.61 MBytes
[ 5] 6.00-7.00 sec 1.09 GBytes 9.40 Gbits/sec 0 1.69 MBytes
[ 5] 7.00-8.00 sec 1.09 GBytes 9.38 Gbits/sec 0 1.77 MBytes
[ 5] 8.00-9.00 sec 1.09 GBytes 9.40 Gbits/sec 0 1.77 MBytes
[ 5] 9.00-10.00 sec 1.09 GBytes 9.38 Gbits/sec 28 1.35 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 10.9 GBytes 9.37 Gbits/sec 28 sender
[ 5] 0.00-10.04 sec 10.9 GBytes 9.33 Gbits/sec receiver
Direkt vom Proxmoxhost in Richtung ESX-VM sieht alles gut aus.
===========================================================
esxi: adminvm <-> pvehost1: ubuvm-pve1
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 172.20.2.105, port 35058
[ 5] local 172.20.2.48 port 5201 connected to 172.20.2.105 port 35074
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 902 MBytes 7.56 Gbits/sec
[ 5] 1.00-2.00 sec 1.09 GBytes 9.35 Gbits/sec
[ 5] 2.00-3.00 sec 1.06 GBytes 9.07 Gbits/sec
[ 5] 3.00-4.00 sec 1.09 GBytes 9.38 Gbits/sec
[ 5] 4.00-5.00 sec 1.09 GBytes 9.38 Gbits/sec
[ 5] 5.00-6.00 sec 1013 MBytes 8.50 Gbits/sec
[ 5] 6.00-7.00 sec 1.01 GBytes 8.68 Gbits/sec
[ 5] 7.00-8.00 sec 1017 MBytes 8.53 Gbits/sec
[ 5] 8.00-9.00 sec 1.09 GBytes 9.38 Gbits/sec
[ 5] 9.00-10.00 sec 1.09 GBytes 9.37 Gbits/sec
[ 5] 10.00-10.04 sec 49.1 MBytes 9.38 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.04 sec 10.4 GBytes 8.92 Gbits/sec receiver
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
root@adminvm:~# iperf3 -c 172.20.2.105
Connecting to host 172.20.2.105, port 5201
[ 5] local 172.20.2.48 port 34142 connected to 172.20.2.105 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 867 MBytes 7.27 Gbits/sec 306 1.21 MBytes
[ 5] 1.00-2.00 sec 879 MBytes 7.37 Gbits/sec 57 1.16 MBytes
[ 5] 2.00-3.00 sec 765 MBytes 6.42 Gbits/sec 11 1.10 MBytes
[ 5] 3.00-4.00 sec 776 MBytes 6.51 Gbits/sec 0 1.55 MBytes
[ 5] 4.00-5.00 sec 678 MBytes 5.68 Gbits/sec 170 1.28 MBytes
[ 5] 5.00-6.00 sec 758 MBytes 6.35 Gbits/sec 57 1.17 MBytes
[ 5] 6.00-7.00 sec 775 MBytes 6.50 Gbits/sec 16 1.12 MBytes
[ 5] 7.00-8.00 sec 756 MBytes 6.34 Gbits/sec 0 1.54 MBytes
[ 5] 8.00-9.00 sec 805 MBytes 6.75 Gbits/sec 78 1.08 MBytes
[ 5] 9.00-10.00 sec 756 MBytes 6.34 Gbits/sec 0 1.51 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 7.63 GBytes 6.56 Gbits/sec 695 sender
[ 5] 0.00-10.04 sec 7.63 GBytes 6.53 Gbits/sec receiver
In Richtung pve-vm schwächelt die Netzwerkperformance.
===========================================================
esxi: adminvm <-> pvehost1: win10vm2
root@adminvm:~# iperf3 -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 172.20.2.100, port 49917
[ 5] local 172.20.2.48 port 5201 connected to 172.20.2.100 port 49918
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 681 MBytes 5.71 Gbits/sec
[ 5] 1.00-2.00 sec 1.10 GBytes 9.47 Gbits/sec
[ 5] 2.00-3.00 sec 1.10 GBytes 9.47 Gbits/sec
[ 5] 3.00-4.00 sec 1.10 GBytes 9.47 Gbits/sec
[ 5] 4.00-5.00 sec 1.10 GBytes 9.47 Gbits/sec
[ 5] 5.00-6.00 sec 1.10 GBytes 9.47 Gbits/sec
[ 5] 6.00-7.00 sec 1.10 GBytes 9.47 Gbits/sec
[ 5] 7.00-8.00 sec 1.10 GBytes 9.47 Gbits/sec
[ 5] 8.00-9.00 sec 1.10 GBytes 9.47 Gbits/sec
[ 5] 9.00-10.00 sec 1.10 GBytes 9.47 Gbits/sec
[ 5] 10.00-10.05 sec 61.5 MBytes 9.45 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.05 sec 10.6 GBytes 9.09 Gbits/sec receiver
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
root@adminvm:~# iperf3 -c 172.20.2.100
Connecting to host 172.20.2.100, port 5201
[ 5] local 172.20.2.48 port 39144 connected to 172.20.2.100 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 342 MBytes 2.87 Gbits/sec 0 2.11 MBytes
[ 5] 1.00-2.00 sec 500 MBytes 4.19 Gbits/sec 0 2.11 MBytes
[ 5] 2.00-3.00 sec 555 MBytes 4.66 Gbits/sec 0 2.11 MBytes
[ 5] 3.00-4.00 sec 570 MBytes 4.78 Gbits/sec 0 2.11 MBytes
[ 5] 4.00-5.00 sec 570 MBytes 4.78 Gbits/sec 0 2.11 MBytes
[ 5] 5.00-6.00 sec 566 MBytes 4.75 Gbits/sec 0 2.11 MBytes
[ 5] 6.00-7.00 sec 571 MBytes 4.79 Gbits/sec 0 2.11 MBytes
[ 5] 7.00-8.00 sec 569 MBytes 4.77 Gbits/sec 0 2.11 MBytes
[ 5] 8.00-9.00 sec 552 MBytes 4.63 Gbits/sec 0 2.11 MBytes
[ 5] 9.00-10.00 sec 522 MBytes 4.38 Gbits/sec 0 2.11 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 5.19 GBytes 4.46 Gbits/sec 0 sender
[ 5] 0.00-10.03 sec 5.19 GBytes 4.45 Gbits/sec receiver
In Richtung pve-vm schwächelt die Netzwerkperformance auch bei Windows-VM.
-----------------------------------------------------------
-----------------------------------------------------------
Nächste Idee war dann, nochmal auf die näher auf den Adapter zu schauen (Firmware, Konfiguration etc), aber ich kriege die Tools von Broadcom (bnxtnvm, niccli) unter Proxmox nicht installiert. Proxmox wird leider auch nicht direkt unterstützt.
Hardware Infos:
Code:
root@pvehost1:~# lspci
45:00.0 Ethernet controller: Broadcom Inc. and subsidiaries BCM57416 NetXtreme-E Dual-Media 10G RDMA Ethernet Controller (rev 01)
45:00.1 Ethernet controller: Broadcom Inc. and subsidiaries BCM57416 NetXtreme-E Dual-Media 10G RDMA Ethernet Controller (rev 01)
root@pvehost1:~# find /sys | grep drivers.*45:00
/sys/bus/pci/drivers/bnxt_en/0000:45:00.1
/sys/bus/pci/drivers/bnxt_en/0000:45:00.0
--------------------------------------------------------------------------------------------
root@pvehost1:~# lspci -v
45:00.0 Ethernet controller: Broadcom Inc. and subsidiaries BCM57416 NetXtreme-E Dual-Media 10G RDMA Ethernet Controller (rev 01)
DeviceName: Broadcom 10G Ethernet #1
Subsystem: Super Micro Computer Inc BCM57416 NetXtreme-E Dual-Media 10G RDMA Ethernet Controller
Flags: bus master, fast devsel, latency 0, IRQ 44, IOMMU group 32
Memory at 28080f10000 (64-bit, prefetchable) [size=64K]
Memory at 28080e00000 (64-bit, prefetchable) [size=1M]
Memory at 28080f22000 (64-bit, prefetchable) [size=8K]
Expansion ROM at b1880000 [disabled] [size=512K]
Capabilities: [48] Power Management version 3
Capabilities: [50] Vital Product Data
Capabilities: [58] MSI: Enable- Count=1/8 Maskable- 64bit+
Capabilities: [a0] MSI-X: Enable+ Count=74 Masked-
Capabilities: [ac] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [13c] Device Serial Number 3c-ec-ef-ff-fe-9d-ac-90
Capabilities: [150] Power Budgeting <?>
Capabilities: [160] Virtual Channel
Capabilities: [180] Vendor Specific Information: ID=0000 Rev=0 Len=020 <?>
Capabilities: [1b0] Latency Tolerance Reporting
Capabilities: [1b8] Alternative Routing-ID Interpretation (ARI)
Capabilities: [230] Transaction Processing Hints
Capabilities: [300] Secondary PCI Express
Capabilities: [200] Precision Time Measurement
Kernel driver in use: bnxt_en
Kernel modules: bnxt_en
45:00.1 Ethernet controller: Broadcom Inc. and subsidiaries BCM57416 NetXtreme-E Dual-Media 10G RDMA Ethernet Controller (rev 01)
DeviceName: Broadcom 10G Ethernet #2
Subsystem: Super Micro Computer Inc BCM57416 NetXtreme-E Dual-Media 10G RDMA Ethernet Controller
Flags: bus master, fast devsel, latency 0, IRQ 24, IOMMU group 32
Memory at 28080f00000 (64-bit, prefetchable) [size=64K]
Memory at 28080d00000 (64-bit, prefetchable) [size=1M]
Memory at 28080f20000 (64-bit, prefetchable) [size=8K]
Expansion ROM at b1800000 [disabled] [size=512K]
Capabilities: [48] Power Management version 3
Capabilities: [50] Vital Product Data
Capabilities: [58] MSI: Enable- Count=1/8 Maskable- 64bit+
Capabilities: [a0] MSI-X: Enable+ Count=74 Masked-
Capabilities: [ac] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [13c] Device Serial Number 3c-ec-ef-ff-fe-9d-ac-90
Capabilities: [150] Power Budgeting <?>
Capabilities: [180] Vendor Specific Information: ID=0000 Rev=0 Len=020 <?>
Capabilities: [1b8] Alternative Routing-ID Interpretation (ARI)
Capabilities: [230] Transaction Processing Hints
Kernel driver in use: bnxt_en
Kernel modules: bnxt_en
--------------------------------------------------------------------------------------------
root@pvehost1:~# dmesg | grep bnxt
[ 2.108240] bnxt_en 0000:45:00.0 eth0: Broadcom BCM57416 NetXtreme-E 10GBase-T Ethernet found at mem 28080f10000, node addr 3c:ec:ef:9d:ac:90
[ 2.108265] bnxt_en 0000:45:00.0: 31.504 Gb/s available PCIe bandwidth, limited by 8.0 GT/s PCIe x4 link at 0000:40:03.6 (capable of 63.008 Gb/s with 8.0 GT/s PCIe x8 link)
[ 2.125564] bnxt_en 0000:45:00.1 eth1: Broadcom BCM57416 NetXtreme-E 10GBase-T Ethernet found at mem 28080f00000, node addr 3c:ec:ef:9d:ac:91
[ 2.125585] bnxt_en 0000:45:00.1: 31.504 Gb/s available PCIe bandwidth, limited by 8.0 GT/s PCIe x4 link at 0000:40:03.6 (capable of 63.008 Gb/s with 8.0 GT/s PCIe x8 link)
[ 2.713007] bnxt_en 0000:45:00.0 eno1np0: renamed from eth0
[ 2.812867] bnxt_en 0000:45:00.1 eno2np1: renamed from eth1
[ 15.759965] bnxt_en 0000:45:00.0 eno1np0: NIC Link is Up, 10000 Mbps full duplex, Flow control: none
[ 15.760705] bnxt_en 0000:45:00.0 eno1np0: EEE is not active
[ 15.761220] bnxt_en 0000:45:00.0 eno1np0: FEC autoneg off encoding: None
[ 15.929662] bnxt_en 0000:45:00.0 eno1np0: entered allmulticast mode
[ 15.931043] bnxt_en 0000:45:00.0 eno1np0: entered promiscuous mode
--------------------------------------------------------------------------------------------
Offloading Konfiguration:
Code:
root@pvehost1:~# ethtool -k eno1np0
Features for eno1np0:
rx-checksumming: on
tx-checksumming: on
tx-checksum-ipv4: on
tx-checksum-ip-generic: off [fixed]
tx-checksum-ipv6: on
tx-checksum-fcoe-crc: off [fixed]
tx-checksum-sctp: off [fixed]
scatter-gather: on
tx-scatter-gather: on
tx-scatter-gather-fraglist: off [fixed]
tcp-segmentation-offload: on
tx-tcp-segmentation: on
tx-tcp-ecn-segmentation: off [fixed]
tx-tcp-mangleid-segmentation: off
tx-tcp6-segmentation: on
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: off
rx-vlan-offload: on
tx-vlan-offload: on
ntuple-filters: on
receive-hashing: on
highdma: on [fixed]
rx-vlan-filter: off [fixed]
vlan-challenged: off [fixed]
tx-lockless: off [fixed]
netns-local: off [fixed]
tx-gso-robust: off [fixed]
tx-fcoe-segmentation: off [fixed]
tx-gre-segmentation: on
tx-gre-csum-segmentation: on
tx-ipxip4-segmentation: on
tx-ipxip6-segmentation: off [fixed]
tx-udp_tnl-segmentation: on
tx-udp_tnl-csum-segmentation: on
tx-gso-partial: on
tx-tunnel-remcsum-segmentation: off [fixed]
tx-sctp-segmentation: off [fixed]
tx-esp-segmentation: off [fixed]
tx-udp-segmentation: off [fixed]
tx-gso-list: off [fixed]
fcoe-mtu: off [fixed]
tx-nocache-copy: off
loopback: off [fixed]
rx-fcs: off [fixed]
rx-all: off [fixed]
tx-vlan-stag-hw-insert: on
rx-vlan-stag-hw-parse: on
rx-vlan-stag-filter: off [fixed]
l2-fwd-offload: off [fixed]
hw-tc-offload: on
esp-hw-offload: off [fixed]
esp-tx-csum-hw-offload: off [fixed]
rx-udp_tunnel-port-offload: on
tls-hw-tx-offload: off [fixed]
tls-hw-rx-offload: off [fixed]
rx-gro-hw: on
tls-hw-record: off [fixed]
rx-gro-list: off
macsec-hw-offload: off [fixed]
rx-udp-gro-forwarding: off
hsr-tag-ins-offload: off [fixed]
hsr-tag-rm-offload: off [fixed]
hsr-fwd-offload: off [fixed]
hsr-dup-offload: off [fixed]
Wie ist das bei euch? Schnurrt der Proxmox? Ansatzpunkte?