本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
最佳實務
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.groundstation
AWS受管字首清單,以允許來自天線的通訊。如需受AWS管字首清單的詳細資訊,請參閱使用AWS受管字首清單。
單一聯絡限制
AWS Ground Station Agent 支援每個聯絡人的多個串流,但一次僅支援單一聯絡人。為了防止排程問題,請勿在多個資料流程端點群組之間共用執行個體。如果單一代理程式組態與多個不同的 DFEG 相關聯ARNs,將無法註冊。
與 AWS Ground Station 客服人員一起執行服務和程序
在與 AWS Ground Station 代理程式相同的EC2執行個體上啟動服務和程序時,請務必將其繫結為 vCPUs 不在 AWS Ground Station 代理程式和 Linux 核心使用中,因為這可能會導致瓶頸,甚至在聯絡期間遺失資料。這種結合至特定 的概念 vCPUs 稱為親和性。
要避免的核心:
-
agentCpuCores
從 客服人員組態檔案 -
來自 調校硬體中斷和接收佇列 - 影響CPU和網路 的
interrupt_core_list
。-
預設值可從 找到 附錄:中斷/RPS調校的建議參數
-
作為使用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>
開啟並修改檔案 (使用 nano
、 等)vi
,然後將 放入 [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 章。使用系統化 設定CPU親和力和NUMA政策
提升程序效率 (指令碼)
強烈建議新啟動的指令碼和程序手動關聯,因為預設 Linux 行為將允許它們在機器上使用任何核心。
為了避免任何執行中程序 (例如 python、Bash 指令碼等) 的核心衝突,請啟動程序:
taskset -c <core list> <command> # Example: taskset -c 8 ./bashScript.sh
如果程序已在執行中,請使用 pidof
、 top
或 等命令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 man 頁面