Dela via


Prestandajustering för nätverkskort i Windows Server

I den här artikeln beskrivs hur du optimerar nätverkskortprestanda i Windows Server-miljöer. Prestandajustering för nätverkskort kan avsevärt förbättra dataflödet, minska svarstiden och maximera resursanvändningen för dina serverarbetsbelastningar.

Rätt justeringsinställningar för nätverkskorten beror på följande variabler:

  • Nätverkskortet och dess funktionsuppsättning
  • Den typ av arbetsbelastning som servern utför
  • Servermaskinvara och programvaruresurser
  • Dina prestandamål för servern

De optimala justeringsinställningarna beror på din specifika maskinvarukonfiguration, arbetsbelastningskrav och prestandamål. Innan du implementerar ändringar utvärderar du dina aktuella nätverksprestanda och identifierar förbättringsområden. Vissa funktioner och inställningar kan variera mellan olika versioner.

I följande avsnitt beskrivs några av dina alternativ för prestandajustering.

Avlastningsfunktioner

Nätverksbelastningsfunktioner överför bearbetningsuppgifter från processorn till nätverkskortmaskinvaran, vilket minskar systemets omkostnader och förbättrar den övergripande nätverksprestandan. Vanliga avlastningsfunktioner inkluderar TCP-kontrollsumnas avlastning, stor sändningsavlastning (LSO) och avlastning av mottagningens sidskalning (RSS).

Det är vanligtvis fördelaktigt att aktivera avlastningsegenskaper för nätverkskort. Nätverkskortet kanske dock inte är tillräckligt kraftfullt för att hantera avlastningsfunktionerna med högt dataflöde. Överväg till exempel ett nätverkskort med begränsade maskinvaruresurser. I så fall kan aktivering av segmenterings avlastningsfunktioner minska det maximala hållbara dataflödet för adaptern. Men om det minskade dataflödet är acceptabelt bör du aktivera funktionerna för segmenterings avlastning.

Vissa nätverkskort kräver att du aktiverar avlastningsfunktioner oberoende av sökvägarna för att skicka och ta emot.

Important

Använd inte avlastningsfunktionerna IPsec Task Offload eller TCP Chimney Offload. Dessa tekniker är inaktuella i Windows Server 2016 och kan påverka server- och nätverksprestanda negativt. Dessutom kanske Microsoft inte stöder dessa tekniker i framtiden.

Skalning på mottagarsidan (RSS) för webbservrar

RSS kan förbättra webbskalbarhet och prestanda när det finns färre nätverkskort än logiska processorer på servern. När all webbtrafik går via DE RSS-kompatibla nätverkskorten kan servern bearbeta inkommande webbbegäranden från olika anslutningar samtidigt över olika processorer.

Important

Undvik att använda både icke-RSS-nätverkskort och RSS-kompatibla nätverkskort på samma server. På grund av belastningsdistributionslogik i RSS och Hypertext Transfer Protocol (HTTP) kan prestandan försämras allvarligt om ett icke-RSS-kompatibelt nätverkskort accepterar webbtrafik på en server som har ett eller flera RSS-kompatibla nätverkskort. I det här fallet bör du använda RSS-kompatibla nätverkskort eller inaktivera RSS på fliken Avancerade egenskaper för nätverkskortegenskaper .

Om du vill ta reda på om ett nätverkskort är RSS-kompatibelt kan du visa RSS-informationen på fliken Avancerade egenskaper för nätverkskortegenskaper .

RSS-profiler och RSS-köer

Den fördefinierade RSS-standardprofilen är NUMAStatic. Innan du börjar använda RSS-profiler granskar du de tillgängliga profilerna för att förstå när de är fördelaktiga och hur de gäller för din nätverksmiljö och maskinvara.

Öppna till exempel Aktivitetshanteraren och granska de logiska processorerna på servern. Om de verkar vara underutnyttjarda för att ta emot trafik kan du försöka öka antalet RSS-köer från standardvärdet två till det högsta som ditt nätverkskort stöder. Nätverkskortet kan ha alternativ för att ändra antalet RSS-köer som en del av drivrutinen.

Resurser för nätverksadapter

För nätverkskort som gör att du kan konfigurera resurser manuellt, till exempel ta emot och skicka buffertar, bör du öka de allokerade resurserna.

Vissa nätverkskort ställer in sina mottagningsbuffertar lågt för att spara det minne som allokerats av värddatorn. Det låga värdet resulterar i borttagna paket och sämre prestanda. För mottagningsintensiva scenarier rekommenderar vi därför att du ökar värdet för mottagningsbufferten till det högsta värdet.

Om ett nätverkskort inte exponerar manuell resurskonfiguration konfigureras resurserna dynamiskt eller så är resurserna inställda på ett fast värde som inte kan ändras.

Avbrottsmoderering

För att styra avbrottsmoderering exponerar vissa nätverkskort olika nivåer för avbrottsmoderering, olika buffertsambandsparametrar (ibland separat för att skicka och ta emot buffertar) eller båda.

Du bör överväga avbrottsmoderering för CPU-bundna arbetsbelastningar. När du använder avbrottsmoderering bör du överväga kompromissen mellan processorbesparingarna för värden och svarstiden jämfört med de ökade processorbesparingarna för värden på grund av fler avbrott och mindre svarstid. Om nätverkskortet inte utför avbrottsmoderering, men det exponerar buffertsamband, kan du förbättra prestandan genom att öka antalet sammanflätade buffertar så att fler buffertar tillåts per sändning eller mottagning.

Paketbearbetning med låg svarstid

Många nätverkskort ger alternativ för att optimera svarstid som orsakas av operativsystemet. Svarstiden är den förflutna tiden mellan nätverksdrivrutinen som bearbetar ett inkommande paket och nätverksdrivrutinen som skickar tillbaka paketet. Den här tiden mäts vanligtvis i mikrosekunder. Som jämförelse mäts överföringstiden för paketöverföringar över långa avstånd vanligtvis i millisekunder (en storleksordning som är större). Den här justeringen minskar inte den tid ett paket spenderar under överföring.

Följande lista innehåller några förslag på prestandajustering för mikrosekunderskänsliga nätverk:

  • Om DIN BIOS stöder det ställer du in datorns BIOS på Hög prestanda med C-states inaktiverad. Vissa system ger högre prestanda om operativsystemet styr energisparfunktionerna. Du kan kontrollera och justera energisparinställningarna från energisparinställningar eller med hjälp powercfg av kommandot . Mer information finns i Powercfg Command-Line Alternativ.

  • Ange operativsystemets energisparprofil till System med höga prestanda. Den här inställningen fungerar inte korrekt om systemets BIOS är inställt på att inaktivera operativsystemets kontroll av energisparfunktioner.

  • Aktivera statiska avlastningar. Aktivera till exempel inställningarna UDP Checksums, TCP Checksums och Send Large Offload (LSO).

  • Om trafiken består av flera dataströmmar, till exempel när du tar emot stora mängder multicast-trafik, aktivera RSS.

  • Inaktivera inställningen Avbrottsmoderering för nätverkskortdrivrutiner som kräver lägsta möjliga svarstid. Kom ihåg att den här konfigurationen kan använda mer CPU-tid och representerar en kompromiss.

  • Hantera nätverkskortavbrott och DPC:er på en kärnprocessor som delar CPU-cache med den kärna som används av programmet (användartråden) som hanterar paketet. Processortillhörighetsjustering kan användas för att dirigera en process till vissa logiska processorer med RSS-konfiguration. Att använda samma kärna för avbrottshantering, DPC och användarlägestråd visar sämre prestanda när belastningen ökar eftersom ISR, DPC och användarlägestråd konkurrerar om att använda kärnan.

Systemhanteringsavbrott

Många maskinvarusystem använder systemhanteringsavbrott (SMI) för olika underhållsfunktioner, till exempel rapportera felkorrigeringskod (ECC) minnesfel, upprätthålla äldre USB-kompatibilitet, kontrollera fläkten och hantera BIOS-kontrollerade energiinställningar.

SMI är det högsta prioritetsavbrottet i systemet och placerar processorn i ett hanteringsläge. Det här läget föregriper all annan aktivitet medan SMI kör en avbrottstjänstrutin, vanligtvis i BIOS. Tyvärr kan det här beteendet resultera i svarstidstoppar på 100 mikrosekunder eller mer.

Om du behöver uppnå den lägsta svarstiden bör du begära en BIOS-version från maskinvaruleverantören som minskar SMIs till lägsta möjliga grad. Dessa BIOS-versioner kallas ofta för BIOS med låg latens eller SMI free BIOS. I vissa fall är det inte möjligt för en maskinvaruplattform att helt eliminera SMI-aktiviteten eftersom den används för att styra viktiga funktioner som kylnings fläktar.

Operativsystemet kan inte styra SME:er eftersom den logiska processorn körs i ett särskilt underhållsläge, vilket förhindrar åtgärder i operativsystemet.

Automatisk tunning av TCP-mottagningsfönster

Windows-nätverksstacken använder en funktion med namnet TCP-fönstrets autotuningsnivå för att förhandla om storleken på TCP-mottagningsfönstret. Den här funktionen kan förhandla fram en definierad mottagningsfönsterstorlek för varje TCP-kommunikation under TCP-handskakningen och kan optimera prestandan för TCP-anslutningar.

Tidigare använde Windows-nätverksstacken ett mottagningsfönster med fast storlek på 65 535 byte som begränsade det totala potentiella dataflödet för anslutningar. Det totala möjliga dataflödet för TCP-anslutningar kan begränsa nätverksanvändningsscenarier. Med autotuning av TCP-mottagningsfönstret kan dessa scenarier använda nätverket fullt ut.

För ett TCP-mottagningsfönster som har en viss storlek kan du använda följande ekvation för att beräkna det totala dataflödet för en enda anslutning:

Totalt uppnåeligt dataflöde i byte = TCP tar emot fönsterstorlek i byte * (1/ anslutningsfördröjning i sekunder)

För en anslutning på 1 Gbit/s som har en svarstid på 10 ms är det totala uppnåeliga dataflödet bara 51 Mbit/s. Det här värdet är rimligt för en stor företagsnätverksinfrastruktur. Men genom att använda autotuning för att justera mottagningsfönstret kan anslutningen uppnå en fullständig linjehastighet på 1 Gbit/s.

Vissa program definierar storleken på TCP-mottagningsfönstret. Om programmet inte definierar storleken på mottagningsfönstret avgör länkhastigheten storleken enligt följande:

Länkhastighet Ta emot fönsterstorlek
Mindre än 1 Mbit/s 8 kB
1 Mbit/s till 100 Mbit/s 17 KB
100 Mbit/s till 10 Gbit/s 64 KB
10 Gbit/s eller snabbare 128 kB

På en dator som till exempel har ett nätverkskort på 1 Gbit/s installerat bör fönsterstorleken vara 64 kB.

Den här funktionen använder även andra funktioner fullt ut för att förbättra nätverksprestanda. Dessa funktioner omfattar resten av de TCP-alternativ som definieras i RFC 1323. Windows-baserade datorer kan använda dessa funktioner för att avtala TCP-mottagningsfönsterstorlekar som är mindre men skalas enligt ett definierat värde, beroende på konfigurationen. Det här beteendet gör storlekarna enklare att hantera för nätverksenheter.

Note

Du kan uppleva ett problem där nätverksenheten inte är kompatibel med alternativet för TCP-fönsterskalning, enligt definitionen i RFC 1323 och därför inte stöder skalningsfaktorn. I sådana fall kontaktar du nätverksenhetens leverantör.

Automatiska tunningsnivåer

Du kan ställa in automatisk tunning av TCP-mottagningsfönstret till någon av fem nivåer. Standardnivån är Normal. I följande tabell beskrivs nivåerna.

Level Hexadecimalt värde Comments
Normal (standard) 0x8 (skalningsfaktor 8) Ange att TCP-mottagningsfönstret ska växa för att hantera nästan alla scenarier.
Disabled Ingen skalningsfaktor är tillgänglig Ange TCP-mottagningsfönstret som standardvärde.
Restricted 0x4 (skalningsfaktor 4) Ange att TCP-mottagningsfönstret ska växa utöver standardvärdet, men begränsa sådan tillväxt i vissa scenarier.
Mycket begränsad 0x2 (skalningsfaktor 2) Ange att TCP-mottagningsfönstret ska växa utöver standardvärdet, men gör det mycket försiktigt.
Experimental 0xE (skalningsfaktor på 14) Ställ in TCP-mottagningsfönstret så att det kan växa för att hantera extrema scenarier.

Om du använder ett program för att samla in nätverkspaket bör programmet rapportera data som liknar följande exempel för olika inställningar för automatisk tunning av fönster.

Automatisk tunningsnivå: Normal (standardtillstånd)

I det här exemplet visas utdata från ett paketinsamlingsverktyg när autotuningsnivån för TCP-mottagningsfönstret är inställd på Normal. Skalningsfaktorn är 8.

Frame: Number = 492, Captured Frame Length = 66, MediaType = ETHERNET
+ Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[D8-FE-E3-65-F3-FD],SourceAddress:[C8-5B-76-7D-FA-7F]
+ Ipv4: Src = 192.169.0.5, Dest = 192.169.0.4, Next Protocol = TCP, Packet ID = 2667, Total IP Length = 52
- Tcp: [Bad CheckSum]Flags=......S., SrcPort=60975, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=4075590425, Ack=0, Win=64240 ( Negotiating scale factor 0x8 ) = 64240
SrcPort: 60975
DstPort: Microsoft-DS(445)
SequenceNumber: 4075590425 (0xF2EC9319)
AcknowledgementNumber: 0 (0x0)
+ DataOffset: 128 (0x80)
+ Flags: ......S. ---------------------------------------------------------> SYN Flag set
Window: 64240 ( Negotiating scale factor 0x8 ) = 64240 ---------> TCP Receive Window set as 64K as per NIC Link bitrate. Note it shows the 0x8 Scale Factor.
Checksum: 0x8182, Bad
UrgentPointer: 0 (0x0)
- TCPOptions:
+ MaxSegmentSize: 1
+ NoOption:
+ WindowsScaleFactor: ShiftCount: 8 -----------------------------> Scale factor, defined by AutoTuningLevel
+ NoOption:
+ NoOption:
+ SACKPermitted:

Automatisk tunningsnivå: Inaktiverad

Det här exemplet visar utdata från ett paketinsamlingsverktyg när autotuningsnivån för TCP-mottagningsfönstret är inställd på Inaktiverad. Skalningsfaktorn används inte.

Frame: Number = 353, Captured Frame Length = 62, MediaType = ETHERNET
+ Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[D8-FE-E3-65-F3-FD],SourceAddress:[C8-5B-76-7D-FA-7F]
+ Ipv4: Src = 192.169.0.5, Dest = 192.169.0.4, Next Protocol = TCP, Packet ID = 2576, Total IP Length = 48
- Tcp: [Bad CheckSum]Flags=......S., SrcPort=60956, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=2315885330, Ack=0, Win=64240 ( ) = 64240
SrcPort: 60956
DstPort: Microsoft-DS(445)
SequenceNumber: 2315885330 (0x8A099B12)
AcknowledgementNumber: 0 (0x0)
+ DataOffset: 112 (0x70)
+ Flags: ......S. ---------------------------------------------------------> SYN Flag set
Window: 64240 ( ) = 64240 ----------------------------------------> TCP Receive Window set as 64K as per NIC Link bitrate. Note there is no Scale Factor defined. In this case, Scale factor is not being sent as a TCP Option, so it will not be used by Windows.
Checksum: 0x817E, Bad
UrgentPointer: 0 (0x0)
- TCPOptions:
+ MaxSegmentSize: 1
+ NoOption:
+ NoOption:
+ SACKPermitted:

Automatisk tunningsnivå: Begränsad

I det här exemplet visas utdata från ett paketinsamlingsverktyg när autotuningsnivån för TCP-mottagningsfönstret är inställd på Begränsad. Skalningsfaktorn är 4.

Frame: Number = 3, Captured Frame Length = 66, MediaType = ETHERNET
+ Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[D8-FE-E3-65-F3-FD],SourceAddress:[C8-5B-76-7D-FA-7F]
+ Ipv4: Src = 192.169.0.5, Dest = 192.169.0.4, Next Protocol = TCP, Packet ID = 2319, Total IP Length = 52
- Tcp: [Bad CheckSum]Flags=......S., SrcPort=60890, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=1966088568, Ack=0, Win=64240 ( Negotiating scale factor 0x4 ) = 64240
SrcPort: 60890
DstPort: Microsoft-DS(445)
SequenceNumber: 1966088568 (0x75302178)
AcknowledgementNumber: 0 (0x0)
+ DataOffset: 128 (0x80)
+ Flags: ......S. ---------------------------------------------------------> SYN Flag set
Window: 64240 ( Negotiating scale factor 0x4 ) = 64240 ---------> TCP Receive Window set as 64K as per NIC Link bitrate. Note it shows the 0x4 Scale Factor.
Checksum: 0x8182, Bad
UrgentPointer: 0 (0x0)
- TCPOptions:
+ MaxSegmentSize: 1
+ NoOption:
+ WindowsScaleFactor: ShiftCount: 4 -------------------------------> Scale factor, defined by AutoTuningLevel.
+ NoOption:
+ NoOption:
+ SACKPermitted:

Automatisk tunningsnivå: Mycket begränsad

Det här exemplet visar utdata från ett paketinsamlingsverktyg när autotuningsnivån för TCP-mottagningsfönstret är inställd på Strikt begränsad. Skalningsfaktorn är 2.

Frame: Number = 115, Captured Frame Length = 66, MediaType = ETHERNET
+ Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[D8-FE-E3-65-F3-FD],SourceAddress:[C8-5B-76-7D-FA-7F]
+ Ipv4: Src = 192.169.0.5, Dest = 192.169.0.4, Next Protocol = TCP, Packet ID = 2388, Total IP Length = 52
- Tcp: [Bad CheckSum]Flags=......S., SrcPort=60903, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=1463725706, Ack=0, Win=64240 ( Negotiating scale factor 0x2 ) = 64240
SrcPort: 60903
DstPort: Microsoft-DS(445)
SequenceNumber: 1463725706 (0x573EAE8A)
AcknowledgementNumber: 0 (0x0)
+ DataOffset: 128 (0x80)
+ Flags: ......S. ---------------------------------------------------------> SYN Flag set
Window: 64240 ( Negotiating scale factor 0x2 ) = 64240 ---------> TCP Receive Window set as 64K as per NIC Link bitrate. Note it shows the 0x2 Scale Factor.
Checksum: 0x8182, Bad
UrgentPointer: 0 (0x0)
- TCPOptions:
+ MaxSegmentSize: 1
+ NoOption:
+ WindowsScaleFactor: ShiftCount: 2 ------------------------------> Scale factor, defined by AutoTuningLevel
+ NoOption:
+ NoOption:
+ SACKPermitted:

Automatisk tunningsnivå: Experimentell

Det här exemplet visar utdata från ett paketinsamlingsverktyg när autotuningsnivån för TCP-mottagningsfönstret är inställd på Experimentell. Skalningsfaktorn är 14.

Frame: Number = 238, Captured Frame Length = 66, MediaType = ETHERNET
+ Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[D8-FE-E3-65-F3-FD],SourceAddress:[C8-5B-76-7D-FA-7F]
+ Ipv4: Src = 192.169.0.5, Dest = 192.169.0.4, Next Protocol = TCP, Packet ID = 2490, Total IP Length = 52
- Tcp: [Bad CheckSum]Flags=......S., SrcPort=60933, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=2095111365, Ack=0, Win=64240 ( Negotiating scale factor 0xe ) = 64240
SrcPort: 60933
DstPort: Microsoft-DS(445)
SequenceNumber: 2095111365 (0x7CE0DCC5)
AcknowledgementNumber: 0 (0x0)
+ DataOffset: 128 (0x80)
+ Flags: ......S. ---------------------------------------------------------> SYN Flag set
Window: 64240 ( Negotiating scale factor 0xe ) = 64240 ---------> TCP Receive Window set as 64K as per NIC Link bitrate. Note it shows the 0xe Scale Factor.
Checksum: 0x8182, Bad
UrgentPointer: 0 (0x0)
- TCPOptions:
+ MaxSegmentSize: 1
+ NoOption:
+ WindowsScaleFactor: ShiftCount: 14 -----------------------------> Scale factor, defined by AutoTuningLevel
+ NoOption:
+ NoOption:
+ SACKPermitted:

Granska och konfigurera automatisk tunningsnivå för TCP-mottagningsfönster

Du kan använda antingen Windows PowerShell-cmdletar eller netsh Windows-kommandot för att granska eller ändra autotuningsnivån för TCP-mottagningsfönstret.

Note

Från och med Windows Server 2019 kan du inte längre använda registret för att konfigurera storleken på TCP-mottagningsfönstret. Mer information om inaktuella inställningar finns i Inaktuella TCP-parametrar.

Du kan använda cmdleten Get-NetTCPSetting för att granska eller ändra autotuningsnivån. Så här granskar och ändrar du den aktuella inställningen:

  1. Öppna PowerShell som administratör och kör följande cmdlet:

    Get-NetTCPSetting | Select SettingName,AutoTuningLevelLocal
    

    Utdata ser ut ungefär så här:

    SettingName          AutoTuningLevelLocal
    -----------          --------------------
    Automatic
    InternetCustom       Normal
    DatacenterCustom     Normal
    Compat               Normal
    Datacenter           Normal
    Internet             Normal
    
  2. Om du vill ändra inställningen kör du följande kommando. Se till att ställa in <value> på önskad automatisk tunningsnivå. Mer information finns i Set-NetTCPSetting.

    Set-NetTCPSetting -AutoTuningLevelLocal <value>
    

Windows-filtreringsplattform

Windows Filtering Platform (WFP), som introducerades i Windows Server 2008, tillhandahåller API:er till icke-Microsoft-oberoende programvaruleverantörer (ISV:er) för att skapa paketbearbetningsfilter. Med WFP kan programvara från tredje part inspektera, ändra eller filtrera nätverkstrafik i olika lager i nätverksstacken. Även om den här funktionen är viktig för säkerhetsprogram kan den medföra prestandaomkostnader om den inte implementeras korrekt. Exempel är brandvägg och antivirusprogram.

Ett dåligt skrivet WFP-filter kan avsevärt minska serverns nätverksprestanda. Mer information finns i Porting Packet-Processing Drivers and Apps to WFP i Windows Dev Center.

Inaktuella TCP-parametrar

Följande registerinställningar från Windows Server 2003 stöds inte längre och ignoreras i senare versioner.

  • TcpWindowSize
  • NumTcbTablePartitions
  • MaxHashTableSize

Alla dessa inställningar fanns i följande registerundernyckel: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters