最佳實務 - AWS Ground Station

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

最佳實務

EC2 最佳做法

遵循目前的 EC2 最佳實務,並確保足夠的資料儲存可用性。

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

排程器

如果相應的進程沒有固定到特定的核心,Linux 調度程序可以重新排序 UDP 套接字上的數據包。發送或接收 UDP 數據的任何線程都應在數據傳輸期間將自己固定到特定的核心。

AWS Ground Station 管理前綴列表

建議您在指定網路規則以允許來自 Antenna 的通訊時,使用 com.amazonaws.global.groundstation AWS 管理的前置詞清單。如需有關 AWS 受管前置詞清單的詳細資訊,請參閱使用 AWS 受管前置詞清單。

單一連絡人限制

AWS Ground Station 代理程式支援每個聯絡人多個串流,但一次只支援單一聯絡人。為了避免排程問題,請勿在多個資料流程端點群組之間共用執行個體。如果單一代理程式組態與多個不同的 DFEG ARN 相關聯,則無法註冊。

與 AWS Ground Station 代理程式一起執行服務和程序

在與代理程式相同的 EC2 執行個體上啟動服務和程序時,請務必將它們繫結到 AWS Ground Station 代理程 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

親和服務 (系統)

新推出的服務將自動與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>

打開並修改文件(使用 vinano,等等),並將其放CPUAffinity=<core list>在以下[Service]部分中:

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

儲存檔案並重新啟動服務以套用相似性:

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

如需詳細資訊,請造訪 RHEL 8-管理、監控及更新核心-第 27 章。使用系統設定 CPU 相似性和 NUMA 原則

親和化過程(腳本)

強烈建議新啟動的腳本和進程手動親和化,因為默認的 Linux 行為將允許他們使用機器上的任何核心。

為了避免任何正在運行的進程(如 python,bash 腳本等)的核心衝突,請使用以下命令啟動該進程:

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

如果該進程已經在運行,請使用 pidoftop,或之類的命令ps來查找特定進程的進程 ID(PID)。使用 PID,您可以看到當前的親和力:

taskset -p <pid>

並可以使用以下命令修改它:

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

如需工作集的詳細資訊,請參閱工作集-Linux 線上手冊