Im Testing eines Docker-Containers ist aufgefallen, dass die Netzwerkperformance innerhalb des Docker-Containers sehr langsam ist.
Es handelt sich hierbei um eine Anleitung zur Steigerung der Performance einer P2100G Broadcom Netzwerkkarte unter Linux - in unserem Fall Proxmox VE 8.2 mit Linux Kernel 6.8.
root@js-docker-01:/home/ansible# docker run -ti --rm curlimages/curl http://10.230.2.231:32768/test.file --output /dev/null % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 5 1024M 5 55.1M 0 0 1447k 0 0:12:04 0:00:39 0:11:25 1791k
Es wird eine Bandbreite von 1.8 MB/s erreicht, obwohl es sich hierbei um eine 100 Gbit/s Netzwerkkarte handelt. Bei anderen Broadcom Netzwerkkarten (10 Gbit/s oder 4x 25 Gbit/s) tritt dieses Problem nicht auf.
Es kann eine Anpassung am Hypervisor vorgenommen werden, welche dieses Problem behebt und die Performance auf ein normales Level erhöht.
root@hypervisor01:/# ethtool --offload enp1s0f0np0 generic-receive-offload off root@hypervisor01:/# ethtool --offload enp1s0f0np0 generic-receive-offload off
Deaktiviert man die beiden offloading-Features der Netzwerkkarte, erhöht sich die Performance innerhalb des Containers.
root@js-docker-01:/home/ansible# docker run -ti --rm curlimages/curl http://10.230.2.231:32768/test.file --output /dev/null % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 41 9.7G 41 4199M 0 0 640M 0 0:00:15 0:00:06 0:00:09 660M
Da ethtool-Anpassungen nicht persistent sind (also nicht reboot-fest), muss man eine Anpassung an der /etc/network/interface - Datei vornehmen. Hier ein Beispiel eines Bonds, bei dem die beiden betroffenen Ports mittels eine pre-ups' angepasst werden.
auto bond0 iface bond0 inet manual bond-slaves enp1s0f0np0 enp1s0f1np1 bond-miimon 100 bond-mode 802.3ad bond-xmit-hash-policy layer2+3 mtu 9000 pre-up /sbin/ethtool --offload enp1s0f0np0 generic-receive-offload off pre-up /sbin/ethtool --offload enp1s0f1np1 generic-receive-offload off #CEPH-05
Autor: Jonas Sterr Ich beschäftige mich mit den Themen Software Defined Storage, Proxmox Virtualisierung auf Basis von KVM, QEMU & Ceph im Produktmanagement der Thomas-Krenn.AG in Freyung. Proxmox ist meine absolute Leidenschaft und ich freue mich gerne über Kontaktanfragen und einen Austausch auf LinkedIn.
|