Considerazioni sul sistema Nitro per l'ottimizzazione delle prestazioni - Amazon Elastic Compute Cloud

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Considerazioni sul sistema Nitro per l'ottimizzazione delle prestazioni

Nitro System è una raccolta di componenti hardware e software generati da AWS che abilitano prestazioni elevate, alta disponibilità ed elevata sicurezza. Il sistema Nitro offre funzionalità simili a quelle del bare metal che eliminano il sovraccarico di virtualizzazione e supportano carichi di lavoro che richiedono l'accesso completo all'hardware host. Per informazioni più dettagliate, consulta Nitro System.AWS

Tutti i tipi di EC2 istanze della generazione attuale eseguono l'elaborazione dei pacchetti di rete su schede EC2 Nitro. Questo argomento tratta la gestione dei pacchetti di alto livello sulla scheda Nitro, gli aspetti comuni dell'architettura e della configurazione di rete che influiscono sulle prestazioni di gestione dei pacchetti e le azioni che è possibile intraprendere per ottenere le massime prestazioni per le istanze basate su Nitro.

Le schede Nitro gestiscono tutte le interfacce di input e output (I/O), come quelle necessarie per Virtual Private Clouds (). VPCs Per tutti i componenti che inviano o ricevono informazioni sulla rete, le schede Nitro fungono da dispositivo informatico autonomo per il traffico I/O, fisicamente separato dalla scheda madre del sistema su cui vengono eseguiti i carichi di lavoro dei clienti.

Flusso di pacchetti di rete sulle schede Nitro

EC2le istanze basate sul sistema Nitro dispongono di funzionalità di accelerazione hardware che consentono un'elaborazione dei pacchetti più rapida, misurata in termini di velocità di trasmissione di pacchetti al secondo (). PPS Quando una scheda Nitro esegue la valutazione iniziale di un nuovo flusso, salva le informazioni che sono le stesse per tutti i pacchetti del flusso, come i gruppi di sicurezza, gli elenchi di controllo degli accessi e le voci della tabella di routing. Quando elabora pacchetti aggiuntivi per lo stesso flusso, può utilizzare le informazioni salvate per ridurre il sovraccarico di tali pacchetti.

La velocità di connessione viene misurata in base alla metrica delle connessioni al secondo ()CPS. Ogni nuova connessione richiede un sovraccarico di elaborazione aggiuntivo che deve essere preso in considerazione nelle stime della capacità del carico di lavoro. È importante considerare sia le metriche che le PPS metriche quando si CPS progettano i carichi di lavoro.

Come viene stabilita una connessione

Quando viene stabilita una connessione tra un'istanza basata su Nitro e un altro endpoint, la scheda Nitro valuta l'intero flusso del primo pacchetto inviato o ricevuto tra i due endpoint. Per i pacchetti successivi dello stesso flusso, in genere non è necessaria una rivalutazione completa. Esistono tuttavia delle eccezioni. Per ulteriori informazioni sulle eccezioni, vedere. Pacchetti che non utilizzano l'accelerazione hardware

Le seguenti proprietà definiscono i due punti finali e il flusso di pacchetti tra di essi. Queste cinque proprietà insieme sono note come flusso a 5 tuple.

  • IP di origine

  • Porta sorgente

  • IP di destinazione

  • Porta di destinazione

  • Protocollo di comunicazione

La direzione del flusso di pacchetti è nota come ingresso (in entrata) e uscita (in uscita). Le seguenti descrizioni di alto livello riassumono il flusso di pacchetti di rete end-to-end.

  • Ingress: quando una scheda Nitro gestisce un pacchetto di rete in entrata, valuta il pacchetto rispetto alle regole del firewall stateful e agli elenchi di controllo degli accessi. Tiene traccia della connessione, la contabilizza ed esegue altre azioni, a seconda dei casi. Quindi inoltra il pacchetto alla sua destinazione sull'host. CPU

  • Uscita: quando una scheda Nitro gestisce un pacchetto di rete in uscita, cerca la destinazione dell'interfaccia remota, valuta varie VPC funzioni, applica limiti di velocità ed esegue altre azioni appropriate. Quindi inoltra il pacchetto alla destinazione hop successiva sulla rete.

Progetta la tua rete per prestazioni ottimali

Per sfruttare le funzionalità prestazionali del sistema Nitro, è necessario comprendere quali sono le esigenze di elaborazione di rete e in che modo tali esigenze influiscono sul carico di lavoro delle risorse Nitro. Quindi puoi progettare per ottenere prestazioni ottimali per il tuo panorama di rete. Le impostazioni dell'infrastruttura e la progettazione e configurazione del carico di lavoro delle applicazioni possono influire sia sull'elaborazione dei pacchetti che sulle velocità di connessione. Ad esempio, se l'applicazione ha un'elevata velocità di creazione delle connessioni, ad esempio un DNS servizio, un firewall o un router virtuale, avrà meno possibilità di sfruttare l'accelerazione hardware che si verifica solo dopo aver stabilito la connessione.

È possibile configurare le impostazioni dell'applicazione e dell'infrastruttura per semplificare i carichi di lavoro e migliorare le prestazioni di rete. Tuttavia, non tutti i pacchetti sono idonei all'accelerazione. Il sistema Nitro utilizza l'intero flusso di rete per nuove connessioni e per pacchetti non idonei all'accelerazione.

La parte restante di questa sezione si concentrerà sulle considerazioni relative alla progettazione di applicazioni e infrastrutture per garantire che i pacchetti fluiscano il più possibile all'interno del percorso accelerato.

Considerazioni sulla progettazione di rete per il sistema Nitro

Quando configuri il traffico di rete per la tua istanza, ci sono molti aspetti da considerare che possono influire sulle PPS prestazioni. Una volta stabilito un flusso, la maggior parte dei pacchetti che entrano o escono regolarmente sono idonei all'accelerazione. Tuttavia, esistono eccezioni per garantire che i progetti dell'infrastruttura e i flussi di pacchetti continuino a soddisfare gli standard del protocollo.

Per ottenere le migliori prestazioni dalla tua scheda Nitro, dovresti considerare attentamente i pro e i contro dei seguenti dettagli di configurazione per la tua infrastruttura e le tue applicazioni.

Considerazioni sull'infrastruttura

La configurazione dell'infrastruttura può influire sul flusso di pacchetti e sull'efficienza di elaborazione. L'elenco seguente include alcune considerazioni importanti.

Configurazione dell'interfaccia di rete con asimmetria

I gruppi di sicurezza utilizzano il tracciamento delle connessioni per tenere traccia delle informazioni sul traffico che fluisce da e verso l'istanza. Il routing asimmetrico, in cui il traffico entra in un'istanza attraverso un'interfaccia di rete e esce attraverso un'altra interfaccia di rete, può ridurre le prestazioni di picco che un'istanza può raggiungere se i flussi vengono tracciati. Per ulteriori informazioni sul tracciamento delle connessioni dei gruppi di sicurezza, sulle connessioni non tracciate e sulle connessioni tracciate automaticamente, vedere. Monitoraggio delle connessioni dei gruppi di EC2 sicurezza Amazon

Driver di rete

I driver di rete vengono aggiornati e rilasciati regolarmente. Se i driver non sono aggiornati, ciò può compromettere notevolmente le prestazioni. Mantieni aggiornati i driver per assicurarti di disporre delle patch più recenti e di poter sfruttare i miglioramenti delle prestazioni, come la funzionalità di percorso accelerato disponibile solo per i driver di ultima generazione. I driver precedenti non supportano la funzionalità di percorso accelerato.

Per sfruttare la funzionalità di percorso accelerato, ti consigliamo di installare il ENA driver più recente sulle tue istanze.

Istanze Linux: driver ENA Linux 2.2.9 o successivo. Per installare o aggiornare il driver ENA Linux dal GitHub repository Amazon Drivers, consulta la sezione sulla compilazione dei driver del file readme.

Istanze Windows: driver ENA Windows 2.0.0 o successivo. Per installare o aggiornare il driver di ENA Windows, vedere. Installare il ENA driver nelle istanze EC2 di Windows

Distanza tra i punti finali

Una connessione tra due istanze nella stessa zona di disponibilità può elaborare più pacchetti al secondo rispetto a una connessione tra regioni TCP grazie alla finestra a livello di applicazione, che determina la quantità di dati che possono essere in trasferimento in un dato momento. Le lunghe distanze tra le istanze aumentano la latenza e riducono il numero di pacchetti che gli endpoint possono elaborare.

Considerazioni sulla progettazione delle applicazioni

Esistono aspetti della progettazione e della configurazione delle applicazioni che possono influire sull'efficienza di elaborazione. L'elenco seguente include alcune considerazioni importanti.

Dimensioni del pacchetto

Pacchetti di dimensioni maggiori possono aumentare la velocità di trasmissione dei dati che un'istanza può inviare e ricevere sulla rete. Pacchetti di dimensioni inferiori possono aumentare la velocità di elaborazione dei pacchetti, ma ciò può ridurre la larghezza di banda massima ottenuta quando il numero di pacchetti supera le tolleranze. PPS

Se la dimensione di un pacchetto supera l'unità di trasmissione massima (MTU) di un hop di rete, un router lungo il percorso potrebbe frammentarlo. I frammenti di pacchetto risultanti sono considerati eccezioni e vengono elaborati alla velocità standard (non accelerata). Ciò può causare variazioni nelle prestazioni. Amazon EC2 supporta i jumbo frame da 9001 byte, tuttavia non tutti i servizi lo supportano. Ti consigliamo di valutare la topologia durante la configurazione. MTU

Compromessi relativi al protocollo

I protocolli affidabili TCP hanno un sovraccarico maggiore rispetto ai protocolli inaffidabili come. UDP La riduzione dei costi generali e l'elaborazione semplificata della rete per il protocollo di UDP trasporto possono comportare una PPS velocità più elevata, ma a scapito di una consegna affidabile dei pacchetti. Se la consegna affidabile dei pacchetti non è fondamentale per la tua applicazione, UDP potrebbe essere una buona opzione.

Microscoppio

Il microbursting si verifica quando il traffico supera i limiti consentiti per brevi periodi di tempo anziché essere distribuito uniformemente. Ciò si verifica in genere su una scala di microsecondi.

Ad esempio, supponiamo di avere un'istanza in grado di inviare fino a 10 Gbps e che l'applicazione invii tutti i 10 Gb in mezzo secondo. Questo microburst supera il limite consentito durante il primo mezzo secondo e non lascia nulla per il resto del secondo. Anche se avete inviato 10 GB nell'arco di tempo di 1 secondo, le quote consentite nel primo mezzo secondo possono far sì che i pacchetti vengano messi in coda o eliminati.

È possibile utilizzare uno strumento di pianificazione di rete come Linux Traffic Control per velocizzare la velocità di trasmissione ed evitare che i pacchetti vengano messi in coda o persi a causa del microbursting.

Numero di flussi

Un singolo flusso è limitato a 5 Gbps a meno che non si trovi all'interno di un gruppo di posizionamento del cluster che supporta fino a 10 Gbps o se utilizzi ENA Express, che supporta fino a 25 Gbps.

Allo stesso modo, una scheda Nitro può elaborare più pacchetti su più flussi invece di utilizzare un singolo flusso. Per raggiungere la massima velocità di elaborazione dei pacchetti per istanza, consigliamo almeno 100 flussi su istanze con una larghezza di banda aggregata pari o superiore a 100 Gbps. Con l'aumentare delle capacità di larghezza di banda aggregata, aumenta anche il numero di flussi necessari per raggiungere le velocità di elaborazione di picco. Il benchmarking ti aiuterà a determinare la configurazione necessaria per raggiungere le frequenze di picco sulla tua rete.

Numero di code Elastic Network Adapter (ENA)

Per impostazione predefinita, il numero massimo di ENA code viene assegnato a un'interfaccia di rete in base alla dimensione e al tipo di istanza. La riduzione del numero di code può ridurre la velocità massima PPS raggiungibile. Si consiglia di utilizzare l'allocazione della coda predefinita per ottenere prestazioni ottimali.

Per Linux, per impostazione predefinita, un'interfaccia di rete è configurata con il valore massimo. Per le applicazioni basate sul Data Plane Development Kit (DPDK), si consiglia di configurare il numero massimo di code disponibili.

Funzionalità generali del processo

Funzionalità come Traffic Mirroring ed ENA Express possono aumentare il sovraccarico di elaborazione, il che può ridurre le prestazioni assolute di elaborazione dei pacchetti. È possibile limitare l'uso delle funzionalità o disabilitarle per aumentare la velocità di elaborazione dei pacchetti.

Monitoraggio della connessione per mantenere lo stato

I tuoi gruppi di sicurezza utilizzano il tracciamento delle connessioni per archiviare informazioni sul traffico da e verso l'istanza. Il monitoraggio delle connessioni applica regole a ogni singolo flusso di traffico di rete per determinare se il traffico è consentito o negato. La scheda Nitro utilizza il tracciamento del flusso per mantenere lo stato del flusso. Man mano che vengono applicate più regole del gruppo di sicurezza, è necessario più lavoro per valutare il flusso.

Nota

Non tutti i flussi di traffico di rete vengono tracciati. Se una regola del gruppo di sicurezza è configurata conConnessioni non tracciate, non è necessario alcun intervento aggiuntivo, ad eccezione delle connessioni che vengono tracciate automaticamente per garantire un routing simmetrico in presenza di più percorsi di risposta validi.

Pacchetti che non utilizzano l'accelerazione hardware

Non tutti i pacchetti possono sfruttare l'accelerazione hardware. La gestione di queste eccezioni comporta un sovraccarico di elaborazione necessario per garantire l'integrità dei flussi di rete. I flussi di rete devono soddisfare in modo affidabile gli standard di protocollo, essere conformi alle modifiche di VPC progettazione e indirizzare i pacchetti solo verso destinazioni consentite. Tuttavia, il sovraccarico riduce le prestazioni.

Frammenti di pacchetti

Come indicato nella sezione Considerazioni relative all'applicazione, i frammenti di pacchetto che derivano da pacchetti che superano la rete MTU vengono gestiti come eccezioni e non possono sfruttare l'accelerazione hardware.

Connessioni inattive

Quando una connessione non è attiva per un certo periodo di tempo, anche se non ha raggiunto il limite di timeout, il sistema può ridurle la priorità. Quindi, se i dati arrivano dopo l'eliminazione della priorità della connessione, il sistema deve gestirli come un'eccezione per riconnettersi.

Per gestire le connessioni, puoi utilizzare i timeout di tracciamento delle connessioni per chiudere le connessioni inattive. Puoi anche usare TCP keepalive per mantenere aperte le connessioni inattive. Per ulteriori informazioni, consulta Timeout di tracciamento delle connessioni inattive.

VPCmutazione

Gli aggiornamenti ai gruppi di sicurezza, alle tabelle di routing e agli elenchi di controllo degli accessi devono essere tutti rivalutati nel percorso di elaborazione per garantire che le immissioni delle rotte e le regole dei gruppi di sicurezza continuino ad essere applicate come previsto.

ICMPflussi

Internet Control Message Protocol (ICMP) è un protocollo a livello di rete utilizzato dai dispositivi di rete per diagnosticare problemi di comunicazione di rete. Questi pacchetti utilizzano sempre il flusso completo.

Massimizza le prestazioni di rete sul tuo sistema Nitro

Prima di prendere decisioni di progettazione o modificare le impostazioni di rete sulla tua istanza, ti consigliamo di eseguire le seguenti operazioni per assicurarti di ottenere il miglior risultato:

  1. Scopri i pro e i contro delle azioni che puoi intraprendere per migliorare le prestazioni esaminando. Considerazioni sulla progettazione di rete per il sistema Nitro

    Per ulteriori considerazioni e best practice per la configurazione dell'istanza su Linux, consulta ENALinux Driver Best Practices and Performance Optimization Guide su. GitHub

  2. Effettua un benchmark dei tuoi carichi di lavoro con il conteggio dei flussi attivi di picco per determinare una base per le prestazioni delle tue applicazioni. Con una baseline delle prestazioni, puoi testare le variazioni nelle impostazioni o nella progettazione dell'applicazione per capire quali considerazioni avranno il maggiore impatto, soprattutto se prevedi di scalare verso l'alto o verso l'alto.

L'elenco seguente contiene le azioni che è possibile intraprendere per ottimizzare le PPS prestazioni, a seconda delle esigenze del sistema.

  • Riduci la distanza fisica tra due istanze. Quando le istanze di invio e ricezione si trovano nella stessa zona di disponibilità o utilizzano gruppi di collocamento in cluster, è possibile ridurre il numero di passaggi necessari a un pacchetto per viaggiare da un endpoint all'altro.

  • Utilizza Connessioni non tracciate.

  • Utilizza il UDP protocollo per il traffico di rete.

  • Per EC2 le istanze con larghezza di banda aggregata pari o superiore a 100 Gbps, distribuisci il carico di lavoro su 100 o più flussi individuali per distribuire il lavoro in modo uniforme sulla scheda Nitro.

Monitora le prestazioni sulle istanze Linux

È possibile utilizzare le metriche Ethtool sulle istanze Linux per monitorare gli indicatori delle prestazioni di rete delle istanze come larghezza di banda, velocità dei pacchetti e tracciamento della connessione. Per ulteriori informazioni, consulta Monitora le prestazioni di rete per ENA le impostazioni sulla tua EC2 istanza.