Ottimizza la tua EC2 istanza in base alle prestazioni - 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 la tua EC2 istanza in base alle prestazioni

Nota

Se hai effettuato il provisioning AWS delle risorse utilizzando CloudFormation modelli, queste ottimizzazioni vengono applicate automaticamente. Se hai utilizzato un'EC2istanza AMI o l'hai creata manualmente, è necessario applicare questi ottimizzatori delle prestazioni 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: impatti e rete CPU

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

  1. Allontana i processi systemd dai CPU core degli agenti.

  2. Indirizza le richieste di interruzione hardware lontano dai core degli agenti. CPU

  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 accesso alla CPU cache e quindi ridurre la latenza di rete.

Lo set_irq_affinity.sh script fornito da 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
  • Sostituiscilo interrupt_core_list con core riservati al kernel e al sistema operativo, in genere il primo e il secondo insieme a coppie di core hyperthreaded. Questo non dovrebbe sovrapporsi ai core selezionati sopra. (Es: '0,1,48,49' per un'istanza Hyper-Thread, 96). CPU

  • rps_core_maskè una maschera di bit esadecimale che specifica quali CPUs devono elaborare i pacchetti in entrata, con ogni cifra che rappresenta 4. CPUs Deve inoltre essere separato da virgole ogni 8 caratteri a partire da destra. Si consiglia di consentire tutto CPUs e lasciare che la cache gestisca il bilanciamento.

  • Esempio per 96 CPU istanze:

    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

Tune Rx interrupt coalescenza: influisce sulla rete

La coalescenza delle 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 generata una singola interruzione ogni 128 microsecondi. Aggiungi a crontab, in modo che venga applicato ad 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, eth0 si tratta dell'interfaccia di rete predefinita assegnata a un'EC2istanza.

Tune Rx ring buffer: influisce sulla rete

Aumenta il numero di ingressi ad anello per il ring buffer Rx per evitare cadute o sovraccarichi di pacchetti durante le connessioni interrotte. Aggiungi al crontab, in modo che sia impostato correttamente su 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, eth0 si tratta dell'interfaccia di rete predefinita assegnata a un'EC2istanza.

  • Se si configura un'istanza c6i.32xlarge, il comando deve essere modificato per impostare il ring buffer su, anziché. 8192 16384

Tune C-State - impatti CPU CPU

Imposta lo CPU stato C per evitare l'inattività, che può causare la perdita di pacchetti durante l'inizio di un contatto. Richiede il riavvio dell'istanza.

echo "GRUB_CMDLINE_LINUX_DEFAULT=\"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\"" >/etc/default/grub echo "GRUB_TIMEOUT=0" >>/etc/default/grub grub2-mkconfig -o /boot/grub2/grub.cfg

Riserva le porte di ingresso: influisce sulla rete

Riservate tutte le porte nell'intervallo AwsGroundStationAgentEndpoint di porte degli indirizzi di ingresso per evitare conflitti con l'utilizzo del kernel. Il conflitto di utilizzo delle porte porterà a problemi di contatto e di 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.

Riavvio

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

sudo reboot

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

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

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, ffffffff

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