报告有故障的主机

如果 A4X Max、A4X、A4、A3 Ultra、A3 Mega 和 A3 High(8 个 GPU)实例遇到您无法自行解决的硬件问题(例如集群内性能变慢或 GPU 温度持续偏高),您可以将该实例的主机报告为故障主机,以最大限度地减少工作负载的停机时间。

本文档介绍了如何在 Slurm 集群或基于计算实例的其他集群中报告故障主机并跟踪报告操作的状态。 如需报告 Google Kubernetes Engine (GKE) 集群中的故障主机,请参阅通过 GKE 报告故障主机。

限制

报告故障主机时,需要遵守以下限制:

  • 只有当在主机上运行的计算实例满足以下所有条件时,您才能报告主机故障:

    • 计算实例正在运行。

    • 计算实例使用 A4X Max、A4X、A4、A3 Ultra、A3 Mega 和 A3 High(8 个 GPU)机器类型。 通用 GPU 不支持报告故障主机;如果您遇到通用 GPU 实例的硬件问题,请改为与 Cloud Customer Care 联系。

    • 计算实例使用受预留约束的预配模型。

  • 如果您在 reportHostAsFaulty 操作正在进行时删除计算实例,则 reportHostAsFaulty 操作会失败。

  • Google Cloud 会尽力满足您报告主机故障的所有请求。不过,由于容量限制或速率限制,请求可能并不总是能够得到满足。

了解有故障的主机报告流程

为计算实例报告故障主机后,计算实例的重启时间会因计算实例所用预留中指定的预留运行模式而异。如需验证预留的预留运行模式,请查看预留中的 reservationOperationalMode 字段。 下表总结了两种可用预留操作模式(全容量模式和代管式模式)的故障主机流程。
全容量模式 (ALL_CAPACITY) 托管模式 (HIGHLY_AVAILABLE_CAPACITY)
支持的机器类型 A4X Max 和 A4X A4、A3 Ultra、A3 Mega 和 A3 High(8 个 GPU)
故障主机报告 API 速率限制 不适用任何速率限制。 API 调用可能会受到速率限制。
有故障的主机报告流程

当您为以全容量模式运行的计算实例报告故障主机时,会发生以下情况:

  1. 报告故障主机:在整个报告故障主机操作期间,计算实例将保持 RUNNING 状态,该操作通常需要 10 到 12 分钟才能完成。如需查看操作状态,请参阅本文档中的查看报告故障主机操作。
  2. 修复主机:在报告故障主机操作完成后,主机修复操作会在 1 分钟内开始。当主机修复操作开始时,计算实例会停止运行,其状态会根据为计算实例指定的自动重启 (automaticRestart) 设置而发生变化:

    • 如果为计算实例启用了自动重启,则计算实例的状态会更改为 REPAIRING。
    • 如果为计算实例停用了自动重启,则计算实例的状态会更改为 TERMINATED。

    修复故障主机可能需要 3 到 14 天,有时甚至更长时间。

  3. 重启计算实例:主机修复操作完成后,会发生以下情况之一:

    • 如果计算实例处于 REPAIRING 状态,并且在修复完成时资源可用,则 Compute Engine 会在修复后的主机上自动重启计算实例。
    • 否则,如果计算实例处于 TERMINATED 状态,或者 在修复完成时资源不可用,则计算实例 的状态将保持为 或更改为 TERMINATED。您必须在需要时手动重启计算实例。不过,如果您在重启计算实例时没有可用的资源(例如,如果其他计算实例已在使用修复后的主机),则重启可能会失败。

当您为以受管模式运行的计算实例报告故障主机时,会发生以下情况:

  1. 报告故障主机:在整个报告故障主机操作期间,计算实例将保持 RUNNING 状态,该操作通常需要 10 到 12 分钟才能完成。如需查看操作状态,请参阅本文档中的查看报告故障主机操作。
  2. 开始修复主机:在报告故障主机操作完成后,主机修复操作会在 1 分钟内开始。

    当修复主机操作开始时,计算实例的行为因机器系列而异:

    • A4 和 A3 Ultra:Compute Engine 会尝试将计算实例实时迁移到其他主机。如果您没有足够的预留容量,或者计算实例所在的可用区中没有可用容量,则计算实例会停止。
    • A3 Mega 和 A3 High:Compute Engine 会停止计算实例,并在正常运行的主机上重启该实例。

    如果计算实例停止运行,其状态会根据为计算实例指定的自动重启 (automaticRestart) 设置而发生变化:

    • 如果为计算实例启用了自动重启,则计算实例的状态会更改为 REPAIRING。除非您先停止计算实例,否则当其主机健康状况良好时,该实例会自动重启。
    • 如果为计算实例停用了自动重启,则计算实例的状态会更改为 TERMINATED。在计算实例的主机恢复正常后,您必须手动重启计算实例。

    修复原始故障主机可能需要 3 到 14 天,有时甚至更长时间。

  3. 迁移或重启计算实例:在主机修复操作开始后,Compute Engine 会尝试预留一个健康的主机来替换您在预留容量中报告的故障主机。如果 Compute Engine 找到替换主机,则会发生以下情况:

    • A4 和 A3 Ultra:如果计算实例在上一步中进行了实时迁移,则它会继续在替换主机上运行。如果计算实例已停止,则会在替换主机上重启。
    • A3 Mega 和 A3 High:计算实例会在替换主机上重启。

    如果 Compute Engine 无法立即找到替换主机,则计算实例会按如下方式重启:

    • 如果计算实例处于 REPAIRING 状态,并且在修复完成之前或完成时资源可用,则 Compute Engine 会在健康状况良好的主机上自动重启计算实例。
    • 否则,如果计算实例处于 TERMINATED 状态,或者 在修复完成之前或完成时资源不可用,则 计算实例的状态将保持为 或更改为 TERMINATED。您必须在需要时手动重启计算实例。

    与全容量模式不同,您无需等待原始故障主机修复即可恢复工作负载。

在报告故障主机之前排查问题

在报告故障主机之前,我们建议您先排查问题,以确认是硬件问题,而不是工作负载或集群配置问题。此方法有助于防止工作负载不必要的停机。

检查 GPU 内存或 Xid 错误

如果您在计算实例上发现 GPU 内存或 Xid 错误,请先验证手动恢复措施(例如重置 GPU 或重新启动计算实例)是否可以解决问题,然后再将主机报告为有故障。如需了解详情,请参阅查看 Xid 消息。

检查 GPU 性能问题和落后节点

如果您发现性能缓慢,请使用落后者检测服务来识别性能可能比集群中其他计算实例慢的计算实例。

监控 GPU 温度和热违规行为

如果您在日志中看到温度违规警告或 DCGM 报告了温度违规警告,请查看以下指南:

  • 警告与严重错误:DCGM 诊断可能会将温度违规报告为严重级别为 monitor 的警告。此严重级别表示 GPU 仍可执行工作负载,但我们建议您监控它们。

  • 假正例:NVIDIA 正在调查 GPU 上热违规报告频率增加的问题,这些 GPU 并未显示实际热问题的迹象。

  • 建议:在因温度警告而报告主机故障之前,请检查实际 GPU 温度是否超过安全阈值,以及工作负载的性能是否受到影响。如果温度保持稳定且性能正常,我们建议您监控 GPU,而不是将其报告为故障。

如需详细了解 GPU 问题排查,请参阅 Compute Engine 文档中的排查 GPU 虚拟机问题。

准备工作

选择标签页以了解您打算如何使用本页面上的示例:

控制台

当您使用 Google Cloud 控制台访问 Google Cloud 服务和 API 时,无需设置身份验证。

gcloud

在 Google Cloud 控制台中,激活 Cloud Shell。

激活 Cloud Shell

Cloud Shell 会话随即会在 Google Cloud 控制台的底部启动,并显示命令行提示符。Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境。该会话可能需要几秒钟时间来完成初始化。

REST

如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭证。

    安装 Google Cloud CLI。

    如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。

如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。

所需的角色

如需获得报告故障主机所需的权限,请让您的管理员为您授予以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。

这些预定义角色包含报告故障主机所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需报告故障主机,您必须具备以下权限:

  • 报告有故障的主机:针对计算实例或项目的 compute.instances.update 权限
  • 使用 Logging 查看操作列表:针对项目的 logging.logEntries.list 权限
  • 查看 Compute Engine 中的操作列表:针对项目的 compute.zoneOperations.list 权限
  • 查看 Compute Engine 中某项操作的详细信息:针对项目的 compute.zoneOperations.get 权限

您也可以使用自定义角色或其他预定义角色来获取这些权限。

报告有故障的主机

如需报告有故障的主机,请完成以下步骤:

  1. 查看计算实例运行的主机。您必须检查运行计算实例的主机的 ID。

    如需查看相关说明,请参阅查看计算实例的拓扑。

  2. 可选:备份本地 SSD 数据。当计算实例停止时,Compute Engine 会自动舍弃挂接到该计算实例的所有本地 SSD 磁盘的数据。Compute Engine 舍弃本地 SSD 数据后,您将无法恢复这些数据。

    如需了解如何保留本地 SSD 数据,请参阅本地 SSD 数据备份。

  3. 报告有故障的主机。主机修复操作会在报告故障主机操作完成后立即(一分钟内)开始。如果您在启动故障主机报告操作后发现计算实例无响应,建议您等待至少 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 缺陷、软件错误或内核问题等原因造成的。

      • 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 缺陷、软件错误或内核问题等原因造成的。

      • UNRECOVERABLE_GPU_ERROR:您发现了一个 Xid 对应的不可恢复的 GPU 错误。

      • BEHAVIOR_UNSPECIFIED:您不确定计算实例的具体问题。

    • DESCRIPTION_1 和 DESCRIPTION_2:您指定的每个主机问题的说明,例如 Xid 信息或可疑的性能问题。

查看报告有故障的主机操作

报告故障主机后,Compute Engine 会开始一系列操作,将该主机标记为故障并准备维修该主机。具体而言,在报告故障主机操作期间,会发生以下流程:

  1. 将主机标记为有故障。Compute Engine 会创建报告故障主机操作。报告故障主机操作随后会创建一系列子操作。这些子操作会将底层主机标记为有故障。

  2. 准备好主机以进行维修。所有子操作完成后,系统会开始报告故障主机操作。Compute Engine 会停止计算实例,并开始修复故障主机操作。根据预留的预留运行模式和主机可用性,Compute Engine 会让计算实例保持停止状态,或者尝试迁移并重启该实例。

  3. 报告完成情况并修复主机。Compute Engine 完成报告主机故障操作,并运行主机修复操作。

如需详细了解可用于跟踪修复、迁移和自动重启的其他操作,请参阅 Compute Engine 文档中的维护和重启行为以及监控和规划主机维护事件。

如需跟踪项目中报告故障主机 (compute.instances.reportHostAsFaulty) 操作的状态,请选择以下选项之一:

控制台(实例操作)

  1. 在 Google Cloud 控制台中,前往操作页面。

    转到运营

  2. 在显示的表格中,找到您报告的计算实例。

  3. 在包含计算实例的行中,您可以在状态列中查看“报告故障主机”操作的状态。操作完成后,该值为完成。

  4. 可选:如需验证 Compute Engine 是否已重启计算实例,请查看实例的详细信息。

控制台(计算实例日志)

  1. 在 Google Cloud 控制台中,前往 Logs Explorer 页面。

    转到日志浏览器

  2. 验证显示查询开关是否已设置为开启位置。

  3. 在查询编辑器中输入以下查询:

    resource.type="gce_instance" AND protoPayload.methodName=~"compute\.instances\.reportHostAsFaulty"
    
  4. 点击运行查询。查询结果窗格会显示查询结果。

gcloud

  1. 如需查看项目中的“报告故障主机”操作的状态,请使用 gcloud compute operations list 命令,并将 --filter 标志设置为 operationType:reportHostAsFaulty:

    gcloud compute operations list --filter="operationType:reportHostAsFaulty"
    
  2. 如果您想查看特定故障主机操作的详细信息,请使用 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:操作所在项目的 ID。

  • ZONE:操作所在的可用区。

后续步骤