Share via


Introduzione alla ricezione del ridimensionamento laterale

Receive side scaling (RSS) è una tecnologia di driver di rete che consente la distribuzione efficiente dell'elaborazione della ricezione di rete tra più CPU nei sistemi multiprocessore.

Nota

Poiché le CPU con hyperthreading nello stesso processore core condividono lo stesso motore di esecuzione, l'effetto non è uguale a quello di più processori core. Per questo motivo, RSS non usa processori con hyperthreading.

Per elaborare i dati ricevuti in modo efficiente, la funzione del servizio di interruzione di ricezione di un driver miniport pianifica una chiamata di procedura posticipata (DPC). Senza RSS, un DPC tipico indica tutti i dati ricevuti all'interno della chiamata DPC. Pertanto, tutte le elaborazioni di ricezione associate all'interrupt vengono eseguite nella CPU in cui si verifica l'interruzione di ricezione. Per una panoramica dell'elaborazione della ricezione non RSS, vedere Elaborazione di ricezione non RSS.

RSS consente alla scheda di interfaccia di rete e al driver miniport di pianificare la ricezione dei DPC in altri processori. La progettazione RSS garantisce che l'elaborazione associata a una determinata connessione rimanga su una CPU assegnata. La scheda di interfaccia di rete implementa una funzione hash e il valore hash risultante consente di selezionare una CPU.

La figura seguente illustra il meccanismo RSS per determinare una CPU.

Diagramma che mostra il processo del meccanismo RSS per determinare una CPU.

Una scheda di interfaccia di rete usa una funzione hash per calcolare un valore hash su un'area definita (tipo hash) all'interno dei dati di rete ricevuti. L'area definita può essere non contigua.

Per indicizzare una tabella di riferimento indiretto viene usato un numero di bit meno significativi (LSB) del valore hash. I valori nella tabella di riferimento indiretto vengono usati per assegnare i dati ricevuti a una CPU.

Per informazioni più dettagliate sulla specifica di tabelle di riferimento indiretto, tipi hash e funzioni hash, vedere Configurazione RSS.

Con il supporto dell'interruzione del messaggio (MSI), una scheda di interfaccia di rete può anche interrompere la CPU associata. Per altre informazioni sul supporto di NDIS per le istanze msi, vedere NDIS MSI-X.

Supporto hardware per RSS

La figura seguente illustra i livelli di supporto hardware per RSS.

Diagramma che mostra i diversi livelli di supporto hardware per RSS.

Esistono tre possibili livelli di supporto hardware per RSS:

La scheda di interfaccia di rete passa sempre il valore hash a 32 bit.

Come RSS migliora le prestazioni del sistema

RSS può migliorare le prestazioni del sistema di rete riducendo:

  • Ritardi di elaborazione distribuendo l'elaborazione da una scheda di interfaccia di rete tra più CPU.

    La distribuzione dell'elaborazione di ricezione consente di garantire che nessuna CPU venga caricata pesantemente mentre un'altra CPU è inattiva.

  • Sovraccarico del blocco di rotazione aumentando la probabilità che gli algoritmi software che condividono i dati vengono eseguiti sulla stessa CPU.

    L'overhead del blocco di rotazione si verifica, ad esempio, quando una funzione in esecuzione su CPU0 possiede un blocco spin sui dati a cui deve accedere una funzione in esecuzione in CPU1. CPU1 gira (attende) fino a quando CPU0 non rilascia il blocco.

  • Ricaricamento delle cache e di altre risorse aumentando la probabilità che gli algoritmi software che condividono i dati vengono eseguiti sulla stessa CPU.

    Tale ricaricamento si verifica, ad esempio, quando una funzione in esecuzione e l'accesso ai dati condivisi in CPU0 viene eseguita su CPU1 in un'interruzione successiva.

Per ottenere questi miglioramenti delle prestazioni in un ambiente sicuro, RSS fornisce i meccanismi seguenti:

  • Elaborazione distribuita

    RSS distribuisce l'elaborazione delle indicazioni di ricezione da una scheda di interfaccia di rete specificata nei CONTROLLER di rete a più CPU.

  • Elaborazione in ordine

    RSS mantiene l'ordine di recapito dei pacchetti di dati ricevuti. Per ogni connessione di rete, i processi RSS ricevono indicazioni su una CPU associata. Per altre informazioni sull'elaborazione della ricezione RSS, vedere Indicazione dei dati di ricezione RSS.

  • Bilanciamento del carico dinamico

    RSS offre un mezzo per ribilanciare il carico di elaborazione di rete tra LE CPU in base al carico del sistema host varia. Per ribilanciare il carico, i driver overlying possono modificare la tabella di riferimento indiretto. Per altre informazioni sulla specifica di tabelle di riferimento indiretto, tipi hash e funzioni hash, vedere Configurazione RSS.

  • Ridimensionamento lato invio

    RSS consente agli stack di driver di elaborare i dati lato invio e ricezione per una determinata connessione nella stessa CPU. In genere, un driver overlying (ad esempio TCP) invia parte di un blocco di dati e attende un riconoscimento prima di inviare il saldo dei dati. Il riconoscimento attiva quindi le richieste di invio successive. La tabella di riferimento indiretto RSS identifica una particolare CPU per l'elaborazione dei dati di ricezione. Per impostazione predefinita, l'elaborazione di invio viene eseguita sulla stessa CPU se viene attivata dal riconoscimento di ricezione. Un driver può anche specificare la CPU, ad esempio se viene usato un timer.

  • Proteggere l'hash

    RSS include una firma che fornisce una sicurezza aggiuntiva. Questa firma protegge il sistema da host remoti dannosi che potrebbero tentare di forzare il sistema in uno stato sbilanciato.

  • Supporto di MSI-X

    RSS, con supporto per MSI-X, esegue la routine del servizio interrupt (ISR) sulla stessa CPU che successivamente esegue il DPC. In questo modo si riduce il sovraccarico del blocco spin e il ricaricamento delle cache.