Dela via


Introduktion till skalning på mottagarsidan

RSS (Receive Side Scaling) är en teknik för nätverksdrivrutiner som möjliggör effektiv distribution av bearbetning av nätverksmottagning över flera processorer i multiprocessorsystem.

Nota

Eftersom hypertrådade processorer på samma kärnprocessor delar samma körningsmotor är effekten inte densamma som att ha flera kärnprocessorer. Av den anledningen använder RSS inte hypertrådade processorer.

För att effektivt bearbeta mottagna data schemalägger en miniportdrivrutins avbrottshanteringsfunktion ett uppskjutet proceduranrop (DPC). Utan RSS anger en typisk DPC alla mottagna data i DPC-anropet. Därför körs all mottagningsbearbetning som är associerad med avbrottet på processorn där mottagningsavbrottet inträffar. För en översikt av icke-RSS-mottagningsbearbetning, se Icke-RSS-mottagningsbearbetning.

MED RSS kan nätverkskortet och miniportdrivrutinen schemalägga mottagnings-DPC:er på andra processorer. RSS-designen säkerställer att bearbetning som är associerad med en viss anslutning förblir på en tilldelad CPU. Nätverkskortet implementerar en hash-funktion, och det resulterande hashvärdet hjälper dig att välja en CPU.

Följande bild illustrerar RSS-mekanismen för att fastställa en PROCESSOR.

diagram som visar processen för RSS-mekanismen för att fastställa en PROCESSOR.

Ett nätverkskort använder en hashfunktion för att beräkna ett hash-värde över ett definierat område (hashtyp) i de mottagna nätverksdata. Det definierade området kan vara icke-sammanhängande.

Ett antal minst signifikanta bitar (LSB) av hash-värdet används för att indexera en indirektionstabell. Värdena i tabellen indirection används för att tilldela mottagna data till en PROCESSOR.

Mer detaljerad information om hur du anger indirekta tabeller, hash-typer och hash-funktioner finns i RSS-konfiguration.

Med msi-stöd (message signaled interrupt) kan ett nätverkskort också avbryta den associerade processorn. Mer information om NDIS-stöd för MSIs finns i NDIS MSI-X.

Maskinvarustöd för RSS

Följande bild illustrerar nivåerna av maskinvarustöd för RSS.

diagram som visar olika nivåer av maskinvarustöd för RSS.

Det finns tre möjliga nivåer av maskinvarustöd för RSS:

Nätverkskortet skickar alltid 32-bitars hash-värdet.

Så här förbättrar RSS systemprestanda

RSS kan förbättra nätverkets systemprestanda genom att minska:

  • Förbättra bearbetningstider genom att distribuera hanteringen av mottagna data från ett nätverkskort över flera processorer.

    Distributionen av mottagningsbearbetningen hjälper till att säkerställa att ingen CPU belastas kraftigt medan en annan CPU är inaktiv.

  • Genom att öka sannolikheten att programvarualgoritmer som delar data körs på samma CPU, ökar spinlockens overhead.

    Omkostnader för spinnlås uppstår till exempel när en funktion som körs på CPU0 har ett spinnlås på data som en funktion som körs på CPU1 måste komma åt. CPU1 snurrar (väntar) tills CPU0 släpper låset.

  • Omlastning av cacheminnen och andra resurser genom att öka sannolikheten för att programvarualgoritmer som delar data körs på samma PROCESSOR.

    Sådan omläsning sker till exempel när en funktion som kör och får åtkomst till delade data på CPU0 körs på CPU1 i ett efterföljande avbrott.

För att uppnå dessa prestandaförbättringar i en säker miljö tillhandahåller RSS följande mekanismer:

  • Distribuerad bearbetning

    RSS distribuerar bearbetningen av mottagningsuppgifter från ett visst nätverkskort i DPC:er till flera processorer.

  • Bearbetning i sekventiell ordning

    RSS bevarar leveransordningen för mottagna datapaket. För varje nätverksanslutning får RSS-processer indikationer på en associerad CPU. Mer information om RSS-mottagningsbearbetning finns i som anger RSS-mottagningsdata.

  • Dynamisk belastningsutjämning

    RSS är ett sätt att balansera om nätverksbearbetningsbelastningen mellan processorer eftersom värdsystembelastningen varierar. För att balansera om belastningen kan överliggande drivrutiner ändra indirektionstabellen. Mer information om hur du anger indirekta tabeller, hash-typer och hash-funktioner finns i RSS-konfiguration.

  • Skalning på sändningssidan

    RSS gör det möjligt för drivrutinsstackar att bearbeta data på sändnings- och mottagarsidan för en viss anslutning på samma CPU. Vanligtvis skickar en överliggande drivrutin (till exempel TCP) en del av ett datablock och väntar på en bekräftelse innan resten av data skickas. Bekräftelsen utlöser sedan efterföljande sändningsbegäranden. RSS-indirektionstabellen identifierar en viss CPU för att behandla mottagen data. Som standard körs sändningsbearbetningen på samma PROCESSOR om den utlöses av mottagningsbekräftelse. En drivrutin kan också ange processorn (till exempel om en timer används).

  • Säker hash

    RSS innehåller en signatur som ger ökad säkerhet. Den här signaturen skyddar systemet från skadliga fjärrvärdar som kan försöka tvinga systemet till ett obalanserat tillstånd.

  • MSI-X stöd

    RSS, med stöd för MSI-X, kör avbrottstjänstrutinen (ISR) på samma CPU som senare kör DPC. Detta minskar spin lock-kostnader och omladdning av cacheminnen.