- Opgrader til iperf3 ≥ 3.16 og brug 4-8 tråde (-P) til at mætte 10 GbE.
- Kontrollér RSS/offloads, og at NIC'en ikke er begrænset af degraderet PCIe.
- Tjek bidirektionel (-d) og juster vindue/nul-kopi, hvis CPU'en er stram.
I 10GbE-netværk, som bliver stadig mere almindelige i hjemme- og professionelle systemer, flytter flaskehalsen sig ofte fra netværkskortet til CPU'en . Derfor kan justering af iperf3 til at udnytte flere tråde være forskellen mellem at opnå 6-8 Gbps og nærme sig linkmætning. Denne guide viser dig, med eksempler fra den virkelige verden, hvordan du udnytter multithreading, hvilke versioner du har brug for, og hvilke hardwarefælder du skal undgå for at forhindre tab af ydeevne.
Ud over blot at køre en kommando afhænger succes af iperf3-versionen, systemkonfigurationen, NIC- drivere og endda PCIe-linkbredden . Du vil se praktiske eksempler (fra en mini-pc med en Intel N100 til en server med TrueNAS og Proxmox), vigtige iperf3-parametre, bedste praksis til fortolkning af resultater og en diagnostisk tjekliste til, hvornår tælleren sidder fast.
Hvad er iperf3, og hvorfor er det vigtigt i 10GbE?
iperf3 er et open source-værktøj til måling af båndbredde mellem to computere ved hjælp af TCP, UDP eller SCTP. Det er cross-platform ( Windows , Linux , macOS, BSD, blandt andre), og dets kode blev omskrevet fra bunden i forhold til iperf2 for at forenkle det, tilføje JSON-output og skabe et modulært framework, der er lettere at integrere i andre programmer.
I modsætning til andre værktøjer giver det dig mulighed for at justere TCP-vinduesstørrelsen, definere datamængder, vælge protokol og generere flere samtidige forbindelser . For UDP måler det jitter og signaltab, understøtter multicast og kan indstille målgennemstrømningen; for TCP tilbyder det muligheder som nul-kopi, kontrol af overbelastning og detaljeret output efter interval.
På links på 10 Gbps eller højere er en enkelt TCP-forbindelse muligvis ikke nok til at mætte linket. Fordeling af belastningen på tværs af flere strømme og, siden iperf3 3.16, lettere udnyttelse af multithreading hjælper med at fylde pipen, når CPU- eller netværksstakken er begrænset.
Versioner: minimumskrav og kompatibilitet
Først og fremmest skal du kontrollere versionen i begge ender med iperf3 -v. Siden 3.16 forenkler iperf3 multithreading, hvilket reducerer behovet for Tricks y kommandoer yderligere funktioner, der var almindelige i 40 Gbps-miljøer og derover. Hvis din distribution er bagud (typisk i hypervisorer eller apparater), er det normalt den hurtigste måde at kompilere den nyeste version; og tjek Netværkstyper i Hyper-V, VirtualBox og VMware af dit miljø.
Et eksempel fra den virkelige verden: i et miljø med OpenWrt/QWRT og Proxmox VE 8.3 havde OpenWrt allerede en nyere version, men Proxmox var forældet . Dette blev løst ved at kompilere iperf 3.18 fra kildekoden på Proxmox-værten, og fra da af var multithreading normalt aktiveret.

Forberedelse af dit 10GbE-miljø: CPU, NIC, drivere og PCIe
For at opnå peakhastigheder tæt på 9.8-9.9 Gbps er Cat6A-kabler og en 10G-switch ikke nok . Man skal kigge længere nede i processen: driverversion, RSS (Receive Side Scaling), interrupt-koalescing, offloads (TSO/GSO/GRO/LRO) og frem for alt PCIe-linket på kortet.
På Windows 10/11, især med 10G NIC'er som ASUS XG-C100C, skal du opdatere driveren, aktivere RSS, kontrollere, om SMB Multichannel er aktiv , og overvåge netværksforbindelsen i Windows . For filoverførsler med en NAS (f.eks. QNAP med QuTS Hero) afhænger hastigheden også af lagringsydelsen og NAS'ens CPU; det er normalt at se omkring 6-8 Gbps, hvis RAID- eller ZFS-konfigurationen ikke er robust, mens iperf3 (hukommelse-til-hukommelse) kan nærme sig 10 GbE.
På Linux og BSD, Kontroller, at kortet forhandler den korrekte PCIe-breddeEt typisk tilfælde: en klient sad fast ved ~3.5 Gbps på trods af at have 10 GbE, fordi sloten kørte degraderet til x1 ved 5 GT/s. Kommandoen lspci -vv viste “LnkSta: Hastighed 5GT/s, Bredde x1 (forringet)”. Efter justering af BIOS For at tvinge porten til x16, steg hastigheden til ~9.84 Gbps.
Multithreading-tilstand i iperf3: vigtige kommandoer
Det grundlæggende testmønster er simpelt: start serveren med iperf3 -s i den ene ende og kør klienten fra den anden. Herfra tilføjes parallelisme:
- Flere TCP-strømme:
iperf3 -c IP_SERVIDOR -P 4genererer 4 parallelle forbindelser. Juster-Ptil din CPU/netværkskort; på 10 GbE er 4-8 normalt tilstrækkeligt. - Samtidig tovejs:
iperf3 -c IP_SERVIDOR -P 4 -dmåler upload og download på samme tid, nyttigt til validering af fuld duplex. - omvendt retning (server til klient trafik):
-R. - Varighed:
-t 60for 60 s tests; udelukkelse starter med-O 3for at undgå langsom TCP-start. - Nul-kopi:
-Zreducerer CPU-belastningen på Linux. - CPU-affinitet:
-Aindstiller affiniteten (nyttig til at fordele tråde på tværs af forskellige kerner). - Binding til grænseflade:
-B 10.0.0.2vælg eksplicit den udgående IP/IF (se Sådan viser du netværksgrænseflader i CMD).
Hvis du arbejder med UDP, styrer flowet med -b og kontroller for tab/jitter; selvom TCP normalt er udgangspunktet for at mætte 10 GbE og måle systemstakken.
Casestudie 1: Intel N100 mini-pc med to 10GbE-kort
Scenarie: To iKOOCORE R2 Max (en blæserløs med OpenWrt/QWRT som server og den anden med Proxmox VE som klient), begge med dobbelt 10GbE og en quad-core Intel N100 CPU . Den første måling viste en uploadhastighed på ~9.41 Gbps, men downloadhastigheden var kun ~8.6 Gbps, og den tovejstest klarede sig endnu dårligere.
HTOP viste nummeret: en enkelt kerne på 100%, mens resten var inaktiveSelvom det samlede CPU-forbrug var omkring 30%, begrænsede en enkelt mættet tråd den effektive gennemløbshastighed. For at løse dette blev serveren startet som normalt (iperf3 -s) og i klienten blev det tilføjet -P 4 at åbne 4 strømme.
Outputtet, med intervaller på 10 sekunder og fire tråde, er mere ordrigt, men Det vigtige er, at måltallet blev nået: ~9.41 GbpsI fuld duplex-testen med -d, gennemsnittet af hastighederne var ~9.40 Gbps i begge retninger i et minut, hvilket bekræftede, at CPU'en allerede fordelte belastningen på tværs af flere tråde, og at NIC'en mættede linket.
Som en praktisk bemærkning: hvis klientversionen er gammel (som det var tilfældet med Proxmox), løste kompilering af iperf 3.18 ydeevneforskellen og kompatibiliteten af nyere muligheder på den side, der havde mest brug for det.
Casestudie 2: TrueNAS + Proxmox og PCIe-flaskehalsen
Konfiguration: Server med TrueNAS-13.0-U6 (FreeBSD 13.1) på Supermicro x8/x9-kort, to Intel Westmere E5645 CPU'er og Chelsio T420-CR NIC'er ; klient med Proxmox VE 8.1.3 (Debian 12, kerne 6.5.11), to E5-2420 v2 CPU'er og Chelsio T440-CR NIC'er . Direkte ledningsføring via twinax DAC mellem værter.
Den første test endte på et gennemsnit på ~3.55 Gbps, med nul retransmissioner og et stabilt overbelastet vindue. CPU'en svedte næsten ikke: ~13-20% forbrug pr. iperf3 . Det afgørende fingerpeg kom, da man kiggede på PCIe-linkstatussen: "LnkSta: Hastighed 5GT/s, Bredde x1 (forringet)". Med andre ord var 10G NIC'en bundet til en PCIe x1-bane med 5 GT/s, hvilket begrænsede gennemløbshastigheden.
Efter at have undersøgt BIOS'en, blev en kritisk indstilling fundet på Supermicro X9DBU-3F: Avanceret → Chipsetkonfiguration → North Bridge → Integreret IO-konfiguration → IIO 1 IOU3 – PCIe-port . Ændring fra "Auto" til "x16" gendannede linket til korrekt båndbredde og hastighed. Resultat: iperf3 registrerede en vedvarende ~9.84 Gbps, med nul retransmissioner og en stabil Cwnd-forbindelse.
Åbning af to klienter mod to forskellige porte (-p 5000 y -p 5001) ~19.58 Gbps aggregeret blev nået. I det scenarie med to porte kørte to tråde af Westmere med 70-80% og Ivy Bridge med 30-40%., i overensstemmelse med multi-threaded loading ved at sende trafik gennem to 10G-grænseflader på én gang.
Fortolkning af resultater: hvad man skal kigge efter, og hvordan man justerer
I iperf3-outputtet skal du se på den endelige gennemsnitshastighed og intervallinjerne (standard er 1 s; nogle eksempler bruger 10 s). Hvis du ganger de overførte MBytes med 8 og dividerer med intervaltiden , skal tallet stemme overens med de rapporterede Gbits/s.
Hvis du ser en enkelt mættet tråd, og det samlede antal ikke stiger, stiger -P gradvist (4, 6, 8) indtil gennemløbshastigheden holder op med at vokse. Hvis den stiger en smule, men ikke når 9.8-9.9 Gbps, skal du kontrollere offloads og RSS. Når der er tab eller retransmissioner i TCP, skal du evaluere -w (vindue), -O (springe støvle) og kvaliteten af den fysiske forbindelse.
På to måder (-d), se på beløbene og minuttet for at validere, at begge retninger er tæt på det teoretiske maksimum. Store forskelle mellem upload- og downloadhastigheder indikerer normalt affinitet, IRQ'er eller dårligt distribueret RSS.
Når det ikke er CPU'en: Kronisk "6 Gbps"-diagnose
Hvis du sidder fast ved ~6-7 Gbps (meget typisk i nye opsætninger), så udelukke disse punkter et efter et :
- Gammel version3.7-klienter med 3.16-servere fungerer, men opgrader begge for at drage fordel af forbedringer og rettelser til multithreading.
- PCIe forringet: tjek bredde og hastighed med
lspci -vv(Linux) eller leverandørværktøjer; en x1 ved 5 GT/s begrænser 10G NIC'en. - RSS deaktiveretUden afbrydelsesdeling forbliver kun én kerne på 100 %. Aktiver det i driveren i Windows; tjek det i Linux.
ethtool -log RPS/RFS. - Aflastninger og sammensmeltningTSO/GSO/GRO/LRO og afbrydelseskoalescer reducerer CPU-belastningen; juster med
ethtool. - MTU/Jumbo-rammerDet øger ikke altid gennemløbshastigheden, men det hjælper med svage CPU'er. Aktiver det i begge ender og på switchen, hvis den understøtter det.
- OpbevaringI NAS-tests kan flaskehalsen være RAID/ZFS; brug iperf3 til at isolere netværket (hukommelse til hukommelse) og ikke disken.
- SMB og multikanalI Windows fremskynder SMB Multichannel sikkerhedskopiering; hvis det ikke er aktiveret, vil filer køre langsommere, selvom iperf3 kører med 9-10 Gbps.
Det er også en god idé at justere systembuffere i Linux, når du søger efter vedvarende toppe: sysctl net.core.rmem_max y net.core.wmem_max Høje hastigheder forhindrer flaskehalse i sockets; de er ikke obligatoriske for 10GbE på LAN'er med lav latenstid, men de hjælper i krævende scenarier.
Hurtig installation på Windows, Linux og macOS
På Windows skal du downloade de betroede binære filer, pakke dem ud og køre dem fra CMD o PowerShell; Hvis Windows ikke registrerer netværkskortet, se løsningsguiden. Åbn en konsol, gå til mappen og kør iperf3.exe -s o iperf3.exe -c IPSørg for at tillade port 5201/TCP på din firewall, hvis du tester på tværs af undernet.
På Linux/macOS, install er normalt en kommandopå Debian/Ubuntu sudo apt-get install iperf3, på RHEL/CentOS sudo yum install iperf3, på macOS med Homebrew brew install iperf3Hvis dit system er forældet, giver kompilering fra kildekode dig den nyeste version.
Nyttige iperf3-parametre (klient og server)
For at styre sessionen i detaljer sparer disse flag dig tid :
- General:
-phavn,--cportklientport (>=3.1),-fformat (k/K/m/M/g/G),-iinterval,-Farkiv,-Bbinde,-Vordrig,-JJSON,--logfile(>=3.1),-hHjælp,-vversion. - server:
-sserver,-Ddjævel,-IPID-filen. - Kunden:
-cIP,--sctpSCTP,-uUDP,-bbåndbredde,-tvejr,-nbytes,-kpakker,-lbufferlængde,-Ptråde,-Rbaglæns,-wTCP-vindue,-MHåndskrifter,-NTCP uden forsinkelse,-4/-6IPv4/IPv6,-SHOSTE,-LIPv6-tag,-Znul-kopi,-Ospring støvle over,-TTitel,-Coverbelastningsalgoritme.
Husk -P gælder via flowHvis du reparerer -b Hvis UDP eller systemet pålægger socket-grænser, kan hver tråd nå sit eget loft; eksperimenter med færre, men bedre afstemte tråde.
Virkning og begrænsninger: Hvad iperf3 måler (og hvad det ikke gør)
iperf3 er fremragende til stresstestning af netværket, men det kan oversvømme dit LAN, hvis det kører i et produktionsmiljø . Undgå lange tests i spidsbelastningstider, og koordiner med andre teams, hvis I deler trunk-links. Dets trafikmønster afspejler ikke altid de faktiske applikationsbelastninger.
Blandt ulemperne mangler den en indbygget grafisk brugerflade, kræver justering af parametre og gemmer ikke automatisk historiske data. Selvom den understøtter mange protokoller, er der scenarier (f.eks. visse IPv6-funktioner eller specifik multiplexing), hvor andre værktøjer måske er bedre egnede.
Alternativer når du har brug for noget andet
Hvis iperf3 ikke passer til dine behov, kan disse muligheder spare dig :
- iperf2: ældre, men nyttig til ældre kompatibiliteter; der er en klassisk GUI (jperf).
- netperfMeget kraftfuld til TCP/UDP og latenstid, mere teknisk at håndtere.
- nuttcp: letvægts til måling af båndbredde/tab uden for mange komplikationer.
- bwping/bwping6ICMP til at estimere båndbredde, når du ikke kan åbne TCP/UDP (mindre præcis).
- Speedtest CLI / Fast.com CLI: til offentligt internet; erstatter ikke iperf3 på LAN'er.
Hvis dit mål er at få mest muligt ud af 10 GbE, så start med iperf3 multithreading: bekræft version ≥3.16, aktiver 4-8 tråde, tjek RSS og PCIe-linket, og gennemgå drivere/offloads . Med disse minimumskrav har beskedne systemer som en Intel N100 mættet 10 GbE (9.40-9.85 Gbps), og ældre konfigurationer er gået fra 3.5 til 9.8 Gbps efter at have rettet et simpelt x1 PCIe-problem. Nøglen er at fordele arbejdsbyrden på tværs af kerner, undgå skjulte flaskehalse og læse de relevante metrikker for at vide, hvornår hver parameter skal justeres.
Passioneret forfatter om bytes-verdenen og teknologien generelt. Jeg elsker at dele min viden gennem skrivning, og det er det, jeg vil gøre i denne blog, vise dig alle de mest interessante ting om gadgets, software, hardware, teknologiske trends og mere. Mit mål er at hjælpe dig med at navigere i den digitale verden på en enkel og underholdende måde.