

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

# 最佳實務
<a name="best-practices-v3"></a>

以下各節提供使用 的最佳實務 AWS ParallelCluster，其中包括網路效能和預算提醒。即使您遵循這些最佳實務仍遇到問題，請參閱 [AWS ParallelCluster 故障診斷](troubleshooting-v3.md) 以取得可能的解決方案。

## 最佳實務：前端節點執行個體類型選取
<a name="best-practices-head-node-instance-type"></a>

即使前端節點未執行任務，其函數及其大小對於叢集的整體效能至關重要。當您選擇要用於前端節點的執行個體類型時，請考慮下列特性：

**叢集大小：**前端節點會協調叢集的擴展邏輯，並負責將新節點連接至排程器。若要擴展和縮減具有大量節點的叢集，請為前端節點提供一些額外的運算容量。

**共用檔案系統：**當您使用共用檔案系統時，請選擇具有足夠網路頻寬和足夠 Amazon EBS 頻寬的執行個體類型來處理工作流程。確保前端節點能夠為叢集公開足夠的 NFS 伺服器目錄，並處理運算節點和前端節點之間需要共用的成品。

## 最佳實務：網路效能
<a name="best-practices-network-performance-v3"></a>

網路效能對於高效能運算 (HPC) 應用程式至關重要。如果沒有可靠的網路效能，這些應用程式將無法如預期般執行。若要最佳化網路效能，請考慮下列最佳實務。
+ **置放群組：**如果您使用的是 Slurm，請考慮設定每個Slurm佇列以使用叢集置放群組 。叢集的*置放群組*是單一可用區域內執行個體的邏輯分組。如需詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[置放群組](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html)。您可以在佇列的 [`Networking`](Scheduling-v3.md#Scheduling-v3-SlurmQueues-Networking)區段[`PlacementGroup`](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-Networking-PlacementGroup)中指定 ，每個運算資源都會指派給佇列的置放群組。在運算資源的 [`Networking`](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-ComputeResources-Networking)區段[`PlacementGroup`](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-ComputeResources-Networking-PlacementGroup)中指定 時，該特定運算資源會指派給該置放群組。運算資源置放群組規格會覆寫運算資源的佇列規格。如需詳細資訊，請參閱 [`SlurmQueues`](Scheduling-v3.md#Scheduling-v3-SlurmQueues) / [`Networking`](Scheduling-v3.md#Scheduling-v3-SlurmQueues-Networking) / [`PlacementGroup`](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-Networking-PlacementGroup)和 [`SlurmQueues`](Scheduling-v3.md#Scheduling-v3-SlurmQueues) / [`ComputeResources`](Scheduling-v3.md#Scheduling-v3-SlurmQueues-ComputeResources) / [`Networking`](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-ComputeResources-Networking) / [`PlacementGroup`](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-ComputeResources-Networking-PlacementGroup)。

  ```
  Networking:
    PlacementGroup:
      Enabled: true
      Id: your-placement-group-name
  ```

  或者，請 為您 AWS ParallelCluster 建立置放群組。

  ```
  Networking:
    PlacementGroup:
      Enabled: true
  ```

  從 3.3.0 AWS ParallelCluster 版開始，會修改置放群組的建立和管理。當您在佇列中指定要啟用的置放群組，而沒有 `name`或 `Id`時，每個運算資源都會指派自己的受管置放群組，而不是整個佇列的一個受管群組。這有助於減少容量不足的錯誤。如果您需要一個放置群組用於整個佇列，您可以使用具名放置群組。

  [`SlurmQueues`](Scheduling-v3.md#Scheduling-v3-SlurmQueues) / [`Networking`](Scheduling-v3.md#Scheduling-v3-SlurmQueues-Networking) / [`PlacementGroup`](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-Networking-PlacementGroup) / [`Name`](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-Networking-PlacementGroup-Name) 已新增為 [`SlurmQueues`](Scheduling-v3.md#Scheduling-v3-SlurmQueues) / [`Networking`](Scheduling-v3.md#Scheduling-v3-SlurmQueues-Networking) / [`PlacementGroup`](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-Networking-PlacementGroup) / 的偏好替代方案[`Id`](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-Networking-PlacementGroup-Id)。

  如需詳細資訊，請參閱[`Networking`](Scheduling-v3.md#Scheduling-v3-SlurmQueues-Networking)。
+ **增強型聯網：**考慮選擇支援增強型聯網的執行個體類型。此建議適用於所有[目前世代的執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#current-gen-instances)。如需詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的 [Linux 上的增強型聯網](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking.html)。
+ **Elastic Fabric Adapter：**若要支援高階可擴展的執行個體與執行個體通訊，請考慮為您的網路選擇 EFA 網路介面。EFA 的自訂作業系統 (OS) 繞過硬體可增強執行個體與隨需彈性和彈性的執行個體通訊 AWS 雲端。您可以設定每個Slurm佇列[`ComputeResource`](Scheduling-v3.md#Scheduling-v3-SlurmQueues-ComputeResources)使用 [`Efa`](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-ComputeResources-Efa)。如需搭配 使用 EFA 的詳細資訊 AWS ParallelCluster，請參閱 [Elastic Fabric Adapter](efa-v3.md)。

  ```
  ComputeResources:
    - Name: your-compute-resource-name
      Efa:
        Enabled: true
  ```

  如需 EFA 的詳細資訊，請參閱《*Amazon EC2 Linux 執行個體使用者指南*》中的 [Elastic Fabric Adapter](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html)。
+ **執行個體頻寬：**頻寬會隨執行個體大小而擴展。如需不同執行個體類型的資訊，請參閱《[Amazon EC2 使用者指南》中的 Amazon EBS 最佳化執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-optimized.html)*Amazon EC2 * [EBS 磁碟區類型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html)。

## 最佳實務：預算提醒
<a name="best-practices-budget-alerts-v3"></a>

若要管理 中的資源成本 AWS ParallelCluster，建議您使用 AWS Budgets 動作來建立預算。您也可以為選取的 AWS 資源建立定義的預算閾值警示。如需詳細資訊，請參閱*AWS Budgets 《 使用者指南*》中的[設定預算動作](https://docs.aws.amazon.com/cost-management/latest/userguide/budgets-controls.html)。同樣地，您也可以使用 Amazon CloudWatch 建立帳單警示。如需詳細資訊，請參閱[建立帳單警示來監控預估的 AWS 費用](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/monitor_estimated_charges_with_cloudwatch.html)。

## 最佳實務：將叢集移至新的 AWS ParallelCluster 次要或修補程式版本
<a name="best-practices-cluster-upgrades-v3"></a>

目前每個 AWS ParallelCluster 次要版本都與其 `pcluster` CLI 一起獨立。若要將叢集移至新的次要或修補程式版本，您必須使用新版本的 CLI 重新建立叢集。

若要將叢集移至新的次要或修補程式版本的程序最佳化，建議您執行下列動作：
+ 在叢集外部建立的外部磁碟區中儲存個人資料，例如 Amazon EFS 和 FSx for Lustre。透過這樣做，您可以在未來輕鬆地將資料從一個叢集移至另一個叢集。
+ 使用下列類型建立共用儲存系統。您可以使用 AWS CLI 或 建立這些系統 AWS 管理主控台。
  + [`SharedStorage`](SharedStorage-v3.md) / [`EbsSettings`](SharedStorage-v3.md#SharedStorage-v3-EbsSettings) / [`VolumeId`](SharedStorage-v3.md#yaml-SharedStorage-EbsSettings-VolumeId)
  + [`SharedStorage`](SharedStorage-v3.md) / [`EfsSettings`](SharedStorage-v3.md#SharedStorage-v3-EfsSettings) / [`FileSystemId`](SharedStorage-v3.md#yaml-SharedStorage-EfsSettings-FileSystemId)
  + [`SharedStorage`](SharedStorage-v3.md) / [`FsxLustreSettings`](SharedStorage-v3.md#SharedStorage-v3-FsxLustreSettings) / [`FileSystemId`](SharedStorage-v3.md#yaml-SharedStorage-FsxLustreSettings-FileSystemId)

  將叢集組態中的檔案系統或磁碟區定義為現有的檔案系統或磁碟區。如此一來，它們會在您刪除叢集時保留，並且可以連接到新的叢集。

  我們建議您使用 Amazon EFS 或 FSx for Lustre 檔案系統。這兩個系統可以同時連接到多個叢集。此外，您可以在刪除現有叢集之前，將這些系統連接到新的叢集。
+ 使用[自訂引導操作](custom-bootstrap-actions-v3.md)來自訂執行個體，而不是使用自訂 AMI。如果改為使用自訂 AMI，則需要為每個新版本版本刪除並重新建立該 AMI。
+ 建議您以下列順序套用上述建議：

  1. 更新現有的叢集組態，以使用現有的檔案系統定義。

  1. 驗證`pcluster`版本並視需要更新。

  1. 建立和測試新叢集。當您測試新叢集時，請檢查下列項目：
     + 請確定您的資料可在新叢集中使用。
     + 請確定您的應用程式可在新叢集中運作。

  1. 新叢集經過完整測試並運作，且不再需要現有的叢集後，請將其刪除。