View a markdown version of this page

Ottimizza le prestazioni della tua istanza EC2 - AWS Ground Station

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à.

Ottimizza le prestazioni della tua istanza EC2

Nota

Se hai effettuato il provisioning delle tue risorse AWS utilizzando CloudFormation modelli, queste ottimizzazioni vengono applicate automaticamente. Se hai utilizzato un'AMI o hai creato manualmente l'istanza EC2, queste regolazioni delle prestazioni devono essere applicate per ottenere le prestazioni più affidabili.

Ricordati di riavviare l'istanza dopo aver applicato qualsiasi ottimizzazione.

Argomenti

Ottimizza le interruzioni hardware e le code di ricezione: influisce su CPU e rete

Questa sezione configura l'utilizzo principale della CPU di systemd, SMP IRQ, Receive Packet Steering (RPS) e Receive Flow Steering (RFS). Consulta Appendice: Parametri consigliati per la sintonizzazione interrupt/RPS una serie di impostazioni consigliate in base al tipo di istanza che stai utilizzando.

Importante

Solo Amazon Linux 2023: installa e abilita il demone cron prima di continuare.

sudo dnf install -y cronie sudo systemctl enable --now crond

Questa sezione e le due successive aggiungono voci @reboot crontab, che richiedono un demone cron in esecuzione per avere effetto a ogni avvio. Su Amazon Linux 2023, il demone cron non è installato per impostazione predefinita, quindi senza i comandi precedenti queste voci vengono scritte ma non vengono mai eseguite. Su Amazon Linux 2, il demone cron è già installato e abilitato; non è necessaria alcuna azione.

  1. Blocca i processi systemd lontano dai core della CPU dell'agente.

  2. Instrada le richieste di interruzione hardware lontano dai core della CPU dell'agente.

  3. Configura RPS per evitare che la coda hardware di una singola scheda di interfaccia di rete diventi un collo di bottiglia nel traffico di rete.

  4. Configura RFS per aumentare la frequenza di risposta della cache della CPU e quindi ridurre la latenza di rete.

Lo set_irq_affinity.sh script fornito dall'RPM configura tutto quanto sopra per te. Aggiungi a crontab, in modo che venga applicato ad ogni avvio:

echo "@reboot sudo /opt/aws/groundstation/bin/set_irq_affinity.sh '${interrupt_core_list}' '${rps_core_mask}' >> /var/log/user-data.log 2>&1" >>/var/spool/cron/root
  • Sostituisci interrupt_core_list con core riservati al kernel e al sistema operativo, in genere il primo e il secondo insieme a coppie di core hyper-thread. Questo non dovrebbe sovrapporsi ai core selezionati sopra. (Es: '0,1,48,49' per un'istanza hyper-thread con 96 CPU).

  • rps_core_maskè una maschera di bit esadecimale che specifica quali CPU devono elaborare i pacchetti in ingresso, con ogni cifra che rappresenta 4 CPU. Inoltre, deve essere separato da una virgola ogni 8 caratteri a partire da destra. Si consiglia di abilitare tutte le CPU e lasciare che la cache gestisca il bilanciamento.

  • Esempio di istanza a 96 CPU:

    echo "@reboot sudo /opt/aws/groundstation/bin/set_irq_affinity.sh '0,1,48,49' 'ffffffff,ffffffff,ffffffff' >> /var/log/user-data.log 2>&1" >>/var/spool/cron/root

Coalizione dell'interruzione Tune Rx: impatto sulla rete

La coalescenza degli interruzioni aiuta a prevenire l'inondazione del sistema host con troppe interruzioni e aiuta ad aumentare la velocità di trasmissione della rete. Con questa configurazione, i pacchetti vengono raccolti e viene generato un singolo interrupt ogni 128 microsecondi. Aggiungilo a crontab, in modo che venga applicato a ogni avvio:

echo "@reboot sudo ethtool -C ${interface} rx-usecs 128 tx-usecs 128 >>/var/log/user-data.log 2>&1" >>/var/spool/cron/root
  • Sostituisci interface con l'interfaccia di rete (adattatore Ethernet) configurata per ricevere dati. In genere, si eth0 tratta dell'interfaccia di rete predefinita assegnata a un'istanza EC2.

Ring buffer Tune Rx: influisce sulla rete

Aumentate il numero di ingressi ad anello per il ring buffer Rx per evitare perdite o sovraccarichi di pacchetti durante le connessioni intermittenti. Aggiungete al crontab, in modo che sia impostato correttamente ad ogni avvio:

echo "@reboot sudo ethtool -G ${interface} rx 16384 >>/var/log/user-data.log 2>&1" >>/var/spool/cron/root
  • Sostituisci interface con l'interfaccia di rete (adattatore Ethernet) configurata per ricevere dati. In genere, si eth0 tratta dell'interfaccia di rete predefinita assegnata a un'istanza EC2.

  • Se si configura un'istanza c6i familiare, è necessario modificare il comando per impostare il ring buffer su8192, anziché su. 16384

Imposta i parametri di avvio del kernel (denominazione della CPU C-State e dell'interfaccia): influisce su CPU e rete

Questi parametri di avvio del kernel impediscono l'inattività della CPU impostando. intel_idle.max_cstate=1 processor.max_cstate=1 max_cstate=1 L'inattività della CPU può causare la perdita di pacchetti all'inizio di un contatto. Sono inclusi net.ifnames=0 biosdevname=0 anche i parametri che consentono di rinominare l'interfaccia di rete del ricevitore in. eth0 Come gli altri passaggi di ottimizzazione descritti in questo capitolo, questi parametri hanno effetto al riavvio descritto in. Riavviare È possibile applicarli in qualsiasi ordine rispetto alle altre sezioni.

Si usa grubby per impostare gli argomenti del kernel. Funziona sia su Amazon Linux 2023 (UEFI) che su Amazon Linux 2 perché grubby gestisce la configurazione del bootloader direttamente su entrambi.

sudo grubby --update-kernel=ALL --args="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 intel_idle.max_cstate=1 processor.max_cstate=1 max_cstate=1"
Nota

L'net.ifnames=0argomento rinomina l'interfaccia di rete come al successivo avvioeth0. Le altre sezioni di ottimizzazione e la configurazione dell'agente sono destinateeth0, quindi l'applicazione di questi parametri e il riavvio è il percorso consigliato. Se scegli di non applicare questi parametri, l'interfaccia mantiene il nome predefinito (ad esempio, ens5 su Amazon Linux 2023). In tal caso, sostituisci il nome effettivo dell'interfaccia, trovato eseguendo, ip link show ovunque venga utilizzata eth0 questa guida.

Porte di ingresso riservate: influiscono sulla rete

Riserva tutte le porte nell'intervallo di porte AwsGroundStationAgentEndpoint del tuo indirizzo di ingresso per evitare conflitti con l'utilizzo del kernel. Un conflitto di utilizzo delle porte comporterà il mancato contatto e la consegna dei dati.

echo "net.ipv4.ip_local_reserved_ports=${port_range_min}-${port_range_max}" >> /etc/sysctl.conf
  • Esempio: echo "net.ipv4.ip_local_reserved_ports=42000-43500" >> /etc/sysctl.conf.

Riavviare

Dopo che tutte le regolazioni sono state applicate correttamente, riavvia l'istanza per rendere effettive le regolazioni.

sudo reboot

Questa sezione determina i valori dei parametri consigliati da utilizzare nella sezione di tuning Tune Hardware Interrupts and Receive Queues - Impacts CPU and Network.

Family Tipo di istanza $ {interrupt_core_list} $ {rps_core_mask}

c7i

  • c7i.24xlarge

  • c7i.12xlarge

  • 0,1,48,49

  • 0,1,24,25

  • ffffffff, ffffffff, ffffffff

  • ffff, ffffffff

c6i

  • c6i.32xlarge

  • 0,1,64,65

  • ffffffff, ffffffff, ffffffff, ffffffff

c5

  • c5.24xlarge

  • c5.18xlarge

  • c5.12xlarge

  • 0, 1, 48, 49

  • 0,1,36,37

  • 0,1,24,25

  • ffffffff, ffffffff, ffffffff

  • ff, ffffffff, ffffffff

  • ffff, ffffff

c5n

  • c5n.metal

  • c5n.18xlarge

  • 0,1,36,37

  • 0,1,36,37

  • ff, ffffffff, ffffffff

  • ff, ffffffff, ffffffff

m5

  • m5.24xlarge

  • m5.12xlarge

  • 0,1,48,49

  • 0,1,24,25

  • ffffffff, ffffffff, ffffffff

  • ffff, ffffffff

r5

  • r5.metal

  • r5.24xlarge

  • 0,1,48,49

  • 0,1,48,49

  • ffffffff, ffffffff, ffffffff

  • ffffffff, ffffffff, ffffffff

r5n

  • r5n.metal

  • r5n.24xlarge

  • 0,1, 48,49

  • 0,1,48,49

  • ffffffff, ffffffff, ffffffff

  • ffffffff, ffffffff, ffffffff

g4dn

  • g4dn.metal

  • g4dn.16xlarge

  • g4dn.12xlarge

  • 0,1,48,49

  • 0,1,32,33

  • 0,1,24,25

  • ffffffff, ffffffff, ffffffff

  • ffffffff, ffffffff

  • ffff, ffffffff

p4d

  • p4d.24xlarge

  • 0,1,48,49

  • ffffffff, ffffffff, ffffffff

p3dn

  • p3dn.24xlarge

  • 0,1,48,49

  • ffffffff, ffffffff, ffffffff