FreeBSD 14.2 tcp throughput

David Pasek david.pasek at gmail.com
Sun Apr 13 18:49:40 CEST 2025


Ahoj.

Potreboval jsem mezi data centrama otestovat propustnost 10 Gb linky,
takze jsem potreboval nejaky stroje s iperfem. Sahnul jsem po FreeBSD
jelikoz je to pres 27 let muj nejblinenejsi serverovy operacni system.

V nasich data centerech je vsechno virtualizovane nad VMware vSphere,
takze testovaci servery jsou VMka a pouzity sitovy driver pro VMXNET3
sitovky je vmx.

FreeBSD je na VMwaru podporovano.

Je jasne, ze pro sitovy prenos je potreba CPU cykly. Obecne je to
polde ruznych mych testu nekde mezi 0.25 Hz a 1 Hz na 1 bit/s, ale
samozrejme je to zavisle na ruznych typech procesoru, sitoveho paternu
a dalsich faktorech. Zjistil jsem, ze defaultni instalace FreeBSD
potrebuje 4 vCPU, aby to propustilo 8,5 Gb/s a 8 vCPU, aby to dalo
19,5 Gb/s. Dulezite je to defaultni instalace. Detailni popis
testovani je zde ...
http://vcdx200.uw.cz/2025/03/network-benchmark-iperf-of-10gb-data.html

Probiral jsem to s kolegou sitarem/linuxarem a ten mi tvrdil, ze
Debian zvladne 10 Gb/s i s jednim vCPU.

Nevahal jsem tedy a otestoval to viz.
http://vcdx200.uw.cz/2025/04/network-throughput-and-cpu-efficiency.html

Zakladni testy delam mezi dvema VM-kama na jenom Hypervisoru, aby me
nelimitovala fyzicka sit. Az kdyz to dava rozumny vykon bez fyzicke
site, tak to pak dava smysl testovat pres fyzickou 25 Gb/100 Gb sit,
kterou mame v data centru.

Takze pro jednoduchost porovnani se staci zamerit na propustnost mezi
dvouma virtualama na jednom hypervizoru.

Zjistil jsem, ze FreeBSD vmx interface defaultne nepouziva LRO (Large
Receive Offload) a s jednim CPU dava pouhych 1,34 Gb/s.

V Debianu sitovy interface vmxnet3 sitovky pouziva LRO by default a s
jednim vCPU to je schopne dat 9,5 Gb/s.

To me vlastne dovedlo ke zjisteni, ze ve FreeBSD se defaulne nepouziva
LRO a po enablovani LRO na vmx interfacu jsem byl schopen dosahnut
7,29 Gb/s, coz je vyrazne lepsi nez 1,34 Gb/s, ale porad mene nez 9,5
Gb/s na Debianu. S MTU 9000 dalo FreeBSD 8.9 Gb/s, coz uz je dost
blizko 9,5 Gb/s na Debianu.

Vyse uvedene testy, jsem delal na asi 9 let starych Cisco UCS
serverech s CPU Intel Xeon CPU E5-2680 v4 a tak jsem si to jeste
rozchodil a testuju to na domacim labu kde mam taky asi 9 let stare
Intel NUC consumer PC-cka s CPU Intel Core i3-6100U. Zajimave je, ze
na consumer PC-ckach dosahuju vyssich sitovych propustnosti nez na
serverech, ale to plati jak pro FreeBSD, tak pro Debian, takze to je
jen zajimavost.

Vysledky z domaciho labu:

FreeBSD vmx interface bez LRO s jednim CPU (iperf -P1) dava 2,4 Gb/s a
CPU je vyuzito na cca 95% jak na serveru, tak na klientovi.
FreeBSD vmx interface bez LRO s jednim CPU (iperf -P2) dava 2,4 Gb/s a
CPU je vyuzito na cca 95% jak na serveru, tak na klientovi.
FreeBSD vmx interface bez LRO s jednim CPU (iperf -P3) dava 2,4 Gb/s a
CPU je vyuzito na cca 95% jak na serveru, tak na klientovi.

FreeBSD vmx interface s LRO s jednim CPU (iperf -P1) dava 8,6 Gb/s a
CPU je vyuzito na cca 50% na serveru a 25% na klientovi.
FreeBSD vmx interface s LRO s jednim CPU (iperf -P2) dava 12,4 Gb/s a
CPU je vyuzito na cca 90% na serveru a 40% na klientovi.
FreeBSD vmx interface s LRO s jednim CPU (iperf -P3) dava 13,8 Gb/s a
CPU je vyuzito na cca 98% na serveru a 60% na klientovi.

FreeBSD vmx interface s LRO + MTU 9000 s jednim CPU (iperf -P1) dava
13,4 Gb/s a CPU je vyuzito na cca 70% na serveru a 40% na klientovi.
FreeBSD vmx interface s LRO + MTU 9000 s jednim CPU (iperf -P2) dava
15,2 Gb/s a CPU je vyuzito na cca 90% na serveru a 80% na klientovi.
FreeBSD vmx interface s LRO + MTU 9000 s jednim CPU (iperf -P3) dava
16,2 Gb/s a CPU je vyuzito na cca 95% na serveru a 85% na klientovi.

Debian vmx interface bez LRO s jednim CPU dava 14,8 Gb/s a CPU (iperf
-P1) je vyuzito na cca 99% na serveru a 80% na klientovi.
Debian vmx interface bez LRO s jednim CPU dava 14,8 Gb/s a CPU (iperf
-P2) je vyuzito na cca 99% na serveru a 80% na klientovi.
Debian vmx interface bez LRO s jednim CPU dava 14,8 Gb/s a CPU (iperf
-P3) je vyuzito na cca 99% na serveru a 80% na klientovi.

Debian vmx interface s LRO s jednim CPU dava 16,1 Gb/s a CPU (iperf
-P1) je vyuzito na cca 95% na serveru a 85% na klientovi.
Debian vmx interface s LRO s jednim CPU dava 16,1 Gb/s a CPU (iperf
-P2) je vyuzito na cca 95% na serveru a 85% na klientovi.
Debian vmx interface s LRO s jednim CPU dava 16,2 Gb/s a CPU (iperf
-P3) je vyuzito na cca 95% na serveru a 85% na klientovi.

Debian vmx interface s LRO + MTU 9000 s jednim CPU dava 17,5 Gb/s a
CPU (iperf -P1) je vyuzito na cca 95% na serveru a 80% na klientovi.
Debian vmx interface s LRO + MTU 9000 s jednim CPU dava 17,5 Gb/s a
CPU (iperf -P2) je vyuzito na cca 95% na serveru a 85% na klientovi.
Debian vmx interface s LRO + MTU 9000 s jednim CPU dava 17,5 Gb/s a
CPU (iperf -P3) je vyuzito na cca 95% na serveru a 85% na klientovi.

Kdyz bych to mel sesumarizovat, tak bych to popsal takto.

Debian s jednim vCPU dava propustnost mezi 14,8 a 17.5 Gb/s, kdy LRO,
ktere je v Debianu pouzito defaultne, pomuze o 8% a MTU 9000 o dalsich
8%.
Vice iperf paralelnich vlaken v jednotlivych testech vysi propustnosti nepomaha.

FreeBSD s jednim vCPU dava propustnost mezi 2,4 a 16,2 Gb/s, kdy LRO,
ktere neni pouzito defaultne, pomuze vyznamne.
Z 2,4 Gb/s na 8,6 Gb/s (3.5x) pri pouziti jednoho paralelniho vlakna (-P1).
Z 2,4 Gb/s na 12,4 Gb/s (5x) pri pouziti dvou paralelnich vlaken (-P2).
Z 2,4 Gb/s na 13,8 Gb/s (5.8x) pri pouziti trech paralelnich vlaken (-P3).

Dalsi zlepseni k LRO prinasi pouziti MTU 9000.
Z 8,6 Gb/s na 13,4 Gb/s (+46%) pri pouziti jednoho paralelniho vlakna (-P1).
Z 12,4 Gb/s na 15,2 Gb/s (+18%) pri pouziti dvou paralelnich vlaken (-P2).
Z 13,8 Gb/s na 16,2 Gb/s (+15%) pri pouziti trech paralelnich vlaken (-P3).

Na FreeBSD pomaha pouziti vice klientskych vlaken (-P2, -P3) ale jen v
pripadech, ze je pouzite LRO a MTU 9000.

Chtel jsem se zeptat co si o tom myslite, jestli nekdo provozujete
FreeBSD pro velke sitove toky a jestli mate na sitovych interfacech
nastavene LRO a jestli pouzivate Jumbo Frames (MTU 9000).

Dalsi dotaz je, jestli nekoho nenapada neco dalsiho co by se dalo na
FreeBSD vytunit, aby se zvysila sitova propustnost. Jeste me napada
enablovat RSS, ale to neni enabovane ani na Debianu ani na FreeBSD.

-dp-


More information about the Users-l mailing list