优化计算性能

Last reviewed 2023-08-05 UTC

Google Cloud 架构框架中的这篇文档提供了建议,可帮助您优化 Compute Engine、Google Kubernetes Engine (GKE) 和无服务器资源的性能。

Compute Engine

本部分提供的指导可帮助您优化 Compute Engine 资源的性能。

自动扩缩资源

托管式实例组 (MIG) 可让您高效地扩缩部署在 Compute Engine 虚拟机上的无状态应用。自动扩缩可帮助您的应用在负载增加时继续提供可预测的性能。在 MIG 中,一组 Compute Engine 虚拟机会根据您定义的模板启动。在实例组配置中,您可以配置自动扩缩政策,以指定自动扩缩器用于扩缩实例组的一个或多个信号。自动扩缩信号可以基于时间表(如开始时间或时长)或目标指标(如平均 CPU 利用率)。如需了解详情,请参阅自动扩缩实例组

停用 SMT

您分配给 Compute Engine 虚拟机的每个虚拟 CPU (vCPU) 都作为单个硬件多线程实现。默认情况下,两个 vCPU 共用一个物理 CPU 核心。此架构称为同时多线程 (SMT)

对于高度并行或执行浮点计算的工作负载(例如转码、蒙特卡罗模拟、基因序列分析和财务风险建模),您可以通过停用 SMT 来提高性能。如需了解详情,请参阅设置每个核心的线程数

使用 GPU

对于机器学习和可视化等工作负载,您可以向虚拟机添加图形处理器 (GPU)。Compute Engine 以直通模式提供 NVIDIA GPU,让您的虚拟机可以直接控制 GPU 和相关内存。对于图形密集型工作负载(例如 3D 可视化),您可以使用 NVIDIA RTX 虚拟工作站。部署工作负载后,监控 GPU 使用情况并查看优化 GPU 性能的选项。

使用计算优化机器类型

游戏、媒体转码和高性能计算 (HPC) 等工作负载要求每个 CPU 核心始终保持高性能。Google 建议您为运行此类工作负载的虚拟机使用计算优化机器类型。计算优化虚拟机基于使用非统一内存访问 (NUMA) 等功能的架构构建,以实现最佳可靠的性能。

紧密耦合的 HPC 工作负载具有一组独特要求,可实现性能峰值。如需了解详情,请参阅以下文档:

选择适当的存储空间

Google Cloud 为 Compute Engine 虚拟机提供了各种存储方案:永久性磁盘、本地固态硬盘 (SSD) 磁盘、Filestore 和 Cloud Storage。如需了解优化每种存储选项的性能的设计建议和最佳实践,请参阅优化存储性能

Google Kubernetes Engine

本部分提供的指导可帮助您优化 Google Kubernetes Engine (GKE) 资源性能。

自动扩缩资源

您可以使用集群自动扩缩器功能自动调整 GKE 集群中节点池的大小以与当前负载相匹配。自动扩缩可帮助您的应用在负载增加时继续提供可预测的性能。集群自动扩缩器会根据在节点上运行的 Pod 的资源请求(而不是实际资源利用率)自动调整节点池的大小。使用自动扩缩时,需要在性能和费用之间进行权衡。查看高效配置集群自动扩缩的最佳实践。

使用 C2D 虚拟机

您可以使用 C2D 机器类型来提高计算密集型容器化工作负载的性能。您可以在节点池中选择 C2D 机器类型,将 C2D 节点添加到 GKE 集群。

停用 SMT

同时多线程 (SMT) 可以显著提高一般计算任务和需要高 I/O 的工作负载的应用吞吐量。但对于两个虚拟核心均受计算限制的工作负载而言,SMT 可能会导致性能不一致。为了获得更好且更具预测性的性能,您可以将每个核心的 vCPU 数量设置为 1,从而为 GKE 节点停用 SMT

使用 GPU

对于图片密集型工作负载(例如图片识别和视频转码),您可以创建使用 GPU 的节点池来加快性能。如需了解详情,请参阅运行 GPU

使用容器原生负载均衡

利用容器原生负载均衡,负载均衡器能够直接将流量均匀分发给 Pod。此方法可提供更好的网络性能,可让您更好地了解负载均衡器和 Pod 之间的网络延迟时间。由于具备这些优势,因此容器原生负载均衡是通过 Ingress 实现负载均衡的建议解决方案。

定义紧凑布置政策

紧密耦合的批处理工作负载在 GKE 节点池中的节点之间需要低网络延迟。您可以将此类工作负载部署到单区域节点池,并通过定义紧凑布置政策来确保节点在物理上彼此靠近。如需了解详情,请参阅为 GKE 节点定义紧凑放置

无服务器计算服务

本部分提供的指导可帮助您优化 Google Cloud 中无服务器计算服务的性能:Cloud RunCloud Functions。这些服务提供的底层基础架构会自动处理扩缩的自动扩缩功能。通过使用这些无服务器服务,您可以减少扩缩微服务和功能的工作,并专注于优化应用级层的性能。

如需了解详情,请参阅以下文档:

后续步骤

查看优化存储、网络、数据库和分析资源性能的最佳实践: