

# 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.  [竞价型实例](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 Worker 节点 ](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 foundations (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) 