

# PERF02-BP02 了解可用的運算組態選項
<a name="perf_select_compute_config_options"></a>

 每個運算解決方案都有選項和組態，可供您支援工作負載特性。了解各種選項如何與您的工作負載互補，以及哪種組態選項最適合您的應用程式。這些選項的範例包括執行個體系列、大小、功能 (GPU、I/O)、爆量、逾時、函數大小、容器執行個體，以及並行。 

 **預期成果：** 包括 CPU、記憶體、網路輸送量、GPU、IOPS、流量模式和資料存取模式的工作負載特性會加以記錄，並用來設定運算解決方案以符合工作負載特性。其中每一個指標以及工作負載特有的自訂指標都會加以記錄、監控，然後用來優化運算組態以最好地符合要求。 

 **常用的反模式：** 
+  使用正用於內部部署的同一運算解決方案。 
+  未審查運算選項或執行個體系統以符合工作負載特性。 
+  使運算變得更大以確保爆量功能。 
+  您針對相同的工作負載使用多個運算管理平台。 

** 建立此最佳實務的優勢：** 熟悉 AWS 運算方案，才能為每個工作負載確定合適的解決方案。為工作負載選取運算方案之後，您可以快速試驗這些運算方案，以判斷其符合工作負載需求的程度。為符合工作負載特性而優化的運算解決方案將提高效能、降低成本並提升可靠性。

 **若未建立此最佳實務，暴露的風險等級：** 高 

## 實作指引
<a name="implementation-guidance"></a>

 如果您的工作負載已使用相同的運算選項超過四週，並且您預計特性未來仍將保持不變，您可以使用 [AWS Compute Optimizer](https://aws.amazon.com/compute-optimizer/) 根據運算特性提供一個建議。如果 AWS Compute Optimizer 不是選項，起因於缺少指標、 [非支援的執行個體類型](https://docs.aws.amazon.com/compute-optimizer/latest/ug/requirements.html#requirements-ec2-instances) 或特性中可預測的變更，則您必須根據負載測試和試驗預測指標。  

 **實作步驟：** 

1.  您是否正在具有 EC2 啟動類型的 EC2 執行個體或容器上執行？ 

   1.  您的工作負載是否可以使用 GPU 提升效能？ 

      1.  [加速運算](https://aws.amazon.com/ec2/instance-types/?trk=36c6da98-7b20-48fa-8225-4784bced9843&sc_channel=ps&sc_campaign=acquisition&sc_medium=ACQ-P|PS-GO|Brand|Desktop|SU|Compute|EC2|US|EN|Text&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types&ef_id=CjwKCAjwiuuRBhBvEiwAFXKaNNRXM5FrnFg5H8RGQ4bQKuUuK1rYWmU2iH-5H3VZPqEheB-pEm-GNBoCdD0QAvD_BwE:G:s&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types#Accelerated_Computing) 執行個體是 GPU 型執行個體，可為機器學習培訓、推斷和高效能運算提供最高效能。 

   1.  您的工作負載是否執行機器學習推斷應用程式？ 

      1.  [AWS Inferentia (Inf1)](https://aws.amazon.com/ec2/instance-types/inf1/) — Inf1 執行個體專為支援機器學習推斷應用程式所建置。客戶可使用 Inf1，執行大型規模的機器學習推斷應用程式，例如影像辨識、語音辨識、自然語言處理、個人化以及詐騙偵測。您可以在 TensorFlow、PyTorch 或 MXNet 等其中一個常用機器學習架構中建立模型，並使用 GPU 執行個體來訓練模型。將機器學習模型訓練到符合需求之後，您可以使用 [AWS Neuron](https://aws.amazon.com/machine-learning/neuron/)在 Inf1 執行個體上部署模型，AWS Neuron 是一種專業的軟體開發套件 (SDK)，其中包含編譯器、執行時間和分析工具，可將 Inferentia 晶片的機器學習推斷效能優化。 

   1.  您的工作負載是否與低階硬體整合以改進效能？  

      1.  [可現場程式化閘道陣列 (FPGA)](https://aws.amazon.com/ec2/instance-types/f1/) — 使用 FPGA，您可以為要求最高的工作負載自訂硬體加速執行，進而優化您的工作負載。您可以利用支援的通用程式設計語言 (例如 C 或 Go)，或以硬體為導向的語言 (例如 Verilog 或 VHDL) 來定義演算法。 

   1.  您是否有至少四週的指標，並且可以預測您的流量模式和指標在未來仍大致相同？ 

      1.  使用 [Compute Optimizer](https://aws.amazon.com/compute-optimizer/) 取得哪個運算組態最符合運算特性的機器學習建議。 

   1.  您的工作負載效能是否受到 CPU 指標限制？  

      1.  [運算優化](https://aws.amazon.com/ec2/instance-types/?trk=36c6da98-7b20-48fa-8225-4784bced9843&sc_channel=ps&sc_campaign=acquisition&sc_medium=ACQ-P|PS-GO|Brand|Desktop|SU|Compute|EC2|US|EN|Text&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types&ef_id=CjwKCAjwiuuRBhBvEiwAFXKaNNRXM5FrnFg5H8RGQ4bQKuUuK1rYWmU2iH-5H3VZPqEheB-pEm-GNBoCdD0QAvD_BwE:G:s&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types#Compute_Optimized) 執行個體非常適合於需要高效處理器的工作負載。  

   1.  您的工作負載效能是否受到記憶體指標限制？  

      1.  [記憶體優化](https://aws.amazon.com/ec2/instance-types/?trk=36c6da98-7b20-48fa-8225-4784bced9843&sc_channel=ps&sc_campaign=acquisition&sc_medium=ACQ-P|PS-GO|Brand|Desktop|SU|Compute|EC2|US|EN|Text&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types&ef_id=CjwKCAjwiuuRBhBvEiwAFXKaNNRXM5FrnFg5H8RGQ4bQKuUuK1rYWmU2iH-5H3VZPqEheB-pEm-GNBoCdD0QAvD_BwE:G:s&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types#Memory_Optimized) 執行個體會提供大量記憶體，以支援記憶體密集工作負載。 

   1.  您的工作負載效能是否受到 IOPS 限制？ 

      1.  [儲存優化](https://aws.amazon.com/ec2/instance-types/?trk=36c6da98-7b20-48fa-8225-4784bced9843&sc_channel=ps&sc_campaign=acquisition&sc_medium=ACQ-P|PS-GO|Brand|Desktop|SU|Compute|EC2|US|EN|Text&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types&ef_id=CjwKCAjwiuuRBhBvEiwAFXKaNNRXM5FrnFg5H8RGQ4bQKuUuK1rYWmU2iH-5H3VZPqEheB-pEm-GNBoCdD0QAvD_BwE:G:s&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types#Storage_Optimized) 執行個體專為需要對本機儲存進行高循序讀寫存取 (IOPS) 的工作負載而設計。 

   1.  您的工作負載特性是否代表所有指標之間的平衡需求？ 

      1.  您的工作負載 CPU 是否需要爆量，以處理流量中的峰值？ 

         1.  [高載效能](https://aws.amazon.com/ec2/instance-types/?trk=36c6da98-7b20-48fa-8225-4784bced9843&sc_channel=ps&sc_campaign=acquisition&sc_medium=ACQ-P|PS-GO|Brand|Desktop|SU|Compute|EC2|US|EN|Text&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types&ef_id=CjwKCAjwiuuRBhBvEiwAFXKaNNRXM5FrnFg5H8RGQ4bQKuUuK1rYWmU2iH-5H3VZPqEheB-pEm-GNBoCdD0QAvD_BwE:G:s&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types#Instance_Features) 執行個體類似於運算優化執行個體，不同之處在於它們可讓您突破運算優化執行個體中所識別的固定 CPU 基準。 

      1.  [一般用途](https://aws.amazon.com/ec2/instance-types/?trk=36c6da98-7b20-48fa-8225-4784bced9843&sc_channel=ps&sc_campaign=acquisition&sc_medium=ACQ-P|PS-GO|Brand|Desktop|SU|Compute|EC2|US|EN|Text&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types&ef_id=CjwKCAjwiuuRBhBvEiwAFXKaNNRXM5FrnFg5H8RGQ4bQKuUuK1rYWmU2iH-5H3VZPqEheB-pEm-GNBoCdD0QAvD_BwE:G:s&s_kwcid=AL!4422!3!536392622533!e!!g!!ec2%20instance%20types#General_Purpose) 執行個體提供所有特性的平衡，以支援各種工作負載。 

   1.  您的運算執行個體是否正在 Linux 上執行，並受到網路介面卡上的網路輸送量限制？ 

      1.  檢閱 [效能問題 5、最佳實務 2：評估可用的聯網功能](https://docs.aws.amazon.com/wellarchitected/latest/performance-efficiency-pillar/network-architecture-selection.html) 來找出正確的執行個體類型和系統，以符合您的効能需求。 

   1.  在您承諾使用一年的特定可用區域中，您的工作負載是否需要一致且可預測的執行個體？  

      1.  [預留執行個體](https://aws.amazon.com/ec2/pricing/reserved-instances/) 確認特定可用區域中的容量保留。預留執行個體非常適合於特定可用區域中所需的運算能力。  

   1.  您的工作負載是否具有需要專用硬體的授權？ 

      1.  [專用主機](https://aws.amazon.com/ec2/dedicated-hosts/) 支援現有的軟體授權，並協助您滿足合規需求。 

   1.  您的運算解決方案是否會爆量且需要同步處理？ 

      1.  [隨需執行個體](https://aws.amazon.com/ec2/pricing/on-demand/) 可讓您按小時或秒使用運算容量，無需長期承諾。這些執行個體適合於超過效能基準需求的爆量。 

   1.  您的運算解決方案為無狀態、容錯和非同步嗎？  

      1.  [Spot 執行個體](https://aws.amazon.com/ec2/spot/) 可讓您針對無狀態、容錯工作負載利用未用的執行個體容量。  

1.  您是否正在將容器執行於 [Fargate](https://aws.amazon.com/fargate/)？ 

   1.  您的任務效能是否受到記憶體或 CPU 限制？ 

      1.  使用 [任務大小](https://docs.aws.amazon.com/AmazonECS/latest/bestpracticesguide/capacity-tasksize.html) 調整您的記憶體或 CPU。 

   1.  您的效能是否正受到流量模式爆量限制？ 

      1.  使用 [Auto Scaling](https://docs.aws.amazon.com/AmazonECS/latest/bestpracticesguide/capacity-autoscaling.html) 組態來比對您的流量模式。 

1.  您的運算解決方案是否位於 [Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-features.html)？ 

   1.  您是否有至少四週的指標，並且可以預測您的流量模式和指標在未來仍大致相同？ 

      1.  使用 [Compute Optimizer](https://aws.amazon.com/compute-optimizer/) 取得哪個運算組態最符合運算特性的機器學習建議。 

   1.  您沒有足夠的指標來使用 AWS Compute Optimizer 嗎？ 

      1.  如果您沒有可供 Compute Optimizer 使用的指標，請使用 [AWS Lambda Power Tuning](https://docs.aws.amazon.com/lambda/latest/operatorguide/profile-functions.html) 協助選取最佳組態。 

   1.  您的函數效能是否受到記憶體或 CPU 限制？ 

      1.  設定您的 [Lambda 記憶體](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html#configuration-memory-console) 來符合您的效能需求指標。 

   1.  您的函數在執行時是否逾時？ 

      1.  變更 [逾時設定](https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html) 

   1.  您的函數效能是否受到活動和並行爆量限制？  

      1.  設定 [並行設定](https://docs.aws.amazon.com/lambda/latest/dg/configuration-concurrency.html) 來符合您的效能要求。 

   1.  您的函數是否以非同步方式執行，並在重試時失敗？ 

      1.  在 [非同步組態](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html) 設定中設定最長事件保留期限和最多重試次數限制。 

## 實作計劃的工作量： 
<a name="level-of-effort-for-the-implementation-plan-to-establish-this-best-practice-you-must-be-aware-of-your-current-compute-characteristics-and-metrics.-gathering-those-metrics-establishing-a-baseline-and-then-using-those-metrics-to-identify-the-ideal-compute-option-is-a-low-to-moderate-level-of-effort.-this-is-best-validated-by-load-tests-and-experimentation."></a>

若要建立此最佳實務，您必須注意目前運算特性和指標。收集這些指標、建立基準，然後使用這些指標來識別理想的運算選項為 *低* 至 *中等* 工作量。這最好由負載測試和試驗進行驗證。 

## 資源
<a name="resources"></a>

 **相關文件：** 
+  [使用 AWS 進行雲端運算 ](https://aws.amazon.com/products/compute/?ref=wellarchitected) 
+  [AWS Compute Optimizer](https://aws.amazon.com/compute-optimizer/) 
+  [EC2 執行個體類型 ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html?ref=wellarchitected) 
+  [EC2 執行個體的處理器狀態控制 ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/processor_state_control.html?ref=wellarchitected) 
+  [EKS 容器：EKS 工作節點 ](https://docs.aws.amazon.com/eks/latest/userguide/worker.html?ref=wellarchitected) 
+  [Amazon ECS 容器：Amazon ECS 容器執行個體 ](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html?ref=wellarchitected) 
+  [函數：Lambda 函數組態](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html?ref=wellarchitected#function-configuration) 

 **相關影片：** 
+  [Amazon EC2 基礎 (CMP211-R2) ](https://www.youtube.com/watch?v=kMMybKqC2Y0&ref=wellarchitected) 
+  [支援下一代 Amazon EC2：深入探討 Nitro 系統 ](https://www.youtube.com/watch?v=rUY-00yFlE4&ref=wellarchitected) 
+  [優化 AWS 運算的效能和成本 (CMP323-R1) ](https://www.youtube.com/watch?v=zt6jYJLK8sg&ref=wellarchitected) 

 **相關範例：** 
+  [在 Compute Optimizer 和記憶體使用率已啟用的情況下適當調整大小](https://www.wellarchitectedlabs.com/cost/200_labs/200_aws_resource_optimization/5_ec2_computer_opt/) 
+  [AWS Compute Optimizer 示範程式碼](https://github.com/awslabs/ec2-spot-labs/tree/master/aws-compute-optimizer) 