报告有故障的主机

如果您发现 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 会停止实例,执行必要的主机修复,然后在同一主机上重启实例。

本文档介绍了如何报告和修复属于 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 init

REST

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

    安装 Google Cloud CLI,然后 使用联合身份登录 gcloud CLI

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

所需的角色

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

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

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

所需权限

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

  • 如需创建故障主机报告: 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 的调用可能会受到速率限制。
有故障的主机报告流程

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

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

    当修复主机操作开始时,实例会停止运行,其状态会根据为实例指定的自动重启automaticRestart ( ) 设置而发生变化:

    • 如果为实例启用了自动重启,则实例的状态会更改为 REPAIRING。除非您在此之前停止实例,否则实例会在其主机运行正常后自动重启。
    • 如果为实例停用了自动重启,则实例的状态会更改为 TERMINATED。您需要在实例的主机 运行正常后手动重启实例。

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

  3. 重启实例:在主机修复操作完成(通常需要 3-14 天)后,会发生以下情况之一:

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

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

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

    当修复主机操作开始时,实例会停止运行,其状态会根据为实例指定的自动重启automaticRestart ( ) 设置而发生变化:

    • 如果为实例启用了自动重启,则实例的状态会更改为 REPAIRING。除非您在此之前停止实例,否则实例会在其主机运行正常后自动重启。
    • 如果为实例停用了自动重启,则实例的状态会更改为 TERMINATED。您需要在实例的主机 运行正常后手动重启实例。

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

  3. 迁移并重启实例:在主机修复操作开始 (通常需要 10-12 分钟)后,Compute Engine 会尝试预留一个额外的宿主机来 替换您在预留容量中报告的故障宿主机。如果 Compute Engine 找到健康的主机(成功替换故障主机或在预留容量中找到匹配的健康主机),则会将实例迁移到该主机。然后,系统会通过以下方式之一重启实例:

    • 如果实例处于 REPAIRING 状态,并且在修复完成之前或之时资源可用 ,则 Compute Engine 会在健康的主机上自动重启实例。
    • 否则,如果实例处于 TERMINATED 状态,或者在修复完成之前或之时资源 不可用,则实例状态将保持或 更改为 TERMINATED。您必须 在需要实例运行时 手动重启实例。不过,如果您在重启实例时资源不可用,则重启实例可能会失败;例如,如果其他实例已在使用修复后的主机,则可能会发生这种情况。

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

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

运行集群健康状况扫描器测试

使用 集群健康状况扫描器 (CHS) 工具运行主动健康检查,并诊断 GPU 集群中的问题。 具体而言,请运行以下测试:

检查 GPU 性能问题和滞后问题

如果您发现性能缓慢,请使用 滞后检测服务 来识别可能比集群中的其他虚拟机运行速度慢的虚拟机。

监控 GPU 温度和热违规情况

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

  • 警告与严重错误:当前 DCGM 诊断可能会将 热违规报告为严重级别为 monitor 的警告。这意味着 GPU 仍可执行工作负载,但应受到监控。
  • 误报:NVIDIA 正在调查 GPU 上热违规报告频率增加的情况,这些 GPU 没有显示实际热 问题的迹象。
  • 建议:在因热 警告而将主机报告为有故障之前,请检查实际 GPU 温度是否超过安全阈值,以及 工作负载的性能是否受到影响。如果温度保持稳定且性能正常,我们建议监控 GPU,而不是将其报告为有故障。

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

报告有故障的主机

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

  1. 查看运行计算实例的主机

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

  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 缺陷、软件 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_1FAULT_REASON_2:计算实例遇到的每个主机问题。您可以指定以下值:

      • PERFORMANCE:附加到计算实例的 GPU 与集群中的其他 GPU 相比存在性能问题;您在日志中未看到任何 XID 错误;Compute Engine 未检测到其他异常故障模式,例如静默数据损坏。

      • SILENT_DATA_CORRUPTION:您在计算实例中看到数据损坏,但计算实例仍在运行。静默数据损坏可能是由 vCPU 缺陷、软件 bug 或内核问题等原因造成的。

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

      • BEHAVIOR_UNSPECIFIED:您不确定计算实例的问题是什么。

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

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

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

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

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

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

如需跟踪项目中报告故障主机 (compute.instances.reportHostAsFaulty) 操作的状态,请选择以下选项之一。如需详细了解可用于跟踪修复、迁移和自动重启的其他操作,请参阅 Compute Engine 文档中的维护和重启行为 以及 监控和规划主机维护事件

控制台(实例操作)

  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:操作的名称。

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

后续步骤