Scelta di un adattatore di rete
È possibile usare questo argomento per apprendere alcune delle funzionalità degli adattatori di rete che potrebbero influire sulle scelte di acquisto.
Le applicazioni a elevato utilizzo di rete richiedono schede di rete ad alte prestazioni. Questa sezione illustra alcune considerazioni sulla scelta degli adattatori di rete, nonché su come configurare impostazioni diverse dell'adattatore di rete per ottenere prestazioni ottimali di rete.
Suggerimento
È possibile configurare le impostazioni dell'adattatore di rete usando Windows PowerShell. Per maggiori informazioni, consultare la sezione Cmdlet adattatore di rete in Windows PowerShell.
Funzionalità offline
L'offload delle attività dall'unità di elaborazione centrale (CPU) alla scheda di rete può ridurre l'utilizzo della CPU nel server, migliorando così le prestazioni complessive del sistema.
Lo stack di rete nei prodotti Microsoft può eseguire l'offload di una o più attività in un adattatore di rete se si seleziona un adattatore di rete con le funzionalità di offload appropriate. La tabella seguente offre una breve panoramica delle diverse funzionalità di offload disponibili in Windows Server 2016.
Tipo di offload | Descrizione |
---|---|
Calcolo checksum per TCP | Lo stack di rete può eseguire l'offload del calcolo e della convalida dei checksum TCP (Transmission Control Protocol) nei percorsi di codice di invio e ricezione. Può anche eseguire l'offload del calcolo e della convalida dei checksum IPv4 e IPv6 nei percorsi di codice di invio e ricezione. |
Calcolo checksum per UDP | Lo stack di rete può eseguire l'offload del calcolo e della convalida dei checksum UDP (User Datagram Protocol) nei percorsi di codice di invio e ricezione. |
Calcolo checksum per IPv4 | Lo stack di rete può scaricare il calcolo e la convalida dei checksum IPv4 nei percorsi di codice di invio e ricezione. |
Calcolo checksum per IPv6 | Lo stack di rete può scaricare il calcolo e la convalida dei checksum IPv6 nei percorsi di codice di invio e ricezione. |
Segmentazione di pacchetti TCP di grandi dimensioni | Il livello di trasporto TCP/IP supporta l'offload di invio di grandi dimensioni v2 (LSOv2). Con LSOv2, il livello di trasporto TCP/IP può eseguire l'offload della segmentazione di pacchetti TCP di grandi dimensioni nell'adattatore di rete. |
RSS (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. Maggiori dettagli su RSS sono disponibili più avanti in questo argomento. |
Receive Segment Coalescing (RSC) | RSC è la possibilità di raggruppare i pacchetti per ridurre al minimo l'elaborazione dell'intestazione necessaria per l'esecuzione dell'host. È possibile unire un massimo di 64 KB di payload ricevuto in un singolo pacchetto più grande per l'elaborazione. Maggiori dettagli su RSC sono disponibili più avanti in questo argomento. |
Receive Side Scaling
Windows Server 2016, Windows Server 2012, Windows Server 2012 R2, Windows Server 2008 R2 e Windows Server 2008 supportano Receive Side Scaling (RSS).
Alcuni server sono configurati con più processori logici che condividono risorse hardware (ad esempio un core fisico) e che vengono considerati peer SMT (Simultane Multi-Threading). Intel Hyper-Threading Technology è un esempio. RSS indirizza l'elaborazione di rete a un massimo di un processore logico per core. Ad esempio, in un server con Intel Hyper-Threading, 4 core e 8 processori logici, RSS usa non più di 4 processori logici per l'elaborazione di rete.
RSS distribuisce i pacchetti di I/O di rete in ingresso tra processori logici in modo che i pacchetti che appartengono alla stessa connessione TCP vengano elaborati nello stesso processore logico, che mantiene l'ordinamento.
RSS bilancia anche il carico del traffico unicast e multicast UDP e instrada i flussi correlati (determinati dall'hashing degli indirizzi di origine e di destinazione) allo stesso processore logico, mantenendo l'ordine degli arrivi correlati. Ciò consente di migliorare la scalabilità e le prestazioni per scenari a elevato utilizzo di ricezione per i server con meno adattatori di rete rispetto ai processori logici idonei.
Configurazione di RSS
In Windows Server 2016 è possibile configurare RSS usando i cmdlet di Windows PowerShell e i profili RSS.
È possibile definire i profili RSS usando il parametro –Profile del cmdlet di Windows PowerShell Set-NetAdapterRss.
Comandi di Windows PowerShell per la configurazione RSS
I cmdlet seguenti consentono di visualizzare e modificare i parametri RSS per ogni scheda di rete.
Nota
Per informazioni di riferimento dettagliate sui comandi per ogni cmdlet, inclusa la sintassi e i parametri, è possibile fare clic sui collegamenti seguenti. È anche possibile passare il nome del cmdlet a Get-Help al prompt di Windows PowerShell per informazioni dettagliate su ogni comando.
Disable-NetAdapterRss. Questo comando disabilita RSS nell'adattatore di rete specificata.
Enable-NetAdapterRss. Questo comando abilita RSS nell'adattatore di rete specificata.
Get-NetAdapterRss. Questo comando recupera le proprietà RSS della scheda di rete specificata.
Set-NetAdapterRss. Questo comando imposta le proprietà RSS nell'adattatore di rete specificato.
Profili RSS
È possibile usare il parametro –Profile del cmdlet Set-NetAdapterRss per specificare i processori logici assegnati all'adattatore di rete. I valori disponibili per questo parametro sono:
Closest. I numeri di processore logici vicini al processore RSS di base dell'adattatore di rete sono preferiti. Con questo profilo, il sistema operativo potrebbe ribilanciare dinamicamente i processori logici in base al carico.
ClosestStatic. I numeri di processore logici vicini al processore RSS di base dell'adattatore di rete sono preferiti. Con questo profilo, il sistema operativo non ribilancia dinamicamente i processori logici in base al carico.
NUMA. I numeri del processore logico vengono in genere selezionati in nodi NUMA diversi per distribuire il carico. Con questo profilo, il sistema operativo potrebbe ribilanciare dinamicamente i processori logici in base al carico.
NUMAStatic. Si tratta del profilo predefinito. I numeri del processore logico vengono in genere selezionati in nodi NUMA diversi per distribuire il carico. Con questo profilo, il sistema operativo non ribilancia dinamicamente i processori logici in base al carico.
Conservative. RSS usa il minor numero possibile di processori per sostenere il carico. Questa opzione consente di ridurre il numero di interrupt.
A seconda dello scenario e delle caratteristiche del carico di lavoro, è anche possibile usare altri parametri del cmdlet di Windows PowerShell Set-NetAdapterRss per specificare quanto segue:
- In base all'adattatore di rete, il numero di processori logici che è possibile usare per RSS.
- Offset iniziale per l'intervallo di processori logici.
- Nodo da cui l'adattatore di rete alloca memoria.
Di seguito sono riportati i parametri aggiuntivi Set-NetAdapterRss che è possibile usare per configurare RSS:
Nota
Nella sintassi di esempio per ogni parametro seguente, il nome dell'adattatore di rete Ethernet viene usato come valore di esempio per il parametro –Name del comando Set-NetAdapterRss. Quando si esegue il cmdlet, assicurarsi che il nome dell'adattatore di rete usato sia appropriato per l'ambiente in uso.
* MaxProcessors: imposta il numero massimo di processori RSS da utilizzare. Ciò garantisce che il traffico dell'applicazione sia associato a un numero massimo di processori in una determinata interfaccia. Sintassi di esempio:
Set-NetAdapterRss –Name "Ethernet" –MaxProcessors <value>
* BaseProcessorGroup: imposta il gruppo di processori di base di un nodo NUMA. Ciò influisce sulla matrice del processore usata da RSS. Sintassi di esempio:
Set-NetAdapterRss –Name "Ethernet" –BaseProcessorGroup <value>
* MaxProcessorGroup: imposta il gruppo di processori Max di un nodo NUMA. Ciò influisce sulla matrice del processore usata da RSS. L'impostazione di questa impostazione limita un gruppo di processori massimo in modo che il bilanciamento del carico sia allineato all'interno di un gruppo k. Sintassi di esempio:
Set-NetAdapterRss –Name "Ethernet" –MaxProcessorGroup <value>
* BaseProcessorNumber: imposta il numero di processore di base di un nodo NUMA. Ciò influisce sulla matrice del processore usata da RSS. Ciò consente il partizionamento dei processori tra adattatori di rete. Si tratta del primo processore logico nell'intervallo di processori RSS assegnati a ogni adattatore. Sintassi di esempio:
Set-NetAdapterRss –Name "Ethernet" –BaseProcessorNumber <Byte Value>
* NumaNode: nodo NUMA da cui ogni adattatore di rete può allocare memoria. Può trovarsi all'interno di un gruppo k o da diversi gruppi k. Sintassi di esempio:
Set-NetAdapterRss –Name "Ethernet" –NumaNodeID <value>
* NumberofReceiveQueues: se i processori logici sembrano sottoutilizzati per la ricezione del traffico (ad esempio, come visualizzato in Task Manager), è possibile aumentare il numero di code RSS dal numero predefinito di 2 al massimo supportato dall'adattatore di rete. L'adattatore di rete, può avere delle opzioni per modificare il numero di code RSS potrebbero essere parte del driver. Sintassi di esempio:
Set-NetAdapterRss –Name "Ethernet" –NumberOfReceiveQueues <value>
Per maggiori informazioni, fare clic sul collegamento seguente per scaricare Rete scalabile: Eliminazione del collo di bottiglia di elaborazione ricezione—Introduzione a RSS in formato Word.
Informazioni sulle prestazioni RSS
L'ottimizzazione di RSS richiede la comprensione della configurazione e della logica di bilanciamento del carico. Per verificare che le impostazioni RSS abbiano effetto, è possibile esaminare l'output quando si esegue il cmdlet Get-NetAdapterRss di Windows PowerShell. Di seguito viene mostrato un esempio dell'output di questo cmdlet.
PS C:\Users\Administrator> get-netadapterrss
Name : testnic 2
InterfaceDescription : Broadcom BCM5708C NetXtreme II GigE (NDIS VBD Client) #66
Enabled : True
NumberOfReceiveQueues : 2
Profile : NUMAStatic
BaseProcessor: [Group:Number] : 0:0
MaxProcessor: [Group:Number] : 0:15
MaxProcessors : 8
IndirectionTable: [Group:Number]:
0:0 0:4 0:0 0:4 0:0 0:4 0:0 0:4
…
(# indirection table entries are a power of 2 and based on # of processors)
…
0:0 0:4 0:0 0:4 0:0 0:4 0:0 0:4
Oltre all'eco dei parametri impostati, l'aspetto chiave dell'output è l'output della tabella di riferimento indiretto. Nella tabella di riferimento indiretto, vengono visualizzati i bucket della tabella hash usati per distribuire il traffico in ingresso. In questo esempio, la notazione n:c designa la coppia di indici Numa K-Group:CPU usata per indirizzare il traffico in ingresso. Vengono visualizzate esattamente 2 voci univoche (0:0 e 0:4), che rappresentano rispettivamente gruppo k 0/cpu0 e gruppo k 0/CPU 4.
Esiste un solo gruppo k per questo sistema (gruppo k 0) e un n (dove n <= 128) voce di tabella di riferimento indiretto. Poiché il numero di code di ricezione è impostato su 2, vengono scelti solo 2 processori (0:0, 0:4), anche se il numero massimo di processori è impostato su 8. In effetti, la tabella di riferimento indiretto esegue l'hashing del traffico in ingresso per usare solo 2 CPU su 8 disponibili.
Per utilizzare completamente le CPU, il numero di code di ricezione RSS deve essere uguale o maggiore di Max Processors. Nell'esempio precedente, la coda di ricezione deve essere impostata su 8 o versioni successive.
Gruppo NIC e RSS
RSS può essere abilitato in una scheda di rete associata a un'altra scheda di interfaccia di rete tramite gruppo NIC. In questo scenario, è possibile configurare solo l'adattatore di rete fisica sottostante per l'uso di RSS. Un utente non può impostare i cmdlet RSS nell'adattatore di rete con team.
Receive Segment Coalescing (RSC)
Receive Segment Coalescing (RSC) consente di ridurre il numero di intestazioni IP elaborate per una determinata quantità di dati ricevuti. Deve essere usato per ridimensionare le prestazioni dei dati ricevuti raggruppando (o unire) i pacchetti più piccoli in unità più grandi.
Questo approccio può influire sulla latenza con i vantaggi riscontrati principalmente nei guadagni della velocità effettiva. È consigliabile aumentare la velocità effettiva per carichi di lavoro pesanti ricevuti. Valutare la possibilità di distribuire adattatori di rete che supportano RSC.
In questi adattatori di rete, assicurarsi che RSC sia attivo (questa è l'impostazione predefinita), a meno che non si disponga di carichi di lavoro specifici (ad esempio, bassa latenza, rete a bassa velocità effettiva) che mostrano il vantaggio dell'disattivazione di RSC.
Informazioni sulla diagnostica RSC
È possibile diagnosticare RSC usando i cmdlet di Windows PowerShell Get-NetAdapterRsc e Get-NetAdapterStatistics.
Di seguito è riportato un output di esempio quando si esegue il cmdlet Get-NetAdapterRsc.
PS C:\Users\Administrator> Get-NetAdapterRsc
Name IPv4Enabled IPv6Enabled IPv4Operational IPv6Operational IPv4FailureReason IPv6Failure
Reason
---- ----------- ----------- --------------- --------------- ----------------- ------------
Ethernet True False True False NoFailure NicProperties
Il cmdlet Get indica se RSC è abilitato nell'interfaccia e se TCP abilita RSC in uno stato operativo. Il motivo dell'errore fornisce informazioni dettagliate sull'errore di abilitazione di RSC su tale interfaccia.
Nello scenario precedente, IPv4 RSC è supportato e operativo nell'interfaccia . Per comprendere gli errori di diagnostica, è possibile visualizzare i byte o le eccezioni uniti causati. Ciò fornisce un'indicazione dei problemi di unione.
Di seguito è riportato un output di esempio quando si esegue il cmdlet Get-NetAdapterStatistics.
PS C:\Users\Administrator> $x = Get-NetAdapterStatistics "myAdapter"
PS C:\Users\Administrator> $x.rscstatistics
CoalescedBytes : 0
CoalescedPackets : 0
CoalescingEvents : 0
CoalescingExceptions : 0
RSC e virtualizzazione
RSC è supportato solo nell'host fisico quando la scheda di rete host non è associata al commutatore virtuale Hyper-V. RSC è disabilitato dal sistema operativo quando l'host è associato al commutatore virtuale Hyper-V. Inoltre, le VM non ottengono il vantaggio di RSC perché gli adattatori di rete virtuale non supportano RSC.
RSC può essere abilitato per una macchina virtuale quando è abilitata la virtualizzazione SR-IOV (Single Root Input/Output Virtualization). In questo caso, le funzioni virtuali supportano la funzionalità RSC; di conseguenza, le macchine virtuali ricevono anche il vantaggio di RSC.
Risorse dell'adattatore di rete
Alcuni adattatori di rete gestiscono attivamente le risorse per ottenere prestazioni ottimali. Diversi adattatori di rete consentono di configurare manualmente le risorse usando la scheda Rete avanzata per l'adattatore. Per tali adattatori, è possibile impostare i valori di un numero di parametri, incluso il numero di buffer di ricezione e di invio di buffer.
La configurazione delle risorse dell'adattatore di rete è semplificata dall'uso dei cmdlet di Windows PowerShell seguenti.
Per maggiori informazioni, consultare la sezione Cmdlet adattatore di rete in Windows PowerShell.
Per i collegamenti a tutti gli argomenti di questa guida, consultare la sezione Ottimizzazione delle prestazioni del sottosistema di rete.