Condividi tramite


Prestazioni nelle schede di rete

Esistono sempre compromessi per decidere quali funzioni hardware implementare in una scheda di rete. Diventa sempre più importante aggiungere funzionalità di offload delle attività che consentono la moderazione degli interruzioni, l'ottimizzazione dinamica sull'hardware, il miglioramento dell'uso del bus PCI e il supporto di Jumbo Frame. Questi sono particolarmente importanti per la scheda di rete high-end che verrà usata nelle configurazioni che richiedono prestazioni superiori.

Supporto del offsum del checksum TCP e IP

Per il traffico di rete più comune, il calcolo del checksum di offload nell'hardware della scheda di rete offre un vantaggio significativo sulle 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).

Il calcolo del checksum di offload 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 disattivato 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 il 8% è dovuto all'aumento dell'efficacia delle cache.

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

Supporto di offload di invio di grandi dimensioni (LSO)

Windows offre la possibilità per la scheda di rete/driver di pubblicizzare una dimensione massima massima del segmento (MSS) rispetto a MTU a TCP fino a 64K. Ciò consente a TCP di allocare un buffer di fino a 64K al driver, che divide il buffer di grandi dimensioni in pacchetti che si adattano all'interno dell'MTU di rete.

Il lavoro di segmentazione TCP viene eseguito dall'hardware della scheda di rete/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 molti degli adattatori di rete testati, è stato rilevato un piccolo miglioramento per le attività di rete pure quando la CPU host era più potente dell'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 all'hardware libera la CPU host dal carico di segmentazione, consentendo cicli aggiuntivi di eseguire più transazioni.

Supporto del offload di sicurezza IP (IPSec)

Windows offre la possibilità di scaricare il 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. Pertanto, non sorprende che l'offload DI IPSec all'hardware della scheda di rete misura un aumento delle prestazioni del 30% nei test di Internet e VPN sicuri.

Miglioramento della moderazione degli interruzioni

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

Con carichi di lavoro di rete pesanti, il miglioramento delle prestazioni della velocità effettiva fino al 9% è stato misurato sui carichi di lavoro a elevato utilizzo di rete. Tuttavia, l'ottimizzazione dei parametri di moderazione degli interruzioni solo per i miglioramenti della velocità effettiva può causare un hit delle prestazioni nel tempo di risposta. Per mantenere le impostazioni ottimali e supportare carichi di lavoro diversi, è consigliabile consentire parametri regolati in modo dinamico come descritto nell'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 in modo efficiente il bus PCI. Inoltre, le prestazioni DMA della scheda di rete influiscono sulle prestazioni di tutte le schede PCI presenti nello stesso bus PCI. Le linee guida seguenti devono essere considerate quando si ottimizza l'utilizzo di PCI:

  • 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, il flusso di dati in modo che l'intero pacchetto venga trasferito in una singola transazione PCI. Tuttavia, prendere in considerazione il modo in cui il trasferimento deve essere eseguito. Ad esempio, non attendere l'arrivo di tutti i dati prima di avviare i trasferimenti, perché l'attesa aumenterà la latenza e utilizzerà spazio buffer aggiuntivo.

  • È preferibile bloccare il trasferimento dei pacchetti DMA con byte aggiuntivi, anziché richiedere un trasferimento aggiuntivo breve per "pulire" trasferendo gli ultimi byte del pacchetto.

  • Usare la lettura della memoria, la riga di lettura della memoria e le transazioni di lettura della memoria come consigliato dalla specifica PCI.

  • L'hardware dell'interfaccia del bus di scheda di rete deve rilevare le limitazioni nel controller di memoria host e regolare di conseguenza il comportamento. Ad esempio, l'hardware dell'interfaccia del bus della scheda di rete deve rilevare limitazioni di pre-recupero del controller di memoria in una lettura 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 sulle transazioni future quando viene interrotto dall'host. Non è possibile continuare a inviare transazioni al controller di memoria quando si è certi che sia ancora occupato recuperare il set sequenziale successivo di dati.

  • Ridurre al minimo l'inserimento degli stati di attesa, soprattutto durante i trasferimenti di dati. È meglio rimettere il bus e lasciare che un'altra scheda PCI usando il bus faccia un lavoro se verranno inseriti più di uno o due stati di attesa.

  • Usare l'I/O mappato alla memoria anziché l'I/O programmato. Questo è anche vero per i driver.

Supporto di frame jumbo

Supportando unità di trasmissione massime maggiori (MTUS) e quindi dimensioni più grandi del frame, in particolare i frame Jumbo, ridurranno il sovraccarico dello stack di rete in base al byte. Un aumento della velocità effettiva TCP del 20% è stato misurato quando l'MTU è stato modificato da 1514 a 9000. Inoltre, viene ottenuta una riduzione significativa dell'utilizzo della CPU a causa del minor numero di chiamate dallo stack di rete al driver di rete.