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:
-
agentCpuCoresde Archivo de configuración del agente -
interrupt_core_listde Ajuste las interrupciones del hardware y las colas de recepción: esto afecta a la CPU y a la red.-
Los valores predeterminados se pueden encontrar en Apéndice: Parámetros recomendados para el ajuste interrupt/RPS
-
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
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