iperf3 în multi-threading pentru a profita la maximum de 10GbE: un ghid complet

Ultima actualizare: 08/10/2025
Autorul: Isaac
  • Actualizați la iperf3 ≥ 3.16 și utilizați 4–8 thread-uri (-P) pentru a satura 10GbE.
  • Verificați RSS/descărcările și dacă placa de rețea nu este limitată de PCIe degradat.
  • Verificați bidirecționalitatea (-d) și ajustați fereastra/copierea zero dacă CPU-ul este limitat.

Testarea cu multithreading iperf3 pentru 10GbE

În rețelele de 10GbE, din ce în ce mai frecvente în sistemele casnice și profesionale, blocajul se mută adesea de la placa de rețea la procesor . Prin urmare, ajustarea iperf3 pentru a valorifica mai multe thread-uri poate face diferența între atingerea a 6-8 Gbps și apropierea de saturația legăturilor. Acest ghid vă va arăta, cu exemple din lumea reală, cum să profitați de multithreading, de ce versiuni aveți nevoie și ce capcane hardware trebuie evitate pentru a preveni pierderea performanței.

Dincolo de simpla executare a unei comenzi, succesul depinde de versiunea iperf3, configurația sistemului, driverele NIC și chiar de lățimea legăturii PCIe . Veți vedea exemple practice (de la un mini PC cu un Intel N100 la un server cu TrueNAS și Proxmox), parametri cheie iperf3, cele mai bune practici pentru interpretarea rezultatelor și o listă de verificare pentru diagnosticarea momentelor în care contorul se blochează.

Ce este iperf3 și de ce este important în 10GbE?

iperf3 este un instrument open-source pentru măsurarea lățimii de bandă între două computere folosind TCP, UDP sau SCTP. Este multi-platformă ( Windows , Linux , macOS, BSD, printre altele) și codul său a fost rescris de la zero în comparație cu iperf2 pentru a-l simplifica, a adăuga ieșire JSON și a crea un framework modular care este mai ușor de integrat în alte programe.

Spre deosebire de alte utilitare, acesta vă permite să ajustați dimensiunea ferestrei TCP, să definiți cantitățile de date, să selectați protocolul și să generați mai multe conexiuni simultane . Pentru UDP, măsoară jitter-ul și pierderea semnalului, acceptă multicast și poate seta debitul țintă; pentru TCP, oferă opțiuni precum zero-copy, controlul congestiei și ieșire detaliată pe interval.

Pe legături de 10 Gbps sau mai mari, o singură conexiune TCP poate să nu fie suficientă pentru a satura legătura; distribuirea încărcării pe mai multe fluxuri și, începând cu iperf3 3.16, utilizarea mai ușoară a multithreading-ului ajută la umplerea conductei atunci când stiva CPU sau a rețelei este limitată.

Versiuni: cerințe minime și compatibilitate

În primul rând, verificați versiunea la ambele capete cu iperf3 -v. Începând cu versiunea 3.16, iperf3 simplifică multithreading-ul, reducând nevoia de Trucuri y comenzi funcții suplimentare care erau comune în mediile de 40 Gbps și peste. Dacă distribuția dvs. este în urmă (de obicei în hipervizori sau dispozitive), compilarea celei mai recente versiuni este de obicei cea mai rapidă cale; și verificați Tipuri de rețea în Hyper-V, VirtualBox și VMware a mediului dumneavoastră.

Un exemplu din lumea reală: într-un mediu cu OpenWrt/QWRT și Proxmox VE 8.3, OpenWrt avea deja o versiune recentă, dar Proxmox era învechit . Această problemă a fost rezolvată prin compilarea iperf 3.18 din sursă pe gazda Proxmox, iar de atunci, multithreading-ul a fost activat normal.

Saturarea a 10GbE cu fluxuri multiple în iperf3

Pregătirea mediului 10GbE: CPU, NIC, drivere și PCIe

Pentru a atinge viteze maxime apropiate de 9.8–9.9 Gbps, cablurile Cat6A și un switch 10G nu sunt suficiente . Trebuie să analizați mai departe: versiunea driverului, RSS (Receive Side Scaling), coalescing-ul întreruperilor, descărcarea datelor (TSO/GSO/GRO/LRO) și, mai presus de toate, legătura PCIe de pe placă.

Pe Windows 10/11, în special cu plăci de rețea 10G precum ASUS XG-C100C, actualizați driverul, activați RSS și verificați dacă SMB Multichannel este activ și auditați conexiunea la rețea în Windows . Pentru transferurile de fișiere cu un NAS (de exemplu, QNAP cu QuTS Hero), viteza va depinde și de performanța stocării și de procesorul NAS-ului; este normal să vedeți în jur de 6–8 Gbps dacă configurația RAID sau ZFS nu este robustă, în timp ce iperf3 (memory-to-memory) se poate apropia de 10GbE.

  Cele mai frecvente erori în formulele Excel și cum să le remediați

Pe Linux și BSD, Verificați dacă placa negociază lățimea PCIe corectăUn caz tipic: un client a rămas blocat la ~3.5 Gbps, în ciuda faptului că avea 10 GbE, deoarece slotul rula degradat la x1 la 5 GT/s. Comanda lspci -vv a afișat „LnkSta: Viteză ​​5GT/s, Lățime x1 (degradată)”. După ajustarea BIOS-ul Pentru a forța portul la x16, viteza a crescut la ~9.84 Gbps.

Modul multithreading în iperf3: comenzi esențiale

Modelul de testare de bază este simplu: lansează serverul cu iperf3 -s la un capăt și rulați clientul de la celălalt. De aici, adăugați paralelismul:

  • Fluxuri TCP multiple: iperf3 -c IP_SERVIDOR -P 4 generează 4 conexiuni paralele. Ajustați -P la procesorul/placa de rețea; pe 10GbE, de obicei 4–8 sunt suficiente.
  • Bidirecțional simultan: iperf3 -c IP_SERVIDOR -P 4 -d măsoară simultan încărcarea și descărcarea, util pentru validarea full duplex.
  • Direcția inversă (trafic de la server la client): -R.
  • Durată: -t 60 pentru teste de 60 s; excluderea începe cu -O 3 pentru a evita pornirea lentă a TCP.
  • Zero-copie: -Z reduce încărcarea procesorului pe Linux.
  • Afinitate CPU: -A setează afinitatea (utilă pentru distribuirea thread-urilor pe diferite nuclee).
  • Legarea la interfață: -B 10.0.0.2 alegeți explicit adresa IP/IF de ieșire (vezi Cum se listează interfețele de rețea în CMD).

Dacă lucrați cu UDP, controlează fluxul cu -b și verificați dacă există pierderi/jitter; deși pentru saturarea a 10GbE și măsurarea stivei sistemului, TCP este de obicei punctul de plecare.

Studiu de caz 1: Mini PC Intel N100 cu două porturi de 10 GbE

Scenariu: Două servere iKOOCORE R2 Max (unul fără ventilator cu OpenWrt/QWRT ca server și celălalt cu Proxmox VE ca client), ambele cu interfață duală de 10GbE și un procesor Intel N100 quad-core . Prima măsurătoare a arătat o viteză de încărcare de ~9.41 Gbps, dar viteza de descărcare a fost de doar ~8.6 Gbps, iar testul bidirecțional a avut performanțe și mai slabe.

HTOP a prezentat piesa: un singur nucleu la 100% în timp ce restul erau inactiveDeși utilizarea totală a procesorului a fost de aproximativ 30%, un singur fir de execuție saturat limita debitul efectiv. Pentru a rezolva această problemă, serverul a fost pornit ca de obicei (iperf3 -s) și în client a fost adăugat -P 4 pentru a deschide 4 fluxuri.

Ieșirea, cu intervale de 10 secunde și patru fire de execuție, este mai detaliată, dar Important este că cifra țintă a fost atinsă: ~9.41 GbpsÎn testul full duplex cu -d, sumele au fost în medie de ~9.40 Gbps în ambele sensuri timp de un minut, confirmând că procesorul distribuia deja sarcina pe mai multe thread-uri, iar placa de rețea satura legătura.

Ca o notă practică: dacă versiunea clientului este veche (cum a fost cazul cu Proxmox), compilarea iperf 3.18 a rezolvat decalajul de performanță și compatibilitatea opțiunilor recente pe partea care avea cea mai mare nevoie de el.

Studiu de caz 2: TrueNAS + Proxmox și blocajul PCIe

Configurație: Server cu TrueNAS-13.0-U6 (FreeBSD 13.1) pe plăci de bază Supermicro x8/x9, procesoare duale Intel Westmere E5645 și plăci de rețea Chelsio T420-CR ; client cu Proxmox VE 8.1.3 (Debian 12, kernel 6.5.11), procesoare duale E5-2420 v2 și plăci de rețea Chelsio T440-CR . Cablare directă prin DAC twinax între gazde.

Primul test s-a stabilit la o medie de ~3.55 Gbps, cu zero retransmisii și o fereastră congestionată stabilă. CPU-ul abia dacă a transpirat: ~13–20% utilizare per iperf3 . Indiciul decisiv a venit odată cu privirea stării legăturii PCIe: „LnkSta: Viteză 5GT/s, Lățime x1 (degradată)”. Cu alte cuvinte, placa de rețea 10G era legată de o bandă PCIe x1 la 5 GT/s, limitând debitul.

  Cum să configurezi un VPN de încredere pe router cu OpenVPN

După ce am verificat BIOS-ul, am găsit o opțiune critică pe Supermicro X9DBU-3F: Advanced → Chipset Configuration → North Bridge → Integrated IO Configuration → IIO 1 IOU3 – PCIe Port . Schimbarea acesteia de la „Auto” la „x16” a restabilit lățimea de bandă și viteza corecte. Rezultat: iperf3 a înregistrat o conexiune Cwnd susținută de ~9.84 Gbps, cu zero retransmisii și o conexiune Cwnd stabilă.

De asemenea, deschiderea a doi clienți pe două porturi diferite (-p 5000 y -p 5001) Au fost atinse ~19.58 Gbps în total. În acel scenariu cu două porturi, două thread-uri ale Westmere funcționau la 70–80%, iar Ivy Bridge la 30–40%., în concordanță cu încărcarea multi-threaded prin împingerea traficului prin două interfețe 10G simultan.

Interpretarea rezultatelor: ce trebuie căutat și cum se ajustează

În rezultatul iperf3, uitați-vă la rata medie finală și la liniile de interval (implicit este 1 s; unele exemple folosesc 10 s). Dacă înmulțiți MBytes transferați cu 8 și împărțiți la intervalul de timp , numărul ar trebui să corespundă cu Gbits/s raportat.

Dacă vedeți un singur fir saturat și totalul nu crește, creșteri -P treptat (4, 6, 8) până când debitul nu mai crește. Dacă crește ușor, dar nu atinge 9.8–9.9 Gbps, verificați descărcările și RSS. Când există pierderi sau retransmisii în TCP, evaluați -w (fereastră), -O (săriți peste cizmă) și calitatea legăturii fizice.

În două sensuri (-d), uită-te la sume și la minute pentru a valida faptul că ambele direcții sunt apropiate de maximul teoretic. Diferențele mari dintre vitezele de încărcare și descărcare indică de obicei afinitate, IRQ-uri sau RSS distribuit prost.

Când nu este vorba de procesor: diagnostic cronic de „6 Gbps”

Dacă ești blocat la ~6–7 Gbps (foarte tipic în configurațiile noi), exclude aceste puncte unul câte unul :

  • Versiune vecheClienții 3.7 cu servere 3.16 funcționează, dar actualizați ambele versiuni pentru a beneficia de îmbunătățiri și corecții pentru multithreading.
  • PCIe degradat: verificați lățimea și viteza cu lspci -vv (Linux) sau instrumente de la furnizor; un x1 la 5 GT/s limitează consumul plăcii de rețea 10G.
  • RSS dezactivatFără partajarea întreruperilor, un singur nucleu rămâne la 100%. Pe Windows, activați-l în driver; pe Linux, verificați ethtool -l și RPS/RFS.
  • Descărcări și coalescențăCoalescerea TSO/GSO/GRO/LRO și a întreruperilor reduc încărcarea CPU; ajustați cu ethtool.
  • Rame MTU/JumboNu crește întotdeauna debitul, dar ajută cu procesoare slabe. Activați-l la ambele capete și pe switch dacă îl suportă.
  • DepozitareÎn testele NAS, blocajul poate fi RAID/ZFS; folosiți iperf3 pentru a izola rețeaua (memorie la memorie) și nu discul.
  • IMM-uri și canale multiplePe Windows, funcția SMB Multichannel accelerează backup-urile; dacă nu este activată, fișierele vor rula mai lent chiar dacă iperf3 are o viteză de 9–10 Gbps.

De asemenea, este o idee bună să ajustați bufferele de sistem în Linux atunci când căutați vârfuri susținute: sysctl net.core.rmem_max y net.core.wmem_max Vitezele mari previn blocajele la nivelul socketurilor; acestea nu sunt obligatorii pentru 10GbE pe rețelele LAN cu latență redusă, dar sunt utile în scenarii solicitante.

Instalare rapidă pe Windows, Linux și macOS

Pe Windows, descărcați fișierele binare de încredere, dezarhivați-le și rulați-le de pe CMD o PowerShell; Dacă Windows nu detectează placa de rețea, consultați ghidul de soluții. Deschideți o consolă, accesați folderul și executați iperf3.exe -s o iperf3.exe -c IPAsigurați-vă că permiteți portul 5201/TCP pe firewall dacă testați pe mai multe subrețele.

Pe Linux/macOS, instalarea este de obicei o comandăpe Debian/Ubuntu sudo apt-get install iperf3, pe RHEL/CentOS sudo yum install iperf3, pe macOS cu Homebrew brew install iperf3Dacă sistemul dumneavoastră este învechit, compilarea din codul sursă vă oferă cea mai recentă versiune.

  Gstatic | Ce este, este periculos? Erori și soluții

Parametri utili iperf3 (client și server)

Pentru a controla sesiunea în detaliu, aceste steaguri vă economisesc timp :

  • General: -p port, --cport port client (>=3.1), -f format (k/K/m/M/g/G), -i interval, -F Arhiva, -B lega, -V verbos, -J JSON, --logfile (>=3.1), -h Ajutor, -v versiune.
  • server de: -s Server, -D diavol, -I Fișier PID.
  • Client: -c IP, --sctp SCTP, -u UDP, -b lățime de bandă, -t vreme, -n octeți, -k pachete, -l lungimea tamponului, -P fire, -R verso, -w Fereastra TCP, -M manuscrise, -N TCP fără întârziere, -4/-6 IPv4/IPv6, -S TUSE, -L etichetă IPv6, -Z copie zero, -O sări peste bootare, -T Titlu, -C algoritmul de congestie.

amintiți-vă că -P se aplică prin fluxDacă repari -b Dacă UDP sau sistemul impun limite pentru socketuri, fiecare fir de execuție ar putea atinge propriul său plafon; experimentați cu mai puține fire de execuție, dar mai bine reglate.

Impact și limitări: Ce măsoară iperf3 (și ce nu face)

iperf3 este excelent pentru testarea la stres a rețelei, dar poate inunda rețeaua locală dacă este rulată într-un mediu de producție . Evitați testele lungi în timpul orelor de vârf și coordonați-vă cu alte echipe dacă partajați legături trunk. Modelul său de trafic nu reproduce întotdeauna încărcările reale ale aplicațiilor.

Printre dezavantajele sale se numără lipsa unei interfețe grafice încorporate, necesitatea modificării parametrilor și nu salvează automat datele istorice. Deși acceptă multe protocoale, există scenarii (de exemplu, anumite funcționalități IPv6 sau multiplexare specifică) în care alte instrumente ar putea fi mai potrivite.

Alternative atunci când ai nevoie de altceva

Dacă iperf3 nu se potrivește nevoilor tale, aceste opțiuni te-ar putea scuti de probleme :

  • hiperf2: versiune veche, dar utilă pentru compatibilități vechi; există o interfață grafică clasică (jperf).
  • netperffoarte puternic pentru TCP/UDP și latență, mai tehnic de gestionat.
  • nuttcpUșor pentru măsurarea lățimii de bandă/pierderii fără prea multe complicații.
  • bwping/bwping6ICMP pentru estimarea lățimii de bandă atunci când nu poți deschide TCP/UDP (mai puțin precis).
  • CLI Speedtest / CLI Fast.comPentru internet public; nu înlocuiți iperf3 pe rețelele LAN.

Dacă obiectivul tău este să profiți la maximum de 10GbE, începe cu multithreading iperf3: verifică versiunea ≥3.16, activează 4–8 thread-uri, verifică RSS și legătura PCIe și examinează driverele/descărcările . Cu aceste cerințe minime, sistemele modeste precum un Intel N100 au saturat 10GbE (9.40–9.85 Gbps), iar configurațiile mai vechi au trecut de la 3.5 la 9.8 Gbps după corectarea unei simple probleme x1 PCIe. Cheia este să distribui volumul de lucru între nuclee, să eviți blocajele ascunse și să citești valorile adecvate pentru a ști când să ajustezi fiecare parametru.

Explicația tipului de rețea VirtualBox
Articol asociat:
VirtualBox: Ghid complet pentru tipurile, utilizările și trucurile de rețea