Ajuste el rendimiento de la EC2 instancia - AWS Ground Station

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Ajuste el rendimiento de la EC2 instancia

nota

Si aprovisionó sus AWS recursos mediante CloudFormation plantillas, estos ajustes se aplican automáticamente. Si ha utilizado una EC2 instancia AMI o la ha creado manualmente, debe aplicar estos ajustes de rendimiento para lograr el rendimiento más fiable.

Recuerde reiniciar la instancia después de aplicar cualquier ajuste.

Temas

Ajuste las interrupciones del hardware y las colas de recepción: impactos y red CPU

En esta sección se configura el uso CPU principal de systemd SMPIRQs, Receive Packet Steering (RPS) y Receive Flow Steering (). RFS Consulte Apéndice: Parámetros recomendados para interrumpir RPS o ajustar para ver el conjunto de ajustes recomendados en función del tipo de instancia que utilice.

  1. Aleje los procesos de systemd de los núcleos de los agentes. CPU

  2. Redirija las solicitudes de interrupción de hardware lejos de los CPU núcleos de los agentes.

  3. RPSConfigúrelo para evitar que la cola de hardware de una sola tarjeta de interfaz de red se convierta en un cuello de botella en el tráfico de la red.

  4. Configure RFS para aumentar la tasa de aciertos de la CPU memoria caché y, por lo tanto, reducir la latencia de la red.

El set_irq_affinity.sh script proporcionado por el RPM usuario configura todo lo anterior por usted. Añádelo a crontab para que se aplique en cada arranque:

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
  • interrupt_core_listSustitúyalos por núcleos reservados para el núcleo y el sistema operativo, normalmente el primero y el segundo, junto con los pares de núcleos con hipersubprocesos. Esto no debe superponerse con los núcleos seleccionados anteriormente. (Por ejemplo, «0,1,48,49» para una instancia de 96 con hipersubprocesos). CPU

  • rps_core_maskes una máscara de bits hexadecimal que especifica quién CPUs debe procesar los paquetes entrantes, en la que cada dígito representa 4. CPUs También debe estar separada por comas cada 8 caracteres empezando por la derecha. Se recomienda permitir todo CPUs y dejar que el almacenamiento en caché se encargue del equilibrio.

  • Ejemplo para 96 CPU instancias:

    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

La fusión de interrupciones de Tune Rx afecta a la red

La fusión de interrupciones ayuda a evitar que el sistema de host se inunde con demasiadas interrupciones y a aumentar el rendimiento de la red. Con esta configuración, se recopilan los paquetes y se genera una única interrupción cada 128 microsegundos. Añádelo a crontab para que se aplique en cada arranque:

echo "@reboot sudo ethtool -C ${interface} rx-usecs 128 tx-usecs 128 >>/var/log/user-data.log 2>&1" >>/var/spool/cron/root
  • Sustituya interface por la interfaz de red (adaptador Ethernet) configurada para recibir datos. Por lo general, esto eth0 se debe a que es la interfaz de red predeterminada asignada a una EC2 instancia.

Tune el búfer Rx Rx: afecta a la red

Aumente el número de entradas de anillo en el búfer de anillo Rx para evitar que los paquetes se caigan o se sobrecarguen durante las conexiones interrumpidas. Añádelo al crontab para que quede correctamente configurado en cada arranque:

echo "@reboot sudo ethtool -G ${interface} rx 16384 >>/var/log/user-data.log 2>&1" >>/var/spool/cron/root
  • Sustituya interface por la interfaz de red (adaptador Ethernet) configurada para recibir datos. Normalmente, esto se debe a eth0 que es la interfaz de red predeterminada asignada a una EC2 instancia.

  • Si configura una instancia c6i.32xlarge, es necesario modificar el comando para configurar el búfer circular en 8192, en lugar de en 16384

Tune CPU C-State: impactos CPU

Configure el CPU estado C para evitar el ralentí, lo que puede provocar la pérdida de paquetes durante el inicio de un contacto. Requiere reinicio de instancias.

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

Los puertos de entrada de reserva afectan a la red

Reserve todos los puertos del rango de puertos de su dirección de entrada de AwsGroundStationAgentEndpoint para evitar conflictos con el uso del núcleo. Un conflicto en el uso de los puertos provocará un fallo en el contacto y en la entrega de datos.

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

Reboot

Cuando todas las afinaciones se hayan aplicado correctamente, reinicie la instancia para que se apliquen los cambios.

sudo reboot

En esta sección se determinan los valores de los parámetros recomendados para su uso en la sección de ajuste de las interrupciones del hardware y las colas de recepción: impactos y red. CPU

Familia Tipo de instancia ${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