ベストプラクティス - AWS Ground Station

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ベストプラクティス

Amazon EC2 のベストプラクティス

現在のEC2ベストプラクティスに従い、十分なデータストレージの可用性を確保します。

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

Linux スケジューラ

対応するプロセスが特定のコアに固定されていない場合、Linux スケジューラはUDPソケット上のパケットの順序を変更できます。UDP データを送受信するスレッドは、データ転送中に特定のコアに固定する必要があります。

AWS Ground Station マネージドプレフィックスリスト

ネットワークルールを指定して アンテナからの通信を許可する場合は、 com.amazonaws.global.groundstationAWSマネージドプレフィックスリストを使用することをお勧めします。AWS マネージドプレフィックスリストの詳細については、AWS「マネージドプレフィックスリストの使用」を参照してください。

単一のコンタクトの制限

AWS Ground Station エージェントは、コンタクトごとに複数のストリームをサポートしますが、一度に 1 つのコンタクトのみをサポートします。スケジュールの問題を防ぐため、複数のデータフローエンドポイントグループ間でインスタンスを共有しないでください。1 つのエージェント設定が複数の異なる DFEG に関連付けられている場合ARNs、登録に失敗します。

AWS Ground Station エージェントと一緒にサービスとプロセスを実行する

AWS Ground Station エージェントと同じEC2インスタンスでサービスとプロセスを起動する場合、 AWS Ground Station エージェントと Linux カーネルが使用 vCPUs していない状態にバインドすることが重要です。これにより、ボトルネックが発生し、問い合わせ中にデータが失われる可能性があるためです。この特定の へのバインドの概念 vCPUs は、アフィニティと呼ばれます。

回避すべきコア:

c5.24xlarge インスタンスの使用例

を指定した場合

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

と を実行しました

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

その後、次のコアは避けてください。

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

サービスの定義 (systemd)

新しく起動されたサービスは、interrupt_core_list前述の に自動的にアフィニタイズされます。起動したサービスのユースケースで追加のコアが必要な場合、または混雑の少ないコアが必要な場合は、このセクションに従ってください。

コマンドを使用して、サービスが現在設定されているアフィニティを確認します。

systemctl show --property CPUAffinity <service name>

のような空の値が表示される場合はCPUAffinity=、上記のコマンドのデフォルトコアを使用する可能性が高いことを意味します。 ...bin/set_irq_affinity.sh <using the cores here> ...

特定のアフィニティを上書きして設定するには、以下を実行してサービスファイルの場所を見つけます。

systemctl show -p FragmentPath <service name>

ファイル (vi、 などを使用) を開いて変更しnano、 を次のような[Service]セクションに配置しCPUAffinity=<core list>ます。

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

ファイルを保存し、サービスを再起動してアフィニティを適用します。

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

詳細については、Red Hat Enterprise Linux 8 - カーネルの管理、モニタリング、更新 - 第 27 章を参照してください。systemd CPU を使用したアフィニティとNUMAポリシーの設定

プロセスの定義 (スクリプト)

マシン上の任意のコアを使用できるデフォルトの Linux 動作のため、新しく起動したスクリプトとプロセスを手動でアフィニタイズすることを強くお勧めします。

実行中のプロセス (Python、bash スクリプトなど) のコア競合を回避するには、以下を使用してプロセスを起動します。

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

プロセスがすでに実行されている場合は、pidof、、 などのコマンドを使用してtop、特定のプロセスのプロセス ID (PID) psを見つけます。PID を使用すると、次の との現在のアフィニティを確認できます。

taskset -p <pid>

と は、次の方法で変更できます。

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

タスクセットの詳細については、「Tasket - Linux man page」を参照してください。