如果您发现 A4X Max、A4X、A4、A3 Ultra、A3 Mega 和 A3 High(8 个 GPU)实例上存在无法自行解决的问题,则可以将相应主机报告为有故障。此类问题的一个示例是集群内的性能变慢或 GPU 温度持续偏高。
当您将主机报告为有故障时,Compute Engine 会通过运行主机维护来自动修复计算实例。
- 对于 A4 和 A3 Ultra 实例,如果您有未使用的预留容量或实例所在可用区中有可用容量,Compute Engine 会在维护开始时尝试将实例迁移到其他主机。将主机报告为有故障有助于最大限度地减少工作负载的停机时间。
- 对于 A3 Mega 和 A3 High 实例,Compute Engine 会停止实例,执行必要的主机修复,然后在同一主机上重启实例。
如果您在计算实例上发现 GPU 内存或 Xid 错误,并且想在报告主机故障之前验证手动恢复措施(例如重置 GPU 或重启实例)是否可以解决问题,请参阅查看 Xid 消息。
本文档介绍了如何报告和修复 Slurm 集群或其他基于计算实例的集群中的故障主机实例。如需报告 Google Kubernetes Engine (GKE) 集群中的故障主机,请参阅通过 GKE 报告故障主机。
限制
报告故障主机时,需要遵守以下限制:
只有当在主机上运行的计算实例满足以下所有条件时,您才能报告主机故障:
计算实例正在运行。
计算实例使用 A4X Max、A4X、A4、A3 Ultra、A3 Mega 和 A3 High(8 个 GPU)机器类型。
计算实例使用受预留约束的预配模型。
如果您在
reportHostAsFaulty操作正在进行时删除计算实例,则reportHostAsFaulty操作会失败。Google Cloud 会尽力满足您报告主机故障的所有请求。不过,由于容量限制或速率限制,请求可能并不总是能够得到满足。
准备工作
选择标签页以了解您打算如何使用本页面上的示例:
控制台
当您使用 Google Cloud 控制台访问 Google Cloud 服务和 API 时,无需设置身份验证。
gcloud
安装 Google Cloud CLI,然后 使用联合身份登录 gcloud CLI。 登录后,运行以下命令来初始化 Google Cloud CLI:
gcloud initREST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭证。
安装 Google Cloud CLI,然后 使用联合身份登录 gcloud CLI。
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
所需的角色
如需获得报告故障主机所需的权限,请让您的管理员为您授予以下 IAM 角色:
- 针对计算实例或项目的 Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1) -
使用 Cloud Logging 查看故障主机报告操作的状态:针对项目的 Logs Viewer (
roles/logging.viewer) 角色
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
这些预定义角色包含报告故障主机所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需报告故障主机,您必须具备以下权限:
-
创建有故障的主机报告:针对计算实例的
compute.instances.update权限 -
使用 Logging 查看操作列表:针对项目的
logging.operations.list权限 -
使用 Logging 查看操作的详细信息:针对项目的
logging.operations.get权限 -
查看 Compute Engine 中的操作列表:针对项目的
compute.zoneOperations.list权限 -
查看 Compute Engine 中某项操作的详细信息:针对项目的
compute.zoneOperations.describe权限
了解有故障的主机报告流程
为计算实例报告故障主机后,计算实例的重启时间会因计算实例使用的预留中指定的预留运行模式而异。如需验证预留的预留运行模式,请查看预留中的reservationOperationalMode 字段。
下表总结了两种可用的预留运行模式(全容量模式和受管模式)的故障主机进程:
全容量模式 (ALL_CAPACITY) |
托管模式 (HIGHLY_AVAILABLE_CAPACITY) |
|
|---|---|---|
| 支持的机器类型 | A4X Max 和 A4X | A4、A3 Ultra、A3 Mega 和 A3 High |
| 故障主机报告 API 速率限制 | 无速率限制。 | 对 API 的调用可能会受到速率限制。 |
| 有故障的主机报告流程 |
当您为以全容量模式运行的计算实例报告故障主机时,会发生以下情况:
|
当您为以受管模式运行的计算实例报告故障主机时,会发生以下情况:
|
在报告有故障的主机之前排查问题
在报告故障主机之前,建议您先排查问题,以确认是硬件问题,而不是工作负载或集群配置问题。此方法有助于防止工作负载出现不必要的停机时间。
检查 GPU 性能问题和落后者
如果您发现性能缓慢,请使用落后者检测服务来识别可能比集群中的其他虚拟机运行速度慢的虚拟机。
监控 GPU 温度和热违规情况
如果您在日志中看到或 DCGM 报告了热违规警告,请查看以下指南:
- 警告与严重错误:当前 DCGM 诊断可能会将热违规报告为严重程度为
monitor的警告。这意味着 GPU 仍可执行工作负载,但应受到监控。 - 误报:NVIDIA 正在调查 GPU 上热违规报告的频率为何有所增加,但这些 GPU 并未显示实际的热问题迹象。
- 建议:在因出现温度警告而将主机报告为有故障之前,请检查实际 GPU 温度是否超过安全阈值,以及工作负载的性能是否受到影响。如果温度保持稳定且性能正常,我们建议您监控 GPU,而不是将其报告为故障。
如需详细了解 GPU 问题排查,请参阅 Compute Engine 文档中的排查 GPU 虚拟机问题。
报告有故障的主机
如需报告有故障的主机,请完成以下步骤:
查看计算实例运行的主机。
如需查看相关说明,请参阅查看计算实例的拓扑。
可选:备份本地 SSD 数据。当实例停止时,Compute Engine 会自动舍弃挂接到该实例的任何本地 SSD 磁盘的数据。Compute Engine 舍弃本地 SSD 数据后,您将无法恢复这些数据。
如需了解如何保留本地 SSD 数据,请参阅本地 SSD 数据备份。
报告有故障的主机。如需报告有故障的主机,请选择以下选项之一。主机修复操作会在报告故障主机操作完成后立即(一分钟内)开始。如果您在启动故障主机报告操作后发现实例无响应,建议您等待至少 15 分钟,然后重启计算实例。
gcloud
如需报告有故障的主机,请使用以下
gcloud compute instances report-host-as-faulty命令:gcloud compute instances report-host-as-faulty INSTANCE_NAME \ --async \ --disruption-schedule=IMMEDIATE \ --fault-reasons=behavior=FAULT_REASON,description=DESCRIPTION \ --zone=ZONE替换以下内容:
INSTANCE_NAME:计算实例的名称。FAULT_REASON:计算实例遇到的主机问题列表,以英文逗号分隔,例如ISSUE_1,ISSUE_2。您可以指定以下值:PERFORMANCE:与集群中的其他 GPU 相比,附加到计算实例的 GPU 存在性能问题;您在日志中未看到任何 XID 错误;Compute Engine 未检测到其他异常故障模式,例如静默数据损坏。SILENT_DATA_CORRUPTION:您发现计算实例中的数据损坏,但计算实例仍在运行。静默数据损坏可能是由 vCPU 缺陷、软件 bug 或内核问题等原因造成的。UNRECOVERABLE_GPU_ERROR:您发现了一个 XID 对应的不可恢复的 GPU 错误。BEHAVIOR_UNSPECIFIED:您不确定计算实例的具体问题。
DESCRIPTION:影响计算实例的问题的说明,例如 XID 信息或疑似性能问题。ZONE:计算实例所在的可用区。
REST
如需报告故障主机,请向
instances.reportHostAsFaulty方法发出以下POST请求。举报有问题的宿主时,您可以一次指定多个问题原因。例如,如需指定两个故障原因,请发出如下请求:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/reportHostAsFaulty { "disruptionSchedule": "IMMEDIATE", "faultReasons": [ { "behavior": "FAULT_REASON_1", "description": "DESCRIPTION_1" }, { "behavior": "FAULT_REASON_2", "description": "DESCRIPTION_2" } ] }替换以下内容:
PROJECT_ID:计算实例所在项目的 ID。ZONE:计算实例所在的可用区。INSTANCE_NAME:计算实例的名称。FAULT_REASON_1和FAULT_REASON_2:计算实例遇到的每个主机问题。您可以指定以下值:PERFORMANCE:与集群中的其他 GPU 相比,附加到计算实例的 GPU 存在性能问题;您在日志中未看到任何 XID 错误;Compute Engine 未检测到其他异常故障模式,例如静默数据损坏。SILENT_DATA_CORRUPTION:您发现计算实例中的数据损坏,但计算实例仍在运行。静默数据损坏可能是由 vCPU 缺陷、软件 bug 或内核问题等原因造成的。UNRECOVERABLE_GPU_ERROR:您发现了一个 XID 对应的不可恢复的 GPU 错误。BEHAVIOR_UNSPECIFIED:您不确定计算实例的具体问题。
DESCRIPTION_1和DESCRIPTION_2:您指定的每个主机问题的说明,例如 XID 信息或可疑的性能问题。
查看报告有故障的主机操作
报告故障主机后,Compute Engine 会开始一系列操作,将该主机标记为故障并准备维修该主机。具体而言,在报告故障主机操作期间,会发生以下流程:
将主机标记为有故障。Compute Engine 会创建报告故障主机操作。报告故障主机操作随后会创建一系列子操作。这些子操作会将底层主机标记为有故障。
准备好主机以进行维修。所有子操作完成后,系统会开始报告故障主机操作。Compute Engine 会停止计算实例,并开始修复故障主机操作。根据计算实例所用预留中指定的预留运行模式,以及是否有健康的主机可用,Compute Engine 会让计算实例保持停止状态,或者尝试自动迁移并重启计算实例。
报告完成情况并修复主机。Compute Engine 完成报告主机故障操作,并运行主机修复操作。
如需跟踪项目中报告故障主机 (compute.instances.reportHostAsFaulty) 操作的状态,请选择以下选项之一。如需详细了解可用于跟踪修复、迁移和自动重启的其他操作,请参阅 Compute Engine 文档中的维护和重启行为以及监控和规划主机维护事件。
控制台(实例操作)
控制台(计算实例日志)
在 Google Cloud 控制台中,前往 Logs Explorer 页面。
验证显示查询开关是否已设置为开启位置。
在查询编辑器中输入以下查询:
resource.type="gce_instance" AND protoPayload.methodName=~"compute\.instances\.reportHostAsFaulty"点击运行查询。查询结果窗格会显示查询结果。
gcloud
如需查看项目中的“报告故障主机”操作的状态,请使用
gcloud compute operations list命令,并将--filter标志设置为operationType:reportHostAsFaulty:gcloud compute operations list --filter="operationType:reportHostAsFaulty"如果您想查看特定故障主机操作的详细信息,请使用
gcloud compute operations describe命令:gcloud compute operations describe OPERATION_NAME \ --zone="ZONE"替换以下内容:
OPERATION_NAME:操作的名称。ZONE:操作所在的可用区。
REST
如需查看项目中的“报告故障主机”操作的状态,请向 zoneOperations.list 方法发出 GET 请求。在请求网址中添加 filter 查询参数并设置为 items.operationType:reportHostAsFaulty。
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/operations&filter=items.operationType:reportHostAsFaulty
替换以下内容:
PROJECT_ID:操作的名称。ZONE:操作所在的可用区。
后续步骤
- 如果您在报告故障主机时遇到问题,请参阅排查故障主机 API 问题。