Condividi tramite


Prestazioni nelle schede di rete

Ci sono sempre compromessi nel decidere quali funzioni hardware implementare su una scheda di rete. È sempre più importante prendere in considerazione l'aggiunta di funzionalità di offload delle attività che consentono la moderazione degli interrupt, l'ottimizzazione dinamica sull'hardware, il miglioramento dell'uso del bus PCI e il supporto dei fotogrammi Jumbo. Queste funzionalità di offload sono importanti per la scheda di rete di fascia alta usata nelle configurazioni che richiedono prestazioni ottimali.

Supporto dell'offload di checksum TCP e IP

Per il traffico di rete più comune, l'offload del calcolo del checksum nell'hardware della scheda di rete offre un notevole vantaggio in termini di prestazioni riducendo il numero di cicli di CPU necessari per byte. Il calcolo checksum è la funzione più costosa nello stack di rete per due motivi:

  • Contribuisce alla lunghezza del percorso lungo.
  • Causa effetti di varianza della cache (in genere sul mittente).

L'offload del calcolo del checksum al mittente migliora le prestazioni complessive del sistema riducendo il carico sulla CPU host e aumentando l'efficacia della cache.

In Windows Performance Lab sono stati misurati miglioramenti della velocità effettiva TCP del 19% quando il checksum è stato scaricato durante carichi di lavoro a elevato utilizzo di rete. L'analisi di questo miglioramento mostra che il 11% del miglioramento totale è dovuto alla riduzione della lunghezza del percorso e l'8% è dovuto all'aumento dell'efficacia delle cache.

L'offload del checksum nel ricevitore presenta gli stessi vantaggi dell'offload del checksum nel mittente. Un maggiore vantaggio può essere visualizzato nei sistemi che fungono sia da client che da server, ad esempio un server proxy sockets. Nei sistemi in cui la CPU non è necessariamente occupata, ad esempio un sistema client, il vantaggio dell'offload dei checksum può essere visualizzato in tempi di risposta di rete migliori, anziché in una velocità effettiva notevolmente migliorata.

Supporto di offload di invio di grandi dimensioni (LSO)

Windows offre la possibilità per la scheda di rete o il driver di annunciare una dimensione massima massima del segmento (MSS) maggiore rispetto a MTU fino a TCP fino a 64K. Ciò consente a TCP di allocare un buffer fino a 64K al driver, che divide il buffer di grandi dimensioni in pacchetti che rientrano nella MTU di rete.

Il lavoro di segmentazione TCP viene eseguito dall'hardware della scheda di rete/del driver anziché dalla CPU host. Ciò comporta un miglioramento significativo delle prestazioni se la CPU della scheda di rete è in grado di gestire il lavoro aggiuntivo.

Per molte delle schede di rete testate, c'è stato un piccolo miglioramento visto per le attività di rete pure quando la CPU host era più potente rispetto all'hardware della scheda di rete. Tuttavia, per i carichi di lavoro aziendali tipici, è stato misurato un miglioramento complessivo delle prestazioni del sistema fino al 9% della velocità effettiva, perché la CPU host usa la maggior parte dei cicli per eseguire le transazioni. In questi casi, l'offload della segmentazione TCP nell'hardware libera la CPU host dal carico di segmentazione, consentendo cicli aggiuntivi di eseguire più transazioni.

Supporto dell'offload della sicurezza IP (IPSec)

Windows offre la possibilità di eseguire l'offload del lavoro di crittografia di IPSec nell'hardware della scheda di rete. La crittografia, in particolare 3 DES (nota anche come triple DES), ha un rapporto cicli/byte molto elevato. Di conseguenza, non sorprende che l'offload di IPSec all'hardware della scheda di rete ha misurato un miglioramento delle prestazioni del 30% nei test sicuri di Internet e VPN.

Miglioramento della moderazione degli interrupt

Una scheda di rete semplice genera un interrupt hardware sull'host all'arrivo di un pacchetto o per segnalare il completamento di una richiesta di invio di pacchetti. La latenza degli interrupt e gli effetti risultanti della varianza della cache comportano un sovraccarico per le prestazioni di rete complessive. In molti scenari(ad esempio, un utilizzo elevato del sistema o un traffico di rete elevato), è consigliabile ridurre il costo dell'interruzione hardware elaborando diversi pacchetti per ogni interrupt.

Con carichi di lavoro di rete pesanti, è stato misurato un miglioramento delle prestazioni fino al 9% della velocità effettiva rispetto ai carichi di lavoro a elevato utilizzo di rete. Tuttavia, l'ottimizzazione dei parametri di moderazione interrupt solo per i miglioramenti della velocità effettiva può comportare un riscontro delle prestazioni nel tempo di risposta. Per mantenere le impostazioni ottimali e adattarsi a carichi di lavoro diversi, è consigliabile consentire parametri regolati in modo dinamico, come descritto in Ottimizzazione automatica più avanti in questo articolo.

Uso efficiente del bus PCI

Uno dei fattori più importanti per le prestazioni hardware della scheda di rete è il modo in cui usa il bus PCI. Inoltre, le prestazioni DMA della scheda di rete influiscono sulle prestazioni di tutte le schede PCI presenti nello stesso bus PCI. Quando si ottimizza l'utilizzo di PCI, è necessario tenere presenti le linee guida seguenti:

  • Semplificare i trasferimenti DMA aggregando le pagine di destinazione, se appropriato.

  • Ridurre il sovraccarico del protocollo PCI eseguendo DMA in blocchi di grandi dimensioni (almeno 256 byte). Se possibile, eseguire il flusso di dati in modo che interi pacchetti vengano trasferiti in una singola transazione PCI. Tuttavia, prendere in considerazione il modo in cui deve avvenire il trasferimento. Ad esempio, non attendere l'arrivo di tutti i dati prima di avviare i trasferimenti, perché l'attesa aumenterà la latenza e utilizzerà spazio del buffer aggiuntivo.

  • È preferibile riempire il trasferimento di pacchetti DMA con byte aggiuntivi, invece di richiedere un breve trasferimento aggiuntivo per "pulire" trasferendo gli ultimi byte del pacchetto.

  • Usare le transazioni Memory Read, Memory Read Line e Memory Read Multiple come consigliato dalla specifica PCI.

  • L'hardware dell'interfaccia del bus della scheda di rete deve rilevare le limitazioni nel controller di memoria host e regolare il comportamento di conseguenza. Ad esempio, l'hardware dell'interfaccia del bus della scheda di rete deve rilevare le limitazioni di prelettura del controller di memoria in una memoria DMA e attendere un breve periodo prima di tentare nuovamente la transazione. L'hardware deve rilevare tentativi eccessivi nella parte della scheda di rete e aumentare il tempo prima del primo tentativo nelle transazioni future quando l'host viene interrotto. Non c'è alcun punto di continuare a inviare transazioni al controller di memoria quando si è certi che è ancora occupato a recuperare il set sequenziale di dati successivo.

  • Ridurre al minimo l'inserimento degli stati di attesa, in particolare durante i trasferimenti di dati. È preferibile rinunciare al bus e lasciare che un altro adattatore PCI usando il bus faccia qualche lavoro se più di uno o due stati di attesa verranno inseriti.

  • Usare le I/O mappate alla memoria anziché le I/O programmate. Questo vale anche per i driver.

Supporto dei fotogrammi jumbo

Supportando unità di trasmissione massime maggiori (MTU) e quindi dimensioni maggiori dei fotogrammi, in particolare i fotogrammi Jumbo, riduce l'overhead dello stack di rete generato per byte. Un aumento della velocità effettiva TCP del 20% è stato misurato quando l'MTU è stato modificato da 1514 a 9000. Viene inoltre ottenuta una riduzione significativa dell'utilizzo della CPU a causa del minor numero di chiamate dallo stack di rete al driver di rete.