View a markdown version of this page

Prácticas recomendadas - 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.

Prácticas recomendadas

Mejores prácticas de Amazon EC2

Siga las prácticas recomendadas de EC2 y garantice una disponibilidad suficiente de almacenamiento de datos.

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-best-practices.html

Programador de Linux

El programador de Linux puede reordenar los paquetes en los sockets UDP si los procesos correspondientes no están anclados a un núcleo específico. Cualquier subproceso que envíe o reciba datos UDP debe fijarse a un núcleo específico durante la transmisión de datos.

AWS Ground Station lista de prefijos administrada

Se recomienda utilizar la lista de com.amazonaws.global.groundstation AWS-managed prefijos al especificar las reglas de red para permitir la comunicación desde la antena. Para obtener más información sobre las listas de prefijos administradas por AWS, consulte Trabajar con listas de prefijos administradas por AWS

Limitación de contacto único

El agente de AWS Ground Station admite varias transmisiones por contacto, pero solo admite un contacto a la vez. Para evitar problemas de programación, no comparta una instancia entre varios grupos de puntos de conexión de flujos de datos. Si la configuración de un solo agente está asociada a varios ARN de DFEG diferentes, no se registrará.

Ejecutar servicios y procesos junto con AWS Ground Station Agente

Al lanzar servicios y procesos en la misma instancia EC2 que el AWS Ground Station agente, es importante vincularlos a las CPU virtuales que el AWS Ground Station agente y el kernel de Linux no estén utilizando, ya que esto puede provocar cuellos de botella e incluso la pérdida de datos durante los contactos. Este concepto de enlace a vCPU específicas se conoce como afinidad.

Núcleos que se deben evitar:

Como ejemplo, usando una instancia c5.24xlarge

Si especificó

"agentCpuCores": [24,25,26,27,72,73,74,75]"

y corrió

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

luego evite los siguientes núcleos:

0,1,24,25,26,27,48,49,72,73,74,75

Servicios de afinización (systemd)

Los servicios recién lanzados se afinizarán automáticamente con los mencionados anteriormente. interrupt_core_list Si el caso práctico de los servicios lanzados requiere núcleos adicionales o necesita núcleos menos congestionados, siga esta sección.

Comprueba la afinidad con la que está configurado actualmente tu servicio con el comando:

systemctl show --property CPUAffinity <service name>

Si ves un valor vacíoCPUAffinity=, por ejemplo, significa que es probable que utilice los núcleos predeterminados del comando anterior ...bin/set_irq_affinity.sh <using the cores here> ...

Para anular y establecer una afinidad específica, busca la ubicación del archivo de servicio ejecutando:

systemctl show -p FragmentPath <service name>

Abra y modifique el archivo (usando vinano, etc.) y colóquelo CPUAffinity=<core list> en la [Service] sección de la siguiente manera:

[Unit] ... [Service] ... CPUAffinity=2,3 [Install] ...

Guarde el archivo y reinicie el servicio para aplicar la afinidad con:

systemctl daemon-reload systemctl restart <service name> # Additionally confirm by re-running systemctl show --property CPUAffinity <service name>

Para obtener más información, visite: Red Hat Enterprise Linux 8: Administración, supervisión y actualización del kernel, capítulo 27. Configuración de políticas de afinidad de CPU y NUMA mediante systemd.

Procesos de afinización (scripts)

Se recomienda encarecidamente que los scripts y procesos recién lanzados se afinicen manualmente, ya que el comportamiento predeterminado de Linux les permitirá utilizar cualquier núcleo de la máquina.

Para evitar conflictos entre los núcleos de cualquier proceso en ejecución (como los scripts de Python, bash, etc.), inicie el proceso con:

taskset -c <core list> <command> # Example: taskset -c 8 ./bashScript.sh

Si el proceso ya se está ejecutando, utilice comandos como pidoftop, o ps para buscar el ID de proceso (PID) del proceso específico. Con el PID, puedes ver la afinidad actual con:

taskset -p <pid>

y puede modificarlo con:

taskset -p <core mask> <pid> # Example: taskset -p c 32392 (which sets it to cores 0xc -> 0b1100 -> cores 2,3)

Para obtener más información sobre el conjunto de tareas, consulte la página de manual de taskset - Linux